{
  "contractName": "VerificationCoupon",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bundleId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "burnerDid",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "expirationTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "burnTime",
          "type": "uint256"
        }
      ],
      "name": "BurnCoupon",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bundleId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "expirationTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "ownerDid",
          "type": "string"
        }
      ],
      "name": "MintCouponBundle",
      "type": "event"
    },
    {
      "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"
    },
    {
      "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": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "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": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "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": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "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"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "baseTokenURI",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_permissions",
          "type": "address"
        }
      ],
      "name": "setPermissionsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVNF",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "isExpired",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "getTokenId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_expirationTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "ownerDid",
          "type": "string"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "burnerDid",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_getTokenName",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bundleId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"burnerDid\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnTime\",\"type\":\"uint256\"}],\"name\":\"BurnCoupon\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bundleId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ownerDid\",\"type\":\"string\"}],\"name\":\"MintCouponBundle\",\"type\":\"event\"},{\"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\"},{\"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\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"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\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_getTokenName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"burnerDid\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVNF\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"isExpired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ownerDid\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permissions\",\"type\":\"address\"}],\"name\":\"setPermissionsAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"{ERC721} token, including:  - ability for holders to burn (destroy) their tokens  - a minter role that allows for token minting (creation)  - a pauser role that allows to stop all token transfers  - token ID and URI autogeneration This contract uses {AccessControl} to lock permissioned functions using the different roles - head to its documentation for details. The account that deploys the contract will be granted the minter and pauser roles, as well as the default admin role, which will let it grant both minter and pauser roles to other accounts.\",\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/VerificationCoupon.sol\":\"VerificationCoupon\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x7d24c901e098a04fa7f388c9ff1890bb522307272a2fee8030ee15a8d907096f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://581f4c4b9af18b5a8e811a0a45d38a125cad4627d67f7a605626ff3a2b26eb70\",\"dweb:/ipfs/QmWZwM8HEbPPjf5MaaRnELgW8JtDdWNu7oBXWCtLCERQyz\"]},\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xc8710577334e8d0799ae2b2a731b1924a7bddd64319da9787ddd2dc69bdd1ce5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b83b7afa4d2372da3ba5402fb10860a105c35d79812c60dc61007be2afc17618\",\"dweb:/ipfs/QmYX9xPmbNVSKXrepKiUZiG5oL3SdzFp9a4kqspxX1sEUx\"]},\"@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x7acbc538aad6eb4614e26612a8c5c0149bb8808db95e2638d245a8365f63e572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea07bdbf13b16d19ccf8a8f1a361c80bbfb6073e8b1d079b72f7a5f09dc642cd\",\"dweb:/ipfs/QmQh5YhCySYR5RSAEFTt3NaDhq6MCxvSTdFh56874JPxbY\"]},\"@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xed79d68fc69539630aab88fc02b0be8ebfc97cbbda9a4ffabcf7551d7b04fc0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7881d76c688df27a39f5b1fcb6c197ebb0a1ecdb9c2efb4fb9690e4237f082f1\",\"dweb:/ipfs/QmXfQ1RJvixiBmQs16s2hUR4TbwksSk1Sy6bQrhU4QWEM5\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912\",\"dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2\"]},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b13befeb3413749292f9fb229de1c7a509a5ce2c8047d9094fc004ca9d3af89\",\"dweb:/ipfs/QmRzJ2hZSwRtMejHUZAYTPRKgZsnfb112Fno9Jf3EiDfwA\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol\":{\"keccak256\":\"0x1c65595a26548a1b2263315b08a56334a2d7087319814437559c3c96025e939f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://876afb75e0d5615b07f70a0bc69ae7f098df8ef058251b5934b9d05c9c7e0d1f\",\"dweb:/ipfs/Qmay4sdoBJQtP2cC1EDyQ8GzNPJZzo3v5soRRy8rDNLfBJ\"]},\"@verii/permissions-contract/contracts/Permissions.sol\":{\"keccak256\":\"0xfeb567393dc20917e657c98e7eab14b8b4bde172e097c9da99d9d504f406218b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d2bb20d59a6ac1b5e56afcec46a9ae3bb2e77afd20cce0d21af2b1f92eb2416\",\"dweb:/ipfs/QmXT8TNUmSk912otnG9hme8df8ZPZBfY1nq9BWjFtfZKpY\"]},\"project:/contracts/VerificationCoupon.sol\":{\"keccak256\":\"0xbad01233ccb56a87e10ed025db456122f3f6dccf1a4be4eb64fa6980e5919960\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c52c3cab1de5ec62f3322e6f2c5928ef88523c0d159762e28fd5b8209c805da3\",\"dweb:/ipfs/QmP3wBTVVSriUSJ68jkYjtCgFMKDWB3JVAxEiDTvPowxDd\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50612ed5806100206000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c80636d013618116100de578063d539139311610097578063e985e9c511610071578063e985e9c514610375578063f1537686146103b1578063f242432a146103c4578063fb5e3c25146103d757600080fd5b8063d539139314610318578063d547741f1461033f578063d9548e531461035257600080fd5b80636d013618146102b15780639010d07c146102c457806391d14854146102d7578063a217fddf146102ea578063a22cb465146102f2578063ca15c8731461030557600080fd5b80632f2ff15d116101305780632f2ff15d1461022057806334ca4b641461023357806336568abe14610258578063428d69101461026b5780634cd88b761461027e5780634e1273f41461029157600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c0578063248a9ca3146101e057806324ff40b7146102035780632eb2c2d61461020b575b600080fd5b61018a61018536600461255c565b6103ea565b6040519081526020015b60405180910390f35b6101b06101ab366004612725565b610485565b6040519015158152602001610194565b6101d36101ce3660046126c8565b610490565b6040516101949190612add565b61018a6101ee3660046126c8565b60009081526065602052604090206001015490565b6101d3610524565b61021e61021936600461241e565b6105b6565b005b61021e61022e3660046126e0565b610602565b60fb546001600160a01b03165b6040516001600160a01b039091168152602001610194565b61021e6102663660046126e0565b61062c565b61021e6102793660046127b4565b6106aa565b61021e61028c36600461275d565b61092a565b6102a461029f3660046125df565b610a98565b6040516101949190612a9c565b61021e6102bf366004612587565b610bfa565b6102406102d2366004612704565b610d88565b6101b06102e53660046126e0565b610da7565b61018a600081565b61021e61030036600461252f565b610dd2565b61018a6103133660046126c8565b610ddd565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61021e61034d3660046126e0565b610df4565b6101b06103603660046126c8565b600090815260fc602052604090205442101590565b6101b06103833660046123e6565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205460ff1690565b61018a6103bf3660046123ae565b610e19565b61021e6103d23660046124c8565b610fe0565b61021e6103e53660046123ae565b611025565b60006001600160a01b03831661045a5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b50600081815260c9602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047f8261109a565b606060cb805461049f90612d15565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90612d15565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509050919050565b606060ff805461053390612d15565b80601f016020809104026020016040519081016040528092919081815260200182805461055f90612d15565b80156105ac5780601f10610581576101008083540402835291602001916105ac565b820191906000526020600020905b81548152906001019060200180831161058f57829003601f168201915b5050505050905090565b6001600160a01b0385163314806105d257506105d28533610383565b6105ee5760405162461bcd60e51b815260040161045190612b38565b6105fb85858585856110da565b5050505050565b60008281526065602052604090206001015461061d816112d6565b61062783836112e3565b505050565b6001600160a01b038116331461069c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610451565b6106a68282611305565b5050565b61010054604080516328e2833d60e21b81523360048201526024810191909152600b60448201526a31b7bab837b71d313ab93760a91b60648201526001600160a01b039091169063a38a0cf49060840160206040518083038186803b15801561071257600080fd5b505afa158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a91906126ac565b6107b05760405162461bcd60e51b815260206004820152603160248201527f4275726e3a2063616c6c657220646f6573206e6f74206861766520636f75706f604482015270371d313ab937103832b936b4b9b9b4b7b760791b6064820152608401610451565b6101005460405163de1ac2fd60e01b81526001600160a01b038381166004830152600092169063de1ac2fd9060240160206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f91906123ca565b9050600061083d82886103ea565b1161088a5760405162461bcd60e51b815260206004820152601b60248201527f4275726e3a2062756e646c6520686173206e6f2062616c616e636500000000006044820152606401610451565b61089381611327565b61089f8187600161140b565b60006108ab82886103ea565b600088815260fc6020526040902054909150816108db57600088815260fc60205260408120556108db888461158f565b7f254a706f2340305d07786296b068bdf356a5912df4dc883cefb4d8728751b00c83898989898787426040516109189897969594939291906129d5565b60405180910390a15050505050505050565b600054610100900460ff161580801561094a5750600054600160ff909116105b806109645750303b158015610964575060005460ff166001145b6109c75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610451565b6000805460ff1916600117905580156109ea576000805461ff0019166101001790555b6109f382611697565b60fb80546001600160a01b031916331790558251610a189060ff906020860190612232565b50610a246000336116c7565b610a4e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336116c7565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60608151835114610afd5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610451565b6000835167ffffffffffffffff811115610b2757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610b50578160200160208202803683370190505b50905060005b8451811015610bf257610bb7858281518110610b8257634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610baa57634e487b7160e01b600052603260045260246000fd5b60200260200101516103ea565b828281518110610bd757634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610beb81612d7d565b9050610b56565b509392505050565b610c247f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610da7565b610c8c5760405162461bcd60e51b815260206004820152603360248201527f566572696669636174696f6e436f75706f6e3a206d75737420686176652061206044820152721b5a5b9d195c881c9bdb19481d1bc81b5a5b9d606a1b6064820152608401610451565b60008311610ccf5760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207175616e7469747960801b6044820152606401610451565b6000610cda60fe5490565b9050610cf7868286604051806020016040528060008152506116d1565b6001600160a01b038616600090815260fd6020908152604080832080546001810182559084528284200184905583835260fc9091529020859055610d3f60fe80546001019055565b7f714796d10b956860a97e79606bccf579dbf5cb2fb55ae4e715d5c73166142680868287878787604051610d7896959493929190612a4a565b60405180910390a1505050505050565b6000828152609760205260408120610da090836117de565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6106a63383836117ea565b600081815260976020526040812061047f906118cb565b600082815260656020526040902060010154610e0f816112d6565b6106278383611305565b6101005460405163de1ac2fd60e01b81526001600160a01b038381166004830152600092839291169063de1ac2fd9060240160206040518083038186803b158015610e6357600080fd5b505afa158015610e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b91906123ca565b6001600160a01b038116600090815260fd602052604090205490915080610efa5760405162461bcd60e51b81526020600482015260136024820152724e6f20617661696c61626c6520746f6b656e7360681b6044820152606401610451565b6000196000805b83811015610f8e576001600160a01b038516600090815260fd60205260409020805482908110610f4157634e487b7160e01b600052603260045260246000fd5b90600052602060002001549150610f6782600090815260fc602052604090205442101590565b158015610f7357508282105b15610f7c578192505b80610f8681612d7d565b915050610f01565b50600019821415610fd75760405162461bcd60e51b81526020600482015260136024820152724e6f20617661696c61626c6520746f6b656e7360681b6044820152606401610451565b50949350505050565b6001600160a01b038516331480610ffc5750610ffc8533610383565b6110185760405162461bcd60e51b815260040161045190612b38565b6105fb85858585856118d5565b60fb546001600160a01b031633146110775760405162461bcd60e51b81526020600482015260156024820152742a34329031b0b63632b91034b9903737ba102b272360591b6044820152606401610451565b61010080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216636cdb3d1360e11b14806110cb57506001600160e01b031982166303a24d0760e21b145b8061047f575061047f82611a03565b815183511461113c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610451565b6001600160a01b0384166111625760405162461bcd60e51b815260040161045190612b86565b3360005b845181101561126857600085828151811061119157634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106111bd57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815260c9835260408082206001600160a01b038e16835290935291909120549091508181101561120e5760405162461bcd60e51b815260040161045190612bcb565b600083815260c9602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061124d908490612c84565b925050819055505050508061126190612d7d565b9050611166565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112b8929190612aaf565b60405180910390a46112ce818787878787611a28565b505050505050565b6112e08133611b93565b50565b6112ed8282611bec565b60008281526097602052604090206106279082611c72565b61130f8282611c87565b60008281526097602052604090206106279082611cee565b6001600160a01b038116600090815260fd602052604081205490805b82811015611405576001600160a01b038416600090815260fd6020526040902080548290811061138357634e487b7160e01b600052603260045260246000fd5b906000526020600020015491506113a982600090815260fc602052604090205442101590565b156113f35760006113ba85846103ea565b90506113c785848361140b565b600083815260fc60205260408120556113e0838661158f565b836113ea81612cfe565b94505050611343565b806113fd81612d7d565b915050611343565b50505050565b6001600160a01b03831661146d5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610451565b33600061147984611d03565b9050600061148684611d03565b604080516020808201835260009182905288825260c981528282206001600160a01b038b16835290522054909150848110156115105760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610451565b600086815260c9602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090525b50505050505050565b6001600160a01b038116600090815260fd60205260408120905b8154811015611405578181815481106115d257634e487b7160e01b600052603260045260246000fd5b906000526020600020015484141561168557815482906115f490600190612cbb565b8154811061161257634e487b7160e01b600052603260045260246000fd5b906000526020600020015482828154811061163d57634e487b7160e01b600052603260045260246000fd5b90600052602060002001819055508180548061166957634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b8061168f81612d7d565b9150506115a9565b600054610100900460ff166116be5760405162461bcd60e51b815260040161045190612c15565b6112e081611d5c565b6106a682826112e3565b6001600160a01b0384166117315760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610451565b33600061173d85611d03565b9050600061174a85611d03565b9050600086815260c9602090815260408083206001600160a01b038b1684529091528120805487929061177e908490612c84565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461158683600089898989611d8c565b6000610da08383611e56565b816001600160a01b0316836001600160a01b0316141561185e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610451565b6001600160a01b03838116600081815260ca6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600061047f825490565b6001600160a01b0384166118fb5760405162461bcd60e51b815260040161045190612b86565b33600061190785611d03565b9050600061191485611d03565b9050600086815260c9602090815260408083206001600160a01b038c168452909152902054858110156119595760405162461bcd60e51b815260040161045190612bcb565b600087815260c9602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611998908490612c84565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46119f8848a8a8a8a8a611d8c565b505050505050505050565b60006001600160e01b03198216635a05180f60e01b148061047f575061047f82611e8e565b6001600160a01b0384163b156112ce5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611a6c9089908990889088908890600401612932565b602060405180830381600087803b158015611a8657600080fd5b505af1925050508015611ab6575060408051601f3d908101601f19168201909252611ab391810190612741565b60015b611b6357611ac2612dc4565b806308c379a01415611afc5750611ad7612ddc565b80611ae25750611afe565b8060405162461bcd60e51b81526004016104519190612add565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610451565b6001600160e01b0319811663bc197c8160e01b146115865760405162461bcd60e51b815260040161045190612af0565b611b9d8282610da7565b6106a657611baa81611ec3565b611bb5836020611ed5565b604051602001611bc69291906128bd565b60408051601f198184030181529082905262461bcd60e51b825261045191600401612add565b611bf68282610da7565b6106a65760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c2e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610da0836001600160a01b0384166120b7565b611c918282610da7565b156106a65760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610da0836001600160a01b038416612106565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611d4b57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b600054610100900460ff16611d835760405162461bcd60e51b815260040161045190612c15565b6112e081612223565b6001600160a01b0384163b156112ce5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611dd09089908990889088908890600401612990565b602060405180830381600087803b158015611dea57600080fd5b505af1925050508015611e1a575060408051601f3d908101601f19168201909252611e1791810190612741565b60015b611e2657611ac2612dc4565b6001600160e01b0319811663f23a6e6160e01b146115865760405162461bcd60e51b815260040161045190612af0565b6000826000018281548110611e7b57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047f57506301ffc9a760e01b6001600160e01b031983161461047f565b606061047f6001600160a01b03831660145b60606000611ee4836002612c9c565b611eef906002612c84565b67ffffffffffffffff811115611f1557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611f3f576020820181803683370190505b509050600360fc1b81600081518110611f6857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611fa557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000611fc9846002612c9c565b611fd4906001612c84565b90505b6001811115612068576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061201657634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061203a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361206181612cfe565b9050611fd7565b508315610da05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610451565b60008181526001830160205260408120546120fe5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561047f565b50600061047f565b6000818152600183016020526040812054801561221957600061212a600183612cbb565b855490915060009061213e90600190612cbb565b90508181146121bf57600086600001828154811061216c57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508087600001848154811061219d57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b85548690806121de57634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061047f565b600091505061047f565b80516106a69060cb9060208401905b82805461223e90612d15565b90600052602060002090601f01602090048101928261226057600085556122a6565b82601f1061227957805160ff19168380011785556122a6565b828001600101855582156122a6579182015b828111156122a657825182559160200191906001019061228b565b506122b29291506122b6565b5090565b5b808211156122b257600081556001016122b7565b600082601f8301126122db578081fd5b813560206122e882612c60565b6040516122f58282612d50565b8381528281019150858301600585901b87018401881015612314578586fd5b855b8581101561233257813584529284019290840190600101612316565b5090979650505050505050565b600082601f83011261234f578081fd5b813567ffffffffffffffff81111561236957612369612dae565b604051612380601f8301601f191660200182612d50565b818152846020838601011115612394578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156123bf578081fd5b8135610da081612e66565b6000602082840312156123db578081fd5b8151610da081612e66565b600080604083850312156123f8578081fd5b823561240381612e66565b9150602083013561241381612e66565b809150509250929050565b600080600080600060a08688031215612435578081fd5b853561244081612e66565b9450602086013561245081612e66565b9350604086013567ffffffffffffffff8082111561246c578283fd5b61247889838a016122cb565b9450606088013591508082111561248d578283fd5b61249989838a016122cb565b935060808801359150808211156124ae578283fd5b506124bb8882890161233f565b9150509295509295909350565b600080600080600060a086880312156124df578081fd5b85356124ea81612e66565b945060208601356124fa81612e66565b93506040860135925060608601359150608086013567ffffffffffffffff811115612523578182fd5b6124bb8882890161233f565b60008060408385031215612541578182fd5b823561254c81612e66565b9150602083013561241381612e7b565b6000806040838503121561256e578182fd5b823561257981612e66565b946020939093013593505050565b600080600080600060a0868803121561259e578283fd5b85356125a981612e66565b94506020860135935060408601359250606086013567ffffffffffffffff808211156125d3578283fd5b61249989838a0161233f565b600080604083850312156125f1578182fd5b823567ffffffffffffffff80821115612608578384fd5b818501915085601f83011261261b578384fd5b8135602061262882612c60565b6040516126358282612d50565b8381528281019150858301600585901b870184018b1015612654578889fd5b8896505b8487101561267f57803561266b81612e66565b835260019690960195918301918301612658565b5096505086013592505080821115612695578283fd5b506126a2858286016122cb565b9150509250929050565b6000602082840312156126bd578081fd5b8151610da081612e7b565b6000602082840312156126d9578081fd5b5035919050565b600080604083850312156126f2578182fd5b82359150602083013561241381612e66565b60008060408385031215612716578182fd5b50508035926020909101359150565b600060208284031215612736578081fd5b8135610da081612e89565b600060208284031215612752578081fd5b8151610da081612e89565b6000806040838503121561276f578182fd5b823567ffffffffffffffff80821115612786578384fd5b6127928683870161233f565b935060208501359150808211156127a7578283fd5b506126a28582860161233f565b600080600080600060a086880312156127cb578283fd5b85359450602086013567ffffffffffffffff808211156127e9578485fd5b6127f589838a0161233f565b9550604088013591508082111561280a578485fd5b61281689838a0161233f565b9450606088013591508082111561282b578283fd5b506128388882890161233f565b925050608086013561284981612e66565b809150509295509295909350565b6000815180845260208085019450808401835b838110156128865781518752958201959082019060010161286a565b509495945050505050565b600081518084526128a9816020860160208601612cd2565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516128f5816017850160208801612cd2565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612926816028840160208801612cd2565b01602801949350505050565b6001600160a01b0386811682528516602082015260a06040820181905260009061295e90830186612857565b82810360608401526129708186612857565b905082810360808401526129848185612891565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906129ca90830184612891565b979650505050505050565b6001600160a01b03891681526020810188905261010060408201819052600090612a018382018a612891565b90508281036060840152612a158189612891565b90508281036080840152612a298188612891565b60a0840196909652505060c081019290925260e09091015295945050505050565b60018060a01b038716815285602082015284604082015283606082015260c060808201526000612a7d60c0830185612891565b82810360a0840152612a8f8185612891565b9998505050505050505050565b602081526000610da06020830184612857565b604081526000612ac26040830185612857565b8281036020840152612ad48185612857565b95945050505050565b602081526000610da06020830184612891565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600067ffffffffffffffff821115612c7a57612c7a612dae565b5060051b60200190565b60008219821115612c9757612c97612d98565b500190565b6000816000190483118215151615612cb657612cb6612d98565b500290565b600082821015612ccd57612ccd612d98565b500390565b60005b83811015612ced578181015183820152602001612cd5565b838111156114055750506000910152565b600081612d0d57612d0d612d98565b506000190190565b600181811c90821680612d2957607f821691505b60208210811415612d4a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff81118282101715612d7657612d76612dae565b6040525050565b6000600019821415612d9157612d91612d98565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115612dd957600481823e5160e01c5b90565b600060443d1015612dea5790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715612e1a57505050505090565b8285019150815181811115612e325750505050505090565b843d8701016020828501011115612e4c5750505050505090565b612e5b60208286010187612d50565b509095945050505050565b6001600160a01b03811681146112e057600080fd5b80151581146112e057600080fd5b6001600160e01b0319811681146112e057600080fdfea264697066735822122063059aae6b3a1db33e7f24283d72bfa29806ebb5d536dc9e4a96ee9a5c20164864736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101725760003560e01c80636d013618116100de578063d539139311610097578063e985e9c511610071578063e985e9c514610375578063f1537686146103b1578063f242432a146103c4578063fb5e3c25146103d757600080fd5b8063d539139314610318578063d547741f1461033f578063d9548e531461035257600080fd5b80636d013618146102b15780639010d07c146102c457806391d14854146102d7578063a217fddf146102ea578063a22cb465146102f2578063ca15c8731461030557600080fd5b80632f2ff15d116101305780632f2ff15d1461022057806334ca4b641461023357806336568abe14610258578063428d69101461026b5780634cd88b761461027e5780634e1273f41461029157600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c0578063248a9ca3146101e057806324ff40b7146102035780632eb2c2d61461020b575b600080fd5b61018a61018536600461255c565b6103ea565b6040519081526020015b60405180910390f35b6101b06101ab366004612725565b610485565b6040519015158152602001610194565b6101d36101ce3660046126c8565b610490565b6040516101949190612add565b61018a6101ee3660046126c8565b60009081526065602052604090206001015490565b6101d3610524565b61021e61021936600461241e565b6105b6565b005b61021e61022e3660046126e0565b610602565b60fb546001600160a01b03165b6040516001600160a01b039091168152602001610194565b61021e6102663660046126e0565b61062c565b61021e6102793660046127b4565b6106aa565b61021e61028c36600461275d565b61092a565b6102a461029f3660046125df565b610a98565b6040516101949190612a9c565b61021e6102bf366004612587565b610bfa565b6102406102d2366004612704565b610d88565b6101b06102e53660046126e0565b610da7565b61018a600081565b61021e61030036600461252f565b610dd2565b61018a6103133660046126c8565b610ddd565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61021e61034d3660046126e0565b610df4565b6101b06103603660046126c8565b600090815260fc602052604090205442101590565b6101b06103833660046123e6565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205460ff1690565b61018a6103bf3660046123ae565b610e19565b61021e6103d23660046124c8565b610fe0565b61021e6103e53660046123ae565b611025565b60006001600160a01b03831661045a5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b50600081815260c9602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047f8261109a565b606060cb805461049f90612d15565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb90612d15565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b50505050509050919050565b606060ff805461053390612d15565b80601f016020809104026020016040519081016040528092919081815260200182805461055f90612d15565b80156105ac5780601f10610581576101008083540402835291602001916105ac565b820191906000526020600020905b81548152906001019060200180831161058f57829003601f168201915b5050505050905090565b6001600160a01b0385163314806105d257506105d28533610383565b6105ee5760405162461bcd60e51b815260040161045190612b38565b6105fb85858585856110da565b5050505050565b60008281526065602052604090206001015461061d816112d6565b61062783836112e3565b505050565b6001600160a01b038116331461069c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610451565b6106a68282611305565b5050565b61010054604080516328e2833d60e21b81523360048201526024810191909152600b60448201526a31b7bab837b71d313ab93760a91b60648201526001600160a01b039091169063a38a0cf49060840160206040518083038186803b15801561071257600080fd5b505afa158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a91906126ac565b6107b05760405162461bcd60e51b815260206004820152603160248201527f4275726e3a2063616c6c657220646f6573206e6f74206861766520636f75706f604482015270371d313ab937103832b936b4b9b9b4b7b760791b6064820152608401610451565b6101005460405163de1ac2fd60e01b81526001600160a01b038381166004830152600092169063de1ac2fd9060240160206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f91906123ca565b9050600061083d82886103ea565b1161088a5760405162461bcd60e51b815260206004820152601b60248201527f4275726e3a2062756e646c6520686173206e6f2062616c616e636500000000006044820152606401610451565b61089381611327565b61089f8187600161140b565b60006108ab82886103ea565b600088815260fc6020526040902054909150816108db57600088815260fc60205260408120556108db888461158f565b7f254a706f2340305d07786296b068bdf356a5912df4dc883cefb4d8728751b00c83898989898787426040516109189897969594939291906129d5565b60405180910390a15050505050505050565b600054610100900460ff161580801561094a5750600054600160ff909116105b806109645750303b158015610964575060005460ff166001145b6109c75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610451565b6000805460ff1916600117905580156109ea576000805461ff0019166101001790555b6109f382611697565b60fb80546001600160a01b031916331790558251610a189060ff906020860190612232565b50610a246000336116c7565b610a4e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336116c7565b8015610627576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60608151835114610afd5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610451565b6000835167ffffffffffffffff811115610b2757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610b50578160200160208202803683370190505b50905060005b8451811015610bf257610bb7858281518110610b8257634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610baa57634e487b7160e01b600052603260045260246000fd5b60200260200101516103ea565b828281518110610bd757634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610beb81612d7d565b9050610b56565b509392505050565b610c247f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610da7565b610c8c5760405162461bcd60e51b815260206004820152603360248201527f566572696669636174696f6e436f75706f6e3a206d75737420686176652061206044820152721b5a5b9d195c881c9bdb19481d1bc81b5a5b9d606a1b6064820152608401610451565b60008311610ccf5760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207175616e7469747960801b6044820152606401610451565b6000610cda60fe5490565b9050610cf7868286604051806020016040528060008152506116d1565b6001600160a01b038616600090815260fd6020908152604080832080546001810182559084528284200184905583835260fc9091529020859055610d3f60fe80546001019055565b7f714796d10b956860a97e79606bccf579dbf5cb2fb55ae4e715d5c73166142680868287878787604051610d7896959493929190612a4a565b60405180910390a1505050505050565b6000828152609760205260408120610da090836117de565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6106a63383836117ea565b600081815260976020526040812061047f906118cb565b600082815260656020526040902060010154610e0f816112d6565b6106278383611305565b6101005460405163de1ac2fd60e01b81526001600160a01b038381166004830152600092839291169063de1ac2fd9060240160206040518083038186803b158015610e6357600080fd5b505afa158015610e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b91906123ca565b6001600160a01b038116600090815260fd602052604090205490915080610efa5760405162461bcd60e51b81526020600482015260136024820152724e6f20617661696c61626c6520746f6b656e7360681b6044820152606401610451565b6000196000805b83811015610f8e576001600160a01b038516600090815260fd60205260409020805482908110610f4157634e487b7160e01b600052603260045260246000fd5b90600052602060002001549150610f6782600090815260fc602052604090205442101590565b158015610f7357508282105b15610f7c578192505b80610f8681612d7d565b915050610f01565b50600019821415610fd75760405162461bcd60e51b81526020600482015260136024820152724e6f20617661696c61626c6520746f6b656e7360681b6044820152606401610451565b50949350505050565b6001600160a01b038516331480610ffc5750610ffc8533610383565b6110185760405162461bcd60e51b815260040161045190612b38565b6105fb85858585856118d5565b60fb546001600160a01b031633146110775760405162461bcd60e51b81526020600482015260156024820152742a34329031b0b63632b91034b9903737ba102b272360591b6044820152606401610451565b61010080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216636cdb3d1360e11b14806110cb57506001600160e01b031982166303a24d0760e21b145b8061047f575061047f82611a03565b815183511461113c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610451565b6001600160a01b0384166111625760405162461bcd60e51b815260040161045190612b86565b3360005b845181101561126857600085828151811061119157634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106111bd57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815260c9835260408082206001600160a01b038e16835290935291909120549091508181101561120e5760405162461bcd60e51b815260040161045190612bcb565b600083815260c9602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061124d908490612c84565b925050819055505050508061126190612d7d565b9050611166565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112b8929190612aaf565b60405180910390a46112ce818787878787611a28565b505050505050565b6112e08133611b93565b50565b6112ed8282611bec565b60008281526097602052604090206106279082611c72565b61130f8282611c87565b60008281526097602052604090206106279082611cee565b6001600160a01b038116600090815260fd602052604081205490805b82811015611405576001600160a01b038416600090815260fd6020526040902080548290811061138357634e487b7160e01b600052603260045260246000fd5b906000526020600020015491506113a982600090815260fc602052604090205442101590565b156113f35760006113ba85846103ea565b90506113c785848361140b565b600083815260fc60205260408120556113e0838661158f565b836113ea81612cfe565b94505050611343565b806113fd81612d7d565b915050611343565b50505050565b6001600160a01b03831661146d5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610451565b33600061147984611d03565b9050600061148684611d03565b604080516020808201835260009182905288825260c981528282206001600160a01b038b16835290522054909150848110156115105760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610451565b600086815260c9602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090525b50505050505050565b6001600160a01b038116600090815260fd60205260408120905b8154811015611405578181815481106115d257634e487b7160e01b600052603260045260246000fd5b906000526020600020015484141561168557815482906115f490600190612cbb565b8154811061161257634e487b7160e01b600052603260045260246000fd5b906000526020600020015482828154811061163d57634e487b7160e01b600052603260045260246000fd5b90600052602060002001819055508180548061166957634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b8061168f81612d7d565b9150506115a9565b600054610100900460ff166116be5760405162461bcd60e51b815260040161045190612c15565b6112e081611d5c565b6106a682826112e3565b6001600160a01b0384166117315760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610451565b33600061173d85611d03565b9050600061174a85611d03565b9050600086815260c9602090815260408083206001600160a01b038b1684529091528120805487929061177e908490612c84565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461158683600089898989611d8c565b6000610da08383611e56565b816001600160a01b0316836001600160a01b0316141561185e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610451565b6001600160a01b03838116600081815260ca6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600061047f825490565b6001600160a01b0384166118fb5760405162461bcd60e51b815260040161045190612b86565b33600061190785611d03565b9050600061191485611d03565b9050600086815260c9602090815260408083206001600160a01b038c168452909152902054858110156119595760405162461bcd60e51b815260040161045190612bcb565b600087815260c9602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611998908490612c84565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46119f8848a8a8a8a8a611d8c565b505050505050505050565b60006001600160e01b03198216635a05180f60e01b148061047f575061047f82611e8e565b6001600160a01b0384163b156112ce5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611a6c9089908990889088908890600401612932565b602060405180830381600087803b158015611a8657600080fd5b505af1925050508015611ab6575060408051601f3d908101601f19168201909252611ab391810190612741565b60015b611b6357611ac2612dc4565b806308c379a01415611afc5750611ad7612ddc565b80611ae25750611afe565b8060405162461bcd60e51b81526004016104519190612add565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610451565b6001600160e01b0319811663bc197c8160e01b146115865760405162461bcd60e51b815260040161045190612af0565b611b9d8282610da7565b6106a657611baa81611ec3565b611bb5836020611ed5565b604051602001611bc69291906128bd565b60408051601f198184030181529082905262461bcd60e51b825261045191600401612add565b611bf68282610da7565b6106a65760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c2e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610da0836001600160a01b0384166120b7565b611c918282610da7565b156106a65760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610da0836001600160a01b038416612106565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611d4b57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b600054610100900460ff16611d835760405162461bcd60e51b815260040161045190612c15565b6112e081612223565b6001600160a01b0384163b156112ce5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611dd09089908990889088908890600401612990565b602060405180830381600087803b158015611dea57600080fd5b505af1925050508015611e1a575060408051601f3d908101601f19168201909252611e1791810190612741565b60015b611e2657611ac2612dc4565b6001600160e01b0319811663f23a6e6160e01b146115865760405162461bcd60e51b815260040161045190612af0565b6000826000018281548110611e7b57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047f57506301ffc9a760e01b6001600160e01b031983161461047f565b606061047f6001600160a01b03831660145b60606000611ee4836002612c9c565b611eef906002612c84565b67ffffffffffffffff811115611f1557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611f3f576020820181803683370190505b509050600360fc1b81600081518110611f6857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611fa557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000611fc9846002612c9c565b611fd4906001612c84565b90505b6001811115612068576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061201657634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061203a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361206181612cfe565b9050611fd7565b508315610da05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610451565b60008181526001830160205260408120546120fe5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561047f565b50600061047f565b6000818152600183016020526040812054801561221957600061212a600183612cbb565b855490915060009061213e90600190612cbb565b90508181146121bf57600086600001828154811061216c57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508087600001848154811061219d57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b85548690806121de57634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061047f565b600091505061047f565b80516106a69060cb9060208401905b82805461223e90612d15565b90600052602060002090601f01602090048101928261226057600085556122a6565b82601f1061227957805160ff19168380011785556122a6565b828001600101855582156122a6579182015b828111156122a657825182559160200191906001019061228b565b506122b29291506122b6565b5090565b5b808211156122b257600081556001016122b7565b600082601f8301126122db578081fd5b813560206122e882612c60565b6040516122f58282612d50565b8381528281019150858301600585901b87018401881015612314578586fd5b855b8581101561233257813584529284019290840190600101612316565b5090979650505050505050565b600082601f83011261234f578081fd5b813567ffffffffffffffff81111561236957612369612dae565b604051612380601f8301601f191660200182612d50565b818152846020838601011115612394578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156123bf578081fd5b8135610da081612e66565b6000602082840312156123db578081fd5b8151610da081612e66565b600080604083850312156123f8578081fd5b823561240381612e66565b9150602083013561241381612e66565b809150509250929050565b600080600080600060a08688031215612435578081fd5b853561244081612e66565b9450602086013561245081612e66565b9350604086013567ffffffffffffffff8082111561246c578283fd5b61247889838a016122cb565b9450606088013591508082111561248d578283fd5b61249989838a016122cb565b935060808801359150808211156124ae578283fd5b506124bb8882890161233f565b9150509295509295909350565b600080600080600060a086880312156124df578081fd5b85356124ea81612e66565b945060208601356124fa81612e66565b93506040860135925060608601359150608086013567ffffffffffffffff811115612523578182fd5b6124bb8882890161233f565b60008060408385031215612541578182fd5b823561254c81612e66565b9150602083013561241381612e7b565b6000806040838503121561256e578182fd5b823561257981612e66565b946020939093013593505050565b600080600080600060a0868803121561259e578283fd5b85356125a981612e66565b94506020860135935060408601359250606086013567ffffffffffffffff808211156125d3578283fd5b61249989838a0161233f565b600080604083850312156125f1578182fd5b823567ffffffffffffffff80821115612608578384fd5b818501915085601f83011261261b578384fd5b8135602061262882612c60565b6040516126358282612d50565b8381528281019150858301600585901b870184018b1015612654578889fd5b8896505b8487101561267f57803561266b81612e66565b835260019690960195918301918301612658565b5096505086013592505080821115612695578283fd5b506126a2858286016122cb565b9150509250929050565b6000602082840312156126bd578081fd5b8151610da081612e7b565b6000602082840312156126d9578081fd5b5035919050565b600080604083850312156126f2578182fd5b82359150602083013561241381612e66565b60008060408385031215612716578182fd5b50508035926020909101359150565b600060208284031215612736578081fd5b8135610da081612e89565b600060208284031215612752578081fd5b8151610da081612e89565b6000806040838503121561276f578182fd5b823567ffffffffffffffff80821115612786578384fd5b6127928683870161233f565b935060208501359150808211156127a7578283fd5b506126a28582860161233f565b600080600080600060a086880312156127cb578283fd5b85359450602086013567ffffffffffffffff808211156127e9578485fd5b6127f589838a0161233f565b9550604088013591508082111561280a578485fd5b61281689838a0161233f565b9450606088013591508082111561282b578283fd5b506128388882890161233f565b925050608086013561284981612e66565b809150509295509295909350565b6000815180845260208085019450808401835b838110156128865781518752958201959082019060010161286a565b509495945050505050565b600081518084526128a9816020860160208601612cd2565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516128f5816017850160208801612cd2565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612926816028840160208801612cd2565b01602801949350505050565b6001600160a01b0386811682528516602082015260a06040820181905260009061295e90830186612857565b82810360608401526129708186612857565b905082810360808401526129848185612891565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906129ca90830184612891565b979650505050505050565b6001600160a01b03891681526020810188905261010060408201819052600090612a018382018a612891565b90508281036060840152612a158189612891565b90508281036080840152612a298188612891565b60a0840196909652505060c081019290925260e09091015295945050505050565b60018060a01b038716815285602082015284604082015283606082015260c060808201526000612a7d60c0830185612891565b82810360a0840152612a8f8185612891565b9998505050505050505050565b602081526000610da06020830184612857565b604081526000612ac26040830185612857565b8281036020840152612ad48185612857565b95945050505050565b602081526000610da06020830184612891565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600067ffffffffffffffff821115612c7a57612c7a612dae565b5060051b60200190565b60008219821115612c9757612c97612d98565b500190565b6000816000190483118215151615612cb657612cb6612d98565b500290565b600082821015612ccd57612ccd612d98565b500390565b60005b83811015612ced578181015183820152602001612cd5565b838111156114055750506000910152565b600081612d0d57612d0d612d98565b506000190190565b600181811c90821680612d2957607f821691505b60208210811415612d4a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff81118282101715612d7657612d76612dae565b6040525050565b6000600019821415612d9157612d91612d98565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d1115612dd957600481823e5160e01c5b90565b600060443d1015612dea5790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715612e1a57505050505090565b8285019150815181811115612e325750505050505090565b843d8701016020828501011115612e4c5750505050505090565b612e5b60208286010187612d50565b509095945050505050565b6001600160a01b03811681146112e057600080fd5b80151581146112e057600080fd5b6001600160e01b0319811681146112e057600080fdfea264697066735822122063059aae6b3a1db33e7f24283d72bfa29806ebb5d536dc9e4a96ee9a5c20164864736f6c63430008040033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:29660:21",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:21",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "78:691:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "127:24:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "136:5:21"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "143:5:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "129:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "129:20:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "129:20:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "106:6:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "114:4:21",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "102:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "102:17:21"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "121:3:21"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "98:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "98:27:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "91:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "91:35:21"
                  },
                  "nodeType": "YulIf",
                  "src": "88:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "160:30:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "183:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "170:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "170:20:21"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "164:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "199:14:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "209:4:21",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "203:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "222:53:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "272:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "array_allocation_size_array_address_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "232:39:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "232:43:21"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "226:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "284:23:21",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "304:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "298:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "298:9:21"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "288:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "336:6:21"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "344:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "316:19:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "316:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "316:31:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "356:17:21",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "367:6:21"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "360:3:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "389:6:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "397:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "382:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "382:18:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "382:18:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "409:22:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "420:6:21"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "428:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "416:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "416:15:21"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "409:3:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "440:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "455:6:21"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "463:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "451:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "451:15:21"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "444:3:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "520:24:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "529:5:21"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "536:5:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "522:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "522:20:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "522:20:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "489:6:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "501:1:21",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "504:2:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "497:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "497:10:21"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "485:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "485:23:21"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "510:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "481:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "481:32:21"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "515:3:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "478:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "478:41:21"
                  },
                  "nodeType": "YulIf",
                  "src": "475:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "553:14:21",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "562:5:21"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "557:1:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "621:118:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "642:3:21"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "660:3:21"
                                }
                              ],
                              "functionName": {
                                "name": "calldataload",
                                "nodeType": "YulIdentifier",
                                "src": "647:12:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "647:17:21"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "635:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "635:30:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "635:30:21"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "678:19:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "689:3:21"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "694:2:21"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "685:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "685:12:21"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "678:3:21"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "710:19:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "721:3:21"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "726:2:21"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "717:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "717:12:21"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "710:3:21"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "587:1:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "590:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "584:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "584:9:21"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "594:18:21",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "596:14:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "605:1:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "608:1:21",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "601:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "601:9:21"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "596:1:21"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "580:3:21",
                    "statements": []
                  },
                  "src": "576:163:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "748:15:21",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "757:6:21"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "748:5:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "52:6:21",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "60:3:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "68:5:21",
                "type": ""
              }
            ],
            "src": "14:755:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "826:523:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "875:24:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "884:5:21"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "891:5:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "877:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "877:20:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "877:20:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "854:6:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "862:4:21",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "850:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "850:17:21"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "869:3:21"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "846:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "846:27:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "839:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "839:35:21"
                  },
                  "nodeType": "YulIf",
                  "src": "836:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "908:30:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "931:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "918:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "918:20:21"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "912:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "977:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "979:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "979:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "979:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "953:2:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "957:18:21",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "950:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "950:26:21"
                  },
                  "nodeType": "YulIf",
                  "src": "947:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1008:23:21",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1028:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1022:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1022:9:21"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "1012:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1060:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1080:2:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1084:4:21",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1076:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1076:13:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1095:2:21",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1091:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1091:7:21"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1072:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1072:27:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1101:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1068:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1068:38:21"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "1040:19:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1040:67:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1040:67:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1123:6:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1131:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1116:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1116:18:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1116:18:21"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1182:24:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1191:5:21"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1198:5:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1184:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1184:20:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1184:20:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1157:6:21"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1165:2:21"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1153:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1153:15:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1170:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1149:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1149:26:21"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1177:3:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1146:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1146:35:21"
                  },
                  "nodeType": "YulIf",
                  "src": "1143:2:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1232:6:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1240:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1228:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1228:17:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1251:6:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1259:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1247:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1247:17:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1266:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "1215:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1215:54:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1215:54:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1293:6:21"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1301:2:21"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1289:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1289:15:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1306:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1285:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1285:26:21"
                      },
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "1313:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1278:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1278:41:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1278:41:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1328:15:21",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "1337:6:21"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1328:5:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "800:6:21",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "808:3:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "816:5:21",
                "type": ""
              }
            ],
            "src": "774:575:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1424:187:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1470:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1479:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1487:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1472:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1472:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1472:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1445:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1454:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1441:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1441:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1466:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1437:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1437:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "1434:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1505:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1531:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1518:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1518:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1509:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1575:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1550:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1550:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1550:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1590:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1600:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1590:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1390:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1401:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1413:6:21",
                "type": ""
              }
            ],
            "src": "1354:257:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1697:180:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1743:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1752:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1760:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1745:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1745:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1745:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1718:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1727:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1714:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1714:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1739:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1710:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1710:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "1707:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1778:29:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1797:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1791:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1791:16:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1782:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1841:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1816:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1816:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1816:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1856:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1866:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1856:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1663:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1674:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1686:6:21",
                "type": ""
              }
            ],
            "src": "1616:261:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1969:311:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2015:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2024:6:21"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "2032:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2017:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2017:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2017:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1990:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1999:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1986:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1986:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2011:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1982:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1982:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "1979:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2050:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2076:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2063:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2063:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "2054:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2120:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2095:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2095:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2095:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2135:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2145:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2135:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2159:47:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2191:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2202:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2187:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2187:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2174:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2174:32:21"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "2163:7:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "2240:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2215:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2215:33:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2215:33:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2257:17:21",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "2267:7:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2257:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1927:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1938:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1950:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1958:6:21",
                "type": ""
              }
            ],
            "src": "1882:398:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2482:914:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2529:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "2538:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "2546:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2531:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2531:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2531:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2503:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2512:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2499:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2499:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2524:3:21",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2495:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2495:33:21"
                  },
                  "nodeType": "YulIf",
                  "src": "2492:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2564:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2590:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2577:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2577:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "2568:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2634:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2609:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2609:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2609:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2649:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2659:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2649:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2673:47:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2705:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2716:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2701:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2701:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2688:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2688:32:21"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "2677:7:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "2754:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2729:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2729:33:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2729:33:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2771:17:21",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "2781:7:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2771:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2797:46:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2828:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2839:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2824:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2824:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2811:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2811:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2801:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2852:28:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "2862:18:21",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2856:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2907:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "2916:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "2924:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2909:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2909:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2909:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2895:6:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2903:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2892:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2892:14:21"
                  },
                  "nodeType": "YulIf",
                  "src": "2889:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2942:71:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2985:9:21"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2996:6:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2981:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2981:22:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3005:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "2952:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2952:61:21"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2942:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3022:48:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3055:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3066:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3051:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3051:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3038:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3038:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "3026:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3099:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3108:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3116:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3101:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3101:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3101:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "3085:8:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3095:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3082:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3082:16:21"
                  },
                  "nodeType": "YulIf",
                  "src": "3079:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3134:73:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3177:9:21"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "3188:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3173:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3173:24:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3199:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "3144:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3144:63:21"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "3134:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3216:49:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3249:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3260:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3245:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3245:19:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3232:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3232:33:21"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "3220:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3294:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3303:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3311:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3296:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3296:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3296:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "3280:8:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3290:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3277:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3277:16:21"
                  },
                  "nodeType": "YulIf",
                  "src": "3274:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3329:61:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3360:9:21"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "3371:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3356:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3356:24:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3382:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "3339:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3339:51:21"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "3329:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2416:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2427:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2439:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2447:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2455:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "2463:6:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "2471:6:21",
                "type": ""
              }
            ],
            "src": "2285:1111:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3548:607:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3595:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3604:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3612:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3597:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3597:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3597:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3569:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3578:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3565:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3565:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3590:3:21",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3561:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3561:33:21"
                  },
                  "nodeType": "YulIf",
                  "src": "3558:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3630:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3656:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3643:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3643:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3634:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3700:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3675:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3675:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3675:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3715:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3725:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3715:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3739:47:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3771:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3782:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3767:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3767:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3754:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3754:32:21"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "3743:7:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "3820:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3795:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3795:33:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3795:33:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3837:17:21",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "3847:7:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3837:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3863:42:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3890:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3901:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3886:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3886:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3873:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3873:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3863:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3914:42:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3941:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3952:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3937:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3937:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3924:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3924:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "3914:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3965:47:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3996:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4007:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3992:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3992:19:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3979:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3979:33:21"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3969:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4055:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4064:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4072:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4057:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4057:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4057:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4027:6:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4035:18:21",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4024:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4024:30:21"
                  },
                  "nodeType": "YulIf",
                  "src": "4021:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4090:59:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4121:9:21"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4132:6:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4117:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4117:22:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4141:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "4100:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4100:49:21"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "4090:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3482:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3493:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3505:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3513:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3521:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "3529:6:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "3537:6:21",
                "type": ""
              }
            ],
            "src": "3401:754:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4244:308:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4290:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4299:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4307:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4292:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4292:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4292:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4265:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4274:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4261:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4261:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4286:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4257:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4257:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "4254:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4325:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4351:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4338:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4338:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4329:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4395:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4370:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4370:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4370:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4410:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4420:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4410:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4434:47:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4466:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4477:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4462:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4462:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4449:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4449:32:21"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "4438:7:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "4512:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nodeType": "YulIdentifier",
                      "src": "4490:21:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4490:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4490:30:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4529:17:21",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "4539:7:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4529:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4202:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4213:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4225:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4233:6:21",
                "type": ""
              }
            ],
            "src": "4160:392:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4644:238:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4690:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4699:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4707:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4692:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4692:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4692:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4665:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4674:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4661:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4661:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4686:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4657:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4657:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "4654:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4725:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4751:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4738:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4738:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4729:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4795:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4770:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4770:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4770:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4810:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4820:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4810:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4834:42:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4861:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4872:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4857:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4857:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4844:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4844:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4834:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4602:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4613:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4625:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4633:6:21",
                "type": ""
              }
            ],
            "src": "4557:325:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5045:686:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5092:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5101:6:21"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5109:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5094:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5094:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5094:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5066:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5075:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5062:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5062:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5087:3:21",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5058:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5058:33:21"
                  },
                  "nodeType": "YulIf",
                  "src": "5055:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5127:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5153:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5140:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5140:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "5131:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5197:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "5172:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5172:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5172:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5212:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "5222:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5212:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5236:42:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5263:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5274:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5259:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5259:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5246:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5246:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5236:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5287:42:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5314:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5325:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5310:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5310:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5297:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5297:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "5287:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5338:46:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5369:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5380:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5365:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5365:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5352:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5352:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5342:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5393:28:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5403:18:21",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5397:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5448:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5457:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5465:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5450:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5450:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5450:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5436:6:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5444:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5433:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5433:14:21"
                  },
                  "nodeType": "YulIf",
                  "src": "5430:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5483:59:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5514:9:21"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5525:6:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5510:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5510:22:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5534:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5493:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5493:49:21"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "5483:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5551:49:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5584:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5595:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5580:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5580:19:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5567:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5567:33:21"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "5555:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5629:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5638:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5646:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5631:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5631:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5631:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "5615:8:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5625:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5612:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5612:16:21"
                  },
                  "nodeType": "YulIf",
                  "src": "5609:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5664:61:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5695:9:21"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "5706:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5691:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5691:24:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5717:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5674:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5674:51:21"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "5664:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4979:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4990:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5002:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5010:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5018:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5026:6:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "5034:6:21",
                "type": ""
              }
            ],
            "src": "4887:844:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5873:1206:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5919:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5928:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5936:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5921:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5921:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5921:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5894:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5903:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5890:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5890:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5915:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5886:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5886:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "5883:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5954:37:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5981:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5968:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5968:23:21"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5958:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6000:28:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6010:18:21",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6004:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6055:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "6064:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "6072:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6057:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6057:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6057:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6043:6:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6051:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6040:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6040:14:21"
                  },
                  "nodeType": "YulIf",
                  "src": "6037:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6090:32:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6104:9:21"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6115:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6100:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6100:22:21"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "6094:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6170:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "6179:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "6187:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6172:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6172:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6172:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "6149:2:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6153:4:21",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6145:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6145:13:21"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6160:7:21"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "6141:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6141:27:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6134:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6134:35:21"
                  },
                  "nodeType": "YulIf",
                  "src": "6131:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6205:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "6228:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6215:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6215:16:21"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "6209:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6240:14:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6250:4:21",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "6244:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6263:53:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "6313:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "array_allocation_size_array_address_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "6273:39:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6273:43:21"
                  },
                  "variables": [
                    {
                      "name": "_5",
                      "nodeType": "YulTypedName",
                      "src": "6267:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6325:23:21",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6345:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6339:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6339:9:21"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "6329:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "6377:6:21"
                      },
                      {
                        "name": "_5",
                        "nodeType": "YulIdentifier",
                        "src": "6385:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "6357:19:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6357:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6357:31:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6397:17:21",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "6408:6:21"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "6401:3:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "6430:6:21"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "6438:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6423:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6423:18:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6423:18:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6450:22:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "6461:6:21"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "6469:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6457:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6457:15:21"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "6450:3:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6481:22:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "6496:2:21"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "6500:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6492:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6492:11:21"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "6485:3:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6557:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "6566:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "6574:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6559:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6559:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6559:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "6526:2:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6534:1:21",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6537:2:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "6530:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6530:10:21"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6522:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6522:19:21"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "6543:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6518:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6518:28:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6548:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6515:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6515:41:21"
                  },
                  "nodeType": "YulIf",
                  "src": "6512:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6592:15:21",
                  "value": {
                    "name": "value0",
                    "nodeType": "YulIdentifier",
                    "src": "6601:6:21"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "6596:1:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6661:193:21",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6675:30:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "6701:3:21"
                            }
                          ],
                          "functionName": {
                            "name": "calldataload",
                            "nodeType": "YulIdentifier",
                            "src": "6688:12:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6688:17:21"
                        },
                        "variables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6679:5:21",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "6743:5:21"
                            }
                          ],
                          "functionName": {
                            "name": "validator_revert_address",
                            "nodeType": "YulIdentifier",
                            "src": "6718:24:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6718:31:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6718:31:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "6769:3:21"
                            },
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "6774:5:21"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6762:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6762:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6762:18:21"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6793:19:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "6804:3:21"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "6809:2:21"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6800:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6800:12:21"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "6793:3:21"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6825:19:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "6836:3:21"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "6841:2:21"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6832:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6832:12:21"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "6825:3:21"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "6627:1:21"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "6630:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "6624:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6624:9:21"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "6634:18:21",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6636:14:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "6645:1:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6648:1:21",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6641:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6641:9:21"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "6636:1:21"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "6620:3:21",
                    "statements": []
                  },
                  "src": "6616:238:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6863:16:21",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "6873:6:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6863:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6888:48:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6921:9:21"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "6932:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6917:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6917:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6904:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6904:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "6892:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6965:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "6974:6:21"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "6982:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6967:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6967:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6967:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "6951:8:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6961:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6948:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6948:16:21"
                  },
                  "nodeType": "YulIf",
                  "src": "6945:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7000:73:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7043:9:21"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "7054:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7039:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7039:24:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7065:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "7010:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7010:63:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7000:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5831:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5842:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5854:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5862:6:21",
                "type": ""
              }
            ],
            "src": "5736:1343:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7162:177:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7208:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7217:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7225:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7210:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7210:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7210:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7183:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7192:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7179:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7179:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7204:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7175:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7175:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "7172:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7243:29:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7262:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7256:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7256:16:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7247:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7303:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bool",
                      "nodeType": "YulIdentifier",
                      "src": "7281:21:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7281:28:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7281:28:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7318:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7328:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7318:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7128:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7139:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7151:6:21",
                "type": ""
              }
            ],
            "src": "7084:255:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7414:120:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7460:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7469:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7477:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7462:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7462:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7462:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7435:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7444:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7431:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7431:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7456:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7427:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7427:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "7424:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7495:33:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7518:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7505:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7505:23:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7495:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7380:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7391:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7403:6:21",
                "type": ""
              }
            ],
            "src": "7344:190:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7626:238:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7672:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7681:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7689:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7674:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7674:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7674:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7647:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7656:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7643:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7643:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7668:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7639:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7639:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "7636:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7707:33:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7730:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7717:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7717:23:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7707:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7749:45:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7779:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7790:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7775:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7775:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7762:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7762:32:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7753:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7828:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "7803:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7803:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7803:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7843:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7853:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7843:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7584:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7595:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7607:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7615:6:21",
                "type": ""
              }
            ],
            "src": "7539:325:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7956:171:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8002:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8011:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8019:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8004:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8004:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8004:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7977:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7986:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7973:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7973:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7998:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7969:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7969:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "7966:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8037:33:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8060:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8047:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8047:23:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8037:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8079:42:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8106:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8117:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8102:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8102:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8089:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8089:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8079:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7914:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7925:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7937:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7945:6:21",
                "type": ""
              }
            ],
            "src": "7869:258:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8201:186:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8247:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8256:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8264:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8249:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8249:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8249:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8222:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8231:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8218:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8218:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8243:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8214:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8214:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "8211:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8282:36:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8308:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8295:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8295:23:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "8286:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8351:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "8327:23:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8327:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8327:30:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8366:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8376:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8366:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8167:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8178:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8190:6:21",
                "type": ""
              }
            ],
            "src": "8132:255:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8472:179:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8518:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8527:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8535:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8520:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8520:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8520:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8493:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8502:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8489:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8489:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8514:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8485:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8485:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "8482:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8553:29:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8572:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8566:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8566:16:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "8557:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8615:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_bytes4",
                      "nodeType": "YulIdentifier",
                      "src": "8591:23:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8591:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8591:30:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8630:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8640:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8630:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8438:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8449:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8461:6:21",
                "type": ""
              }
            ],
            "src": "8392:259:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8763:464:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8809:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8818:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8826:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8811:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8811:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8811:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8784:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8793:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8780:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8780:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8805:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8776:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8776:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "8773:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8844:37:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8871:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8858:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8858:23:21"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8848:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8890:28:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "8900:18:21",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8894:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8945:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8954:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8962:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8947:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8947:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8947:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8933:6:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8941:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8930:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8930:14:21"
                  },
                  "nodeType": "YulIf",
                  "src": "8927:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8980:59:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9011:9:21"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9022:6:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9007:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9007:22:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9031:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8990:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8990:49:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8980:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9048:48:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9081:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9092:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9077:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9077:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9064:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9064:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "9052:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9125:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "9134:6:21"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "9142:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9127:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9127:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9127:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "9111:8:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9121:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9108:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9108:16:21"
                  },
                  "nodeType": "YulIf",
                  "src": "9105:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9160:61:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9191:9:21"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "9202:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9187:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9187:24:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9213:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "9170:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9170:51:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9160:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8721:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8732:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8744:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8752:6:21",
                "type": ""
              }
            ],
            "src": "8656:571:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9302:120:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9348:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9357:6:21"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9365:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9350:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9350:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9350:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9323:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9332:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9319:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9319:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9344:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9315:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9315:32:21"
                  },
                  "nodeType": "YulIf",
                  "src": "9312:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9383:33:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9406:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9393:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9393:23:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9383:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9268:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9279:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9291:6:21",
                "type": ""
              }
            ],
            "src": "9232:190:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9595:817:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9642:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9651:6:21"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9659:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9644:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9644:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9644:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9616:7:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9625:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9612:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9612:23:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9637:3:21",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9608:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9608:33:21"
                  },
                  "nodeType": "YulIf",
                  "src": "9605:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9677:33:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9700:9:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9687:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9687:23:21"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9677:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9719:46:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9750:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9761:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9746:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9746:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9733:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9733:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9723:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9774:28:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9784:18:21",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9778:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9829:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9838:6:21"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9846:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9831:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9831:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9831:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9817:6:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9825:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9814:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9814:14:21"
                  },
                  "nodeType": "YulIf",
                  "src": "9811:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9864:59:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9895:9:21"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9906:6:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9891:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9891:22:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9915:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "9874:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9874:49:21"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9864:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9932:48:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9965:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9976:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9961:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9961:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9948:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9948:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "9936:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10009:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "10018:6:21"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "10026:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10011:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10011:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10011:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "9995:8:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10005:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9992:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9992:16:21"
                  },
                  "nodeType": "YulIf",
                  "src": "9989:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10044:61:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10075:9:21"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "10086:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10071:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10071:24:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10097:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "10054:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10054:51:21"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "10044:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10114:48:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10147:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10158:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10143:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10143:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10130:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10130:32:21"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "10118:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10191:26:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "10200:6:21"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "10208:6:21"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10193:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10193:22:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10193:22:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "10177:8:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10187:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10174:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10174:16:21"
                  },
                  "nodeType": "YulIf",
                  "src": "10171:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10226:61:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10257:9:21"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "10268:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10253:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10253:24:21"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10279:7:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "10236:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10236:51:21"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "10226:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10296:46:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10326:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10337:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10322:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10322:19:21"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10309:12:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10309:33:21"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "10300:5:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10376:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "10351:24:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10351:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10351:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10391:15:21",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "10401:5:21"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "10391:6:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9529:9:21",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9540:7:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9552:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9560:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9568:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9576:6:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "9584:6:21",
                "type": ""
              }
            ],
            "src": "9427:985:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10478:376:21",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10488:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10508:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10502:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10502:12:21"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "10492:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10530:3:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10535:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10523:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10523:19:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10523:19:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10551:14:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "10561:4:21",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "10555:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10574:19:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10585:3:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10590:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10581:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10581:12:21"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "10574:3:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10602:28:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10620:5:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10627:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10616:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10616:14:21"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "10606:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10639:12:21",
                  "value": {
                    "name": "end",
                    "nodeType": "YulIdentifier",
                    "src": "10648:3:21"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "10643:1:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10709:120:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "10730:3:21"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "10741:6:21"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "10735:5:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10735:13:21"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10723:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10723:26:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10723:26:21"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "10762:19:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "10773:3:21"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "10778:2:21"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10769:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10769:12:21"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10762:3:21"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "10794:25:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "10808:6:21"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "10816:2:21"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10804:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10804:15:21"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "10794:6:21"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "10671:1:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10674:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "10668:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10668:13:21"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "10682:18:21",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10684:14:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "10693:1:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10696:1:21",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10689:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10689:9:21"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "10684:1:21"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "10664:3:21",
                    "statements": []
                  },
                  "src": "10660:169:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10838:10:21",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "10845:3:21"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "10838:3:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "10455:5:21",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "10462:3:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10470:3:21",
                "type": ""
              }
            ],
            "src": "10417:437:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10908:208:21",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10918:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10938:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10932:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10932:12:21"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "10922:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10960:3:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10965:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10953:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10953:19:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10953:19:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "11007:5:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11014:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11003:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11003:16:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11025:3:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11030:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11021:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11021:14:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "11037:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "10981:21:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10981:63:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10981:63:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11053:57:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11068:3:21"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11081:6:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11089:2:21",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11077:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11077:15:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11098:2:21",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "11094:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11094:7:21"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "11073:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11073:29:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11064:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11064:39:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11105:4:21",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11060:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11060:50:21"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "11053:3:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "10885:5:21",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "10892:3:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10900:3:21",
                "type": ""
              }
            ],
            "src": "10859:257:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11510:397:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11527:3:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11532:25:21",
                        "type": "",
                        "value": "AccessControl: account "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11520:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11520:38:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11520:38:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11567:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "11587:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11581:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11581:13:21"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "11571:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "11629:6:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11637:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11625:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11625:17:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11648:3:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11653:2:21",
                            "type": "",
                            "value": "23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11644:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11644:12:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "11658:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "11603:21:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11603:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11603:62:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11674:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11688:3:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "11693:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11684:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11684:16:21"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "11678:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "11720:2:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11724:2:21",
                            "type": "",
                            "value": "23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11716:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11716:11:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11729:19:21",
                        "type": "",
                        "value": " is missing role "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11709:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11709:40:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11709:40:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11758:29:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "11780:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11774:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11774:13:21"
                  },
                  "variables": [
                    {
                      "name": "length_1",
                      "nodeType": "YulTypedName",
                      "src": "11762:8:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "11822:6:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11830:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11818:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11818:17:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "11841:2:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11845:2:21",
                            "type": "",
                            "value": "40"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11837:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11837:11:21"
                      },
                      {
                        "name": "length_1",
                        "nodeType": "YulIdentifier",
                        "src": "11850:8:21"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "11796:21:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11796:63:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11796:63:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11868:33:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "11883:2:21"
                          },
                          {
                            "name": "length_1",
                            "nodeType": "YulIdentifier",
                            "src": "11887:8:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11879:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11879:17:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11898:2:21",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11875:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11875:26:21"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "11868:3:21"
                    }
                  ]
                }
              ]
            },
            "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": "11478:3:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11483:6:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11491:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "11502:3:21",
                "type": ""
              }
            ],
            "src": "11121:786:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12013:102:21",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "12023:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12035:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12046:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12031:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12031:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12023:4:21"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12065:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "12080:6:21"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12096:3:21",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12101:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "12092:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12092:11:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12105:1:21",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "12088:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12088:19:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "12076:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12076:32:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12058:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12058:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12058:51:21"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11982:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11993:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12004:4:21",
                "type": ""
              }
            ],
            "src": "11912:203:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12451:495:21",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12461:29:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12479:3:21",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12484:1:21",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "12475:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12475:11:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12488:1:21",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "12471:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12471:19:21"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "12465:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12506:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "12521:6:21"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "12529:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "12517:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12517:15:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12499:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12499:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12499:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12553:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12564:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12549:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12549:18:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "12573:6:21"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "12581:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "12569:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12569:15:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12542:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12542:43:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12542:43:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12605:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12616:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12601:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12601:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12621:3:21",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12594:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12594:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12594:31:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12634:71:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "12677:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12689:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12700:3:21",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12685:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12685:19:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "12648:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12648:57:21"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "12638:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12725:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12736:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12721:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12721:18:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "12745:6:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12753:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "12741:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12741:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12714:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12714:50:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12714:50:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12773:58:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "12816:6:21"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "12824:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "12787:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12787:44:21"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "12777:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12851:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12862:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12847:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12847:19:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "12872:6:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12880:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "12868:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12868:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12840:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12840:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12840:51:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12900:40:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "12925:6:21"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "12933:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "12908:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12908:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12900:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12388:9:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "12399:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "12407:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "12415:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12423:6:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12431:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12442:4:21",
                "type": ""
              }
            ],
            "src": "12120:826:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13182:329:21",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13192:29:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13210:3:21",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13215:1:21",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "13206:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13206:11:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13219:1:21",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "13202:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13202:19:21"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "13196:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13237:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13252:6:21"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "13260:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13248:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13248:15:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13230:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13230:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13230:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13284:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13295:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13280:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13280:18:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "13304:6:21"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "13312:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13300:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13300:15:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13273:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13273:43:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13273:43:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13336:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13347:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13332:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13332:18:21"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "13352:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13325:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13325:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13325:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13379:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13390:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13375:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13375:18:21"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "13395:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13368:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13368:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13368:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13422:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13433:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13418:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13418:19:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13439:3:21",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13411:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13411:32:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13411:32:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13452:53:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "13477:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13489:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13500:3:21",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13485:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13485:19:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "13460:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13460:45:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13452:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13119:9:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "13130:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "13138:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13146:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13154:6:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13162:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13173:4:21",
                "type": ""
              }
            ],
            "src": "12951:560:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13718:231:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13735:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13750:6:21"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13766:3:21",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13771:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "13762:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13762:11:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13775:1:21",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "13758:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13758:19:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13746:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13746:32:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13728:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13728:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13728:51:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13799:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13810:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13795:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13795:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13815:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13788:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13788:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13788:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13838:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13849:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13834:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13834:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13854:2:21",
                        "type": "",
                        "value": "11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13827:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13827:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13827:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13877:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13888:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13873:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13873:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13893:13:21",
                        "type": "",
                        "value": "coupon:burn"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13866:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13866:41:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13866:41:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13916:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13928:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13939:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13924:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13924:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13916:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_stringliteral_8aa567986b0456a81ce203101ebba63c53ec1e51fd89bf6b7b00d0f87663d2e9__to_t_address_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13687:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13698:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13709:4:21",
                "type": ""
              }
            ],
            "src": "13516:433:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14311:593:21",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14321:13:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "14331:3:21",
                    "type": "",
                    "value": "256"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "14325:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14350:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "14365:6:21"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14381:3:21",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14386:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "14377:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14377:11:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14390:1:21",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "14373:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14373:19:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14361:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14361:32:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14343:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14343:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14343:51:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14414:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14425:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14410:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14410:18:21"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "14430:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14403:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14403:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14403:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14457:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14468:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14453:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14453:18:21"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "14473:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14446:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14446:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14446:30:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14485:58:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "14516:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14528:9:21"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "14539:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14524:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14524:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "14499:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14499:44:21"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "14489:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14563:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14574:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14559:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14559:18:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "14583:6:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14591:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14579:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14579:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14552:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14552:50:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14552:50:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14611:46:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "14642:6:21"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "14650:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "14625:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14625:32:21"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "14615:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14677:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14688:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14673:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14673:19:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "14698:6:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14706:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14694:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14694:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14666:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14666:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14666:51:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14726:40:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "14751:6:21"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "14759:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "14734:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14734:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14726:4:21"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14786:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14797:3:21",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14782:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14782:19:21"
                      },
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "14803:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14775:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14775:35:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14775:35:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14830:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14841:3:21",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14826:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14826:19:21"
                      },
                      {
                        "name": "value6",
                        "nodeType": "YulIdentifier",
                        "src": "14847:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14819:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14819:35:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14819:35:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14874:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14885:3:21",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14870:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14870:19:21"
                      },
                      {
                        "name": "value7",
                        "nodeType": "YulIdentifier",
                        "src": "14891:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14863:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14863:35:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14863:35:21"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14224:9:21",
                "type": ""
              },
              {
                "name": "value7",
                "nodeType": "YulTypedName",
                "src": "14235:6:21",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "14243:6:21",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "14251:6:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "14259:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "14267:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "14275:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14283:6:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14291:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14302:4:21",
                "type": ""
              }
            ],
            "src": "13954:950:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15190:414:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15207:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "15222:6:21"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15238:3:21",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15243:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "15234:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15234:11:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15247:1:21",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "15230:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15230:19:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "15218:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15218:32:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15200:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15200:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15200:51:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15271:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15282:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15267:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15267:18:21"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "15287:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15260:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15260:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15260:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15314:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15325:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15310:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15310:18:21"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "15330:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15303:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15303:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15303:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15357:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15368:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15353:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15353:18:21"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "15373:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15346:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15346:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15346:34:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15400:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15411:3:21",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15396:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15396:19:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15417:3:21",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15389:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15389:32:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15389:32:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15430:59:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "15461:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15473:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15484:3:21",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15469:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15469:19:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "15444:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15444:45:21"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "15434:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15509:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15520:3:21",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15505:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15505:19:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "15530:6:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15538:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15526:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15526:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15498:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15498:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15498:51:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15558:40:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "15583:6:21"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "15591:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "15566:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15566:32:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15558:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_uint256_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15119:9:21",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "15130:6:21",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "15138:6:21",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "15146:6:21",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "15154:6:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15162:6:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15170:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15181:4:21",
                "type": ""
              }
            ],
            "src": "14909:695:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15760:110:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15777:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15788:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15770:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15770:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15770:21:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15800:64:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "15837:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15849:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15860:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15845:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15845:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "15808:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15808:56:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15800:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15729:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15740:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15751:4:21",
                "type": ""
              }
            ],
            "src": "15609:261:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16104:236:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16121:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16132:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16114:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16114:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16114:21:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16144:70:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16187:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16199:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16210:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16195:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16195:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "16158:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16158:56:21"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "16148:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16234:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16245:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16230:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16230:18:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "16254:6:21"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16262:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16250:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16250:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16223:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16223:50:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16223:50:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16282:52:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "16319:6:21"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "16327:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "16290:28:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16290:44:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16282:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16065:9:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "16076:6:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16084:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16095:4:21",
                "type": ""
              }
            ],
            "src": "15875:465:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16440:92:21",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16450:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16462:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16473:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16458:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16458:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16450:4:21"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16492:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "16517:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "16510:6:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16510:14:21"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "16503:6:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16503:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16485:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16485:41:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16485:41:21"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16409:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16420:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16431:4:21",
                "type": ""
              }
            ],
            "src": "16345:187:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16638:76:21",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16648:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16660:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16671:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16656:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16656:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16648:4:21"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16690:9:21"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16701:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16683:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16683:25:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16683:25:21"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16607:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16618:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16629:4:21",
                "type": ""
              }
            ],
            "src": "16537:177:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16826:87:21",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16836:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16848:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16859:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16844:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16844:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16836:4:21"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16878:9:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "16893:6:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16901:4:21",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "16889:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16889:17:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16871:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16871:36:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16871:36:21"
                }
              ]
            },
            "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16795:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16806:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16817:4:21",
                "type": ""
              }
            ],
            "src": "16719:194:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17039:98:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17056:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17067:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17049:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17049:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17049:21:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17079:52:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17104:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17116:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17127:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17112:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17112:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "17087:16:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17087:44:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17079:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17008:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17019:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17030:4:21",
                "type": ""
              }
            ],
            "src": "16918:219:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17316:182:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17333:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17344:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17326:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17326:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17326:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17367:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17378:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17363:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17363:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17383:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17356:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17356:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17356:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17406:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17417:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17402:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17402:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17422:34:21",
                        "type": "",
                        "value": "Strings: hex length insufficient"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17395:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17395:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17395:62:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17466:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17478:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17489:2:21",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17474:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17474:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17466:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17293:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17307:4:21",
                "type": ""
              }
            ],
            "src": "17142:356:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17677:230:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17694:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17705:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17687:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17687:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17687:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17728:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17739:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17724:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17724:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17744:2:21",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17717:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17717:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17717:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17767:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17778:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17763:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17763:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17783:34:21",
                        "type": "",
                        "value": "ERC1155: ERC1155Receiver rejecte"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17756:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17756:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17756:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17838:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17849:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17834:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17834:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "17854:10:21",
                        "type": "",
                        "value": "d tokens"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17827:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17827:38:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17827:38:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17874:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17886:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17897:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17882:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17882:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17874:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17654:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17668:4:21",
                "type": ""
              }
            ],
            "src": "17503:404:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18086:239:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18103:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18114:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18096:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18096:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18096:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18137:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18148:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18133:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18133:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18153:2:21",
                        "type": "",
                        "value": "49"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18126:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18126:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18126:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18176:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18187:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18172:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18172:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18192:34:21",
                        "type": "",
                        "value": "Burn: caller does not have coupo"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18165:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18165:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18165:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18247:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18258:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18243:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18243:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18263:19:21",
                        "type": "",
                        "value": "n:burn permission"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18236:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18236:47:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18236:47:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18292:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18304:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18315:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18300:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18300:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18292:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1ecd6a116a4941731c50b376bf71566d9584ecd0299ff8c6670c6da1ca0ecc0a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18063:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18077:4:21",
                "type": ""
              }
            ],
            "src": "17912:413:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18504:226:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18521:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18532:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18514:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18514:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18514:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18555:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18566:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18551:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18551:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18571:2:21",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18544:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18544:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18544:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18594:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18605:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18590:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18590:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18610:34:21",
                        "type": "",
                        "value": "ERC1155: burn amount exceeds bal"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18583:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18583:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18583:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18665:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18676:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18661:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18661:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18681:6:21",
                        "type": "",
                        "value": "ance"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18654:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18654:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18654:34:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18697:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18709:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18720:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18705:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18705:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18697:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18481:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18495:4:21",
                "type": ""
              }
            ],
            "src": "18330:400:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18909:232:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18926:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18937:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18919:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18919:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18919:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18960:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18971:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18956:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18956:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18976:2:21",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18949:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18949:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18949:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18999:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19010:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18995:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18995:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19015:34:21",
                        "type": "",
                        "value": "ERC1155: address zero is not a v"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18988:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18988:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18988:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19070:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19081:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19066:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19066:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19086:12:21",
                        "type": "",
                        "value": "alid owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19059:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19059:40:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19059:40:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19108:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19120:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19131:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19116:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19116:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19108:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18886:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18900:4:21",
                "type": ""
              }
            ],
            "src": "18735:406:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19320:236:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19337:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19348:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19330:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19330:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19330:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19371:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19382:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19367:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19367:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19387:2:21",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19360:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19360:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19360:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19410:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19421:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19406:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19406:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19426:34:21",
                        "type": "",
                        "value": "ERC1155: caller is not token own"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19399:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19399:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19399:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19481:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19492:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19477:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19477:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19497:16:21",
                        "type": "",
                        "value": "er or approved"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19470:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19470:44:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19470:44:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19523:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19535:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19546:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19531:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19531:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19523:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19297:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19311:4:21",
                "type": ""
              }
            ],
            "src": "19146:410:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19735:169:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19752:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19763:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19745:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19745:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19745:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19786:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19797:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19782:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19782:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19802:2:21",
                        "type": "",
                        "value": "19"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19775:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19775:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19775:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19825:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19836:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19821:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19821:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19841:21:21",
                        "type": "",
                        "value": "No available tokens"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19814:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19814:49:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19814:49:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19872:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19884:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19895:2:21",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19880:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19880:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19872:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_4ab85ebcec98b07125cdf4371ed6aad8bd365b4399596da91d1cf8af4c22ee11__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19712:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19726:4:21",
                "type": ""
              }
            ],
            "src": "19561:343:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20083:241:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20100:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20111:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20093:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20093:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20093:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20134:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20145:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20130:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20130:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20150:2:21",
                        "type": "",
                        "value": "51"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20123:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20123:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20123:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20173:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20184:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20169:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20169:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20189:34:21",
                        "type": "",
                        "value": "VerificationCoupon: must have a "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20162:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20162:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20162:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20244:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20255:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20240:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20240:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20260:21:21",
                        "type": "",
                        "value": "minter role to mint"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20233:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20233:49:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20233:49:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20291:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20303:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20314:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20299:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20299:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20291:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6be55a1d7878b900f271b09f02c19e924eff2c961b7bbdfe8e8df0e8e77afb17__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20060:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20074:4:21",
                "type": ""
              }
            ],
            "src": "19909:415:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20503:227:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20520:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20531:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20513:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20513:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20513:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20554:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20565:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20550:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20550:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20570:2:21",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20543:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20543:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20543:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20593:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20604:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20589:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20589:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20609:34:21",
                        "type": "",
                        "value": "ERC1155: transfer to the zero ad"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20582:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20582:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20582:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20664:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20675:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20660:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20660:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20680:7:21",
                        "type": "",
                        "value": "dress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20653:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20653:35:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20653:35:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20697:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20709:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20720:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20705:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20705:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20697:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20480:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20494:4:21",
                "type": ""
              }
            ],
            "src": "20329:401:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20909:166:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20926:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20937:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20919:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20919:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20919:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20960:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20971:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20956:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20956:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20976:2:21",
                        "type": "",
                        "value": "16"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20949:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20949:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20949:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20999:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21010:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20995:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20995:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21015:18:21",
                        "type": "",
                        "value": "Invalid quantity"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20988:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20988:46:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20988:46:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21043:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21055:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21066:2:21",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21051:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21051:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21043:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_70657809104b9cebc8451c31180af28b43909695ec40e8ad5022c571e4e8c258__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20886:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20900:4:21",
                "type": ""
              }
            ],
            "src": "20735:340:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21254:236:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21271:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21282:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21264:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21264:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21264:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21305:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21316:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21301:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21301:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21321:2:21",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21294:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21294:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21294:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21344:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21355:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21340:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21340:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21360:34:21",
                        "type": "",
                        "value": "Initializable: contract is alrea"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21333:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21333:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21333:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21415:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21426:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21411:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21411:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21431:16:21",
                        "type": "",
                        "value": "dy initialized"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21404:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21404:44:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21404:44:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21457:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21469:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21480:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21465:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21465:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21457:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21231:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21245:4:21",
                "type": ""
              }
            ],
            "src": "21080:410:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21669:225:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21686:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21697:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21679:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21679:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21679:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21720:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21731:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21716:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21716:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21736:2:21",
                        "type": "",
                        "value": "35"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21709:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21709:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21709:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21759:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21770:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21755:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21755:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21775:34:21",
                        "type": "",
                        "value": "ERC1155: burn from the zero addr"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21748:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21748:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21748:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21830:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21841:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21826:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21826:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21846:5:21",
                        "type": "",
                        "value": "ess"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21819:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21819:33:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21819:33:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21861:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21873:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21884:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21869:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21869:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21861:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21646:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21660:4:21",
                "type": ""
              }
            ],
            "src": "21495:399:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22073:232:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22090:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22101:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22083:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22083:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22083:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22124:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22135:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22120:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22120:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22140:2:21",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22113:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22113:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22113:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22163:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22174:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22159:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22159:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22179:34:21",
                        "type": "",
                        "value": "ERC1155: insufficient balance fo"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22152:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22152:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22152:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22234:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22245:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22230:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22230:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22250:12:21",
                        "type": "",
                        "value": "r transfer"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22223:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22223:40:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22223:40:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22272:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22284:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22295:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22280:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22280:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22272:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22050:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22064:4:21",
                "type": ""
              }
            ],
            "src": "21899:406:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22484:177:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22501:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22512:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22494:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22494:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22494:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22535:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22546:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22531:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22531:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22551:2:21",
                        "type": "",
                        "value": "27"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22524:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22524:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22524:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22574:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22585:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22570:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22570:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22590:29:21",
                        "type": "",
                        "value": "Burn: bundle has no balance"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22563:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22563:57:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22563:57:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22629:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22641:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22652:2:21",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22637:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22637:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22629:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9dc617bcf2468f55b28a99d9e1900ebffcb563baf72349fbaf55f90e72258414__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22461:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22475:4:21",
                "type": ""
              }
            ],
            "src": "22310:351:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22840:171:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22857:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22868:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22850:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22850:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22850:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22891:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22902:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22887:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22887:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22907:2:21",
                        "type": "",
                        "value": "21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22880:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22880:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22880:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22930:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22941:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22926:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22926:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22946:23:21",
                        "type": "",
                        "value": "The caller is not VNF"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22919:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22919:51:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22919:51:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22979:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22991:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23002:2:21",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22987:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22987:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22979:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22817:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22831:4:21",
                "type": ""
              }
            ],
            "src": "22666:345:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23190:233:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23207:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23218:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23200:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23200:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23200:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23241:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23252:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23237:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23237:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23257:2:21",
                        "type": "",
                        "value": "43"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23230:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23230:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23230:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23280:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23291:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23276:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23276:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23296:34:21",
                        "type": "",
                        "value": "Initializable: contract is not i"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23269:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23269:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23269:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23351:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23362:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23347:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23347:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23367:13:21",
                        "type": "",
                        "value": "nitializing"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23340:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23340:41:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23340:41:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23390:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23402:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23413:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23398:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23398:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23390:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23167:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23181:4:21",
                "type": ""
              }
            ],
            "src": "23016:407:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23602:231:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23619:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23630:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23612:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23612:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23612:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23653:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23664:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23649:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23649:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23669:2:21",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23642:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23642:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23642:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23692:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23703:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23688:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23688:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23708:34:21",
                        "type": "",
                        "value": "ERC1155: setting approval status"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23681:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23681:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23681:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23763:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23774:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23759:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23759:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23779:11:21",
                        "type": "",
                        "value": " for self"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23752:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23752:39:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23752:39:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23800:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23812:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23823:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23808:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23808:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23800:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23579:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23593:4:21",
                "type": ""
              }
            ],
            "src": "23428:405:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24012:231:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24029:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24040:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24022:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24022:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24022:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24063:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24074:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24059:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24059:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24079:2:21",
                        "type": "",
                        "value": "41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24052:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24052:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24052:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24102:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24113:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24098:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24098:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24118:34:21",
                        "type": "",
                        "value": "ERC1155: accounts and ids length"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24091:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24091:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24091:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24173:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24184:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24169:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24169:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24189:11:21",
                        "type": "",
                        "value": " mismatch"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24162:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24162:39:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24162:39:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24210:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24222:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24233:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24218:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24218:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24210:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23989:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24003:4:21",
                "type": ""
              }
            ],
            "src": "23838:405:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24422:230:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24439:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24450:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24432:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24432:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24432:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24473:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24484:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24469:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24469:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24489:2:21",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24462:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24462:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24462:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24512:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24523:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24508:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24508:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24528:34:21",
                        "type": "",
                        "value": "ERC1155: ids and amounts length "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24501:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24501:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24501:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24583:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24594:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24579:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24579:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24599:10:21",
                        "type": "",
                        "value": "mismatch"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24572:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24572:38:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24572:38:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24619:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24631:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24642:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24627:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24627:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24619:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24399:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24413:4:21",
                "type": ""
              }
            ],
            "src": "24248:404:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24831:223:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24848:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24859:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24841:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24841:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24841:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24882:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24893:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24878:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24878:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24898:2:21",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24871:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24871:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24871:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24921:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24932:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24917:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24917:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24937:34:21",
                        "type": "",
                        "value": "ERC1155: mint to the zero addres"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24910:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24910:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24910:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24992:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25003:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24988:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24988:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25008:3:21",
                        "type": "",
                        "value": "s"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24981:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24981:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24981:31:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25021:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25033:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25044:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25029:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25029:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25021:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24808:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24822:4:21",
                "type": ""
              }
            ],
            "src": "24657:397:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25233:242:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25250:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25261:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25243:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25243:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25243:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25284:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25295:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25280:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25280:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25300:2:21",
                        "type": "",
                        "value": "52"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25273:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25273:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25273:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25323:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25334:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25319:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25319:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25339:34:21",
                        "type": "",
                        "value": "ERC1155: transfer to non-ERC1155"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25312:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25312:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25312:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25394:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25405:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25390:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25390:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25410:22:21",
                        "type": "",
                        "value": "Receiver implementer"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25383:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25383:50:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25383:50:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25442:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25454:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25465:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25450:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25450:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25442:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25210:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25224:4:21",
                "type": ""
              }
            ],
            "src": "25059:416:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25654:237:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25671:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25682:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25664:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25664:21:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25664:21:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25705:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25716:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25701:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25701:18:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25721:2:21",
                        "type": "",
                        "value": "47"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25694:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25694:30:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25694:30:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25744:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25755:2:21",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25740:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25740:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25760:34:21",
                        "type": "",
                        "value": "AccessControl: can only renounce"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25733:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25733:62:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25733:62:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25815:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25826:2:21",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25811:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25811:18:21"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25831:17:21",
                        "type": "",
                        "value": " roles for self"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25804:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25804:45:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25804:45:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25858:27:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25870:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25881:3:21",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25866:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25866:19:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25858:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25631:9:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25645:4:21",
                "type": ""
              }
            ],
            "src": "25480:411:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25997:76:21",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26007:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26019:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26030:2:21",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26015:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26015:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "26007:4:21"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26049:9:21"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "26060:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26042:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26042:25:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26042:25:21"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25966:9:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "25977:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25988:4:21",
                "type": ""
              }
            ],
            "src": "25896:177:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26207:119:21",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26217:26:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26229:9:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26240:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26225:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26225:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "26217:4:21"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26259:9:21"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "26270:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26252:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26252:25:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26252:25:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26297:9:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26308:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26293:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26293:18:21"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "26313:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26286:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26286:34:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26286:34:21"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "26168:9:21",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "26179:6:21",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "26187:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "26198:4:21",
                "type": ""
              }
            ],
            "src": "26078:248:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26400:114:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26444:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "26446:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26446:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26446:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "26416:6:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26424:18:21",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "26413:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26413:30:21"
                  },
                  "nodeType": "YulIf",
                  "src": "26410:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26475:33:21",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26491:1:21",
                            "type": "",
                            "value": "5"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "26494:6:21"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "26487:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26487:14:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26503:4:21",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26483:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26483:25:21"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "26475:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_array_address_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "26380:6:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "26391:4:21",
                "type": ""
              }
            ],
            "src": "26331:183:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26567:80:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26594:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "26596:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26596:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26596:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "26583:1:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "26590:1:21"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "26586:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26586:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "26580:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26580:13:21"
                  },
                  "nodeType": "YulIf",
                  "src": "26577:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26625:16:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "26636:1:21"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "26639:1:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26632:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26632:9:21"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "26625:3:21"
                    }
                  ]
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "26550:1:21",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "26553:1:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "26559:3:21",
                "type": ""
              }
            ],
            "src": "26519:128:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26704:116:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26763:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "26765:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26765:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26765:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nodeType": "YulIdentifier",
                                "src": "26735:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "26728:6:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "26728:9:21"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "26721:6:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26721:17:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "26743:1:21"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26754:1:21",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "26750:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26750:6:21"
                              },
                              {
                                "name": "x",
                                "nodeType": "YulIdentifier",
                                "src": "26758:1:21"
                              }
                            ],
                            "functionName": {
                              "name": "div",
                              "nodeType": "YulIdentifier",
                              "src": "26746:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "26746:14:21"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "26740:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26740:21:21"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "26717:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26717:45:21"
                  },
                  "nodeType": "YulIf",
                  "src": "26714:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26794:20:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "26809:1:21"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "26812:1:21"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nodeType": "YulIdentifier",
                      "src": "26805:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26805:9:21"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nodeType": "YulIdentifier",
                      "src": "26794:7:21"
                    }
                  ]
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "26683:1:21",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "26686:1:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nodeType": "YulTypedName",
                "src": "26692:7:21",
                "type": ""
              }
            ],
            "src": "26652:168:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26874:76:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26896:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "26898:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26898:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26898:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "26890:1:21"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "26893:1:21"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "26887:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26887:8:21"
                  },
                  "nodeType": "YulIf",
                  "src": "26884:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26927:17:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "26939:1:21"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "26942:1:21"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "26935:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26935:9:21"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "26927:4:21"
                    }
                  ]
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "26856:1:21",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "26859:1:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "26865:4:21",
                "type": ""
              }
            ],
            "src": "26825:125:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27008:205:21",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27018:10:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "27027:1:21",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "27022:1:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27087:63:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "27112:3:21"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "27117:1:21"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "27108:3:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27108:11:21"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "27131:3:21"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "27136:1:21"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "27127:3:21"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "27127:11:21"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "27121:5:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27121:18:21"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "27101:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27101:39:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27101:39:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "27048:1:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "27051:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "27045:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27045:13:21"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "27059:19:21",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "27061:15:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "27070:1:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27073:2:21",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "27066:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27066:10:21"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "27061:1:21"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "27041:3:21",
                    "statements": []
                  },
                  "src": "27037:113:21"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27176:31:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "27189:3:21"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "27194:6:21"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "27185:3:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27185:16:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27203:1:21",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "27178:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27178:27:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27178:27:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "27165:1:21"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "27168:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "27162:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27162:13:21"
                  },
                  "nodeType": "YulIf",
                  "src": "27159:2:21"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "26986:3:21",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "26991:3:21",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "26996:6:21",
                "type": ""
              }
            ],
            "src": "26955:258:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27265:89:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27292:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "27294:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27294:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27294:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "27285:5:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27278:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27278:13:21"
                  },
                  "nodeType": "YulIf",
                  "src": "27275:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "27323:25:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "27334:5:21"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27345:1:21",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "27341:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27341:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27330:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27330:18:21"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "27323:3:21"
                    }
                  ]
                }
              ]
            },
            "name": "decrement_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27247:5:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "27257:3:21",
                "type": ""
              }
            ],
            "src": "27218:136:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27414:325:21",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "27424:22:21",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27438:1:21",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "27441:4:21"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "27434:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27434:12:21"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "27424:6:21"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27455:38:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "27485:4:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27491:1:21",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "27481:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27481:12:21"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "27459:18:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27532:31:21",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "27534:27:21",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "27548:6:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27556:4:21",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "27544:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27544:17:21"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "27534:6:21"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "27512:18:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27505:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27505:26:21"
                  },
                  "nodeType": "YulIf",
                  "src": "27502:2:21"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27622:111:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27643:1:21",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "27650:3:21",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "27655:10:21",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "27646:3:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27646:20:21"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "27636:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27636:31:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27636:31:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27687:1:21",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27690:4:21",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "27680:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27680:15:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27680:15:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27715:1:21",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27718:4:21",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "27708:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27708:15:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27708:15:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "27578:18:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "27601:6:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27609:2:21",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "27598:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27598:14:21"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "27575:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27575:38:21"
                  },
                  "nodeType": "YulIf",
                  "src": "27572:2:21"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "27394:4:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "27403:6:21",
                "type": ""
              }
            ],
            "src": "27359:380:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27791:202:21",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27801:58:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "27823:6:21"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "27839:4:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "27845:2:21",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "27835:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27835:13:21"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "27854:2:21",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "27850:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27850:7:21"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "27831:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27831:27:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27819:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27819:40:21"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "27805:10:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27934:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "27936:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27936:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27936:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "27877:10:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27889:18:21",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "27874:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27874:34:21"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "27913:10:21"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "27925:6:21"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "27910:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27910:22:21"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "27871:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27871:62:21"
                  },
                  "nodeType": "YulIf",
                  "src": "27868:2:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27972:2:21",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "27976:10:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27965:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27965:22:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27965:22:21"
                }
              ]
            },
            "name": "finalize_allocation",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "27773:6:21",
                "type": ""
              },
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "27781:4:21",
                "type": ""
              }
            ],
            "src": "27744:249:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28045:88:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "28076:22:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "28078:16:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "28078:18:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "28078:18:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "28061:5:21"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28072:1:21",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "28068:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28068:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "28058:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28058:17:21"
                  },
                  "nodeType": "YulIf",
                  "src": "28055:2:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28107:20:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "28118:5:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28125:1:21",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28114:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28114:13:21"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "28107:3:21"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "28027:5:21",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "28037:3:21",
                "type": ""
              }
            ],
            "src": "27998:135:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28170:95:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28187:1:21",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28194:3:21",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28199:10:21",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "28190:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28190:20:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28180:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28180:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28180:31:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28227:1:21",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28230:4:21",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28220:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28220:15:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28220:15:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28251:1:21",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28254:4:21",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "28244:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28244:15:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28244:15:21"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "28138:127:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28302:95:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28319:1:21",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28326:3:21",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28331:10:21",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "28322:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28322:20:21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28312:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28312:31:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28312:31:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28359:1:21",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28362:4:21",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28352:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28352:15:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28352:15:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28383:1:21",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28386:4:21",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "28376:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28376:15:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28376:15:21"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "28270:127:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28445:142:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "28490:91:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "sig",
                              "nodeType": "YulIdentifier",
                              "src": "28519:3:21"
                            },
                            {
                              "name": "sig",
                              "nodeType": "YulIdentifier",
                              "src": "28524:3:21"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28529:1:21",
                              "type": "",
                              "value": "4"
                            }
                          ],
                          "functionName": {
                            "name": "returndatacopy",
                            "nodeType": "YulIdentifier",
                            "src": "28504:14:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "28504:27:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "28504:27:21"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "28544:27:21",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28555:3:21",
                              "type": "",
                              "value": "224"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "sig",
                                  "nodeType": "YulIdentifier",
                                  "src": "28566:3:21"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "28560:5:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "28560:10:21"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "28551:3:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "28551:20:21"
                        },
                        "variableNames": [
                          {
                            "name": "sig",
                            "nodeType": "YulIdentifier",
                            "src": "28544:3:21"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "28461:14:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28461:16:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28479:1:21",
                        "type": "",
                        "value": "3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "28458:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28458:23:21"
                  },
                  "nodeType": "YulIf",
                  "src": "28455:2:21"
                }
              ]
            },
            "name": "return_data_selector",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "sig",
                "nodeType": "YulTypedName",
                "src": "28437:3:21",
                "type": ""
              }
            ],
            "src": "28402:185:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28639:624:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "28679:9:21",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "28681:5:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "28655:14:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28655:16:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28673:4:21",
                        "type": "",
                        "value": "0x44"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "28652:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28652:26:21"
                  },
                  "nodeType": "YulIf",
                  "src": "28649:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28697:21:21",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28715:2:21",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "28709:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28709:9:21"
                  },
                  "variables": [
                    {
                      "name": "data",
                      "nodeType": "YulTypedName",
                      "src": "28701:4:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28727:16:21",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28741:1:21",
                        "type": "",
                        "value": "3"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "28737:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28737:6:21"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "28731:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "28767:4:21"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28773:1:21",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "returndatasize",
                              "nodeType": "YulIdentifier",
                              "src": "28780:14:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "28780:16:21"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "28798:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28776:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28776:25:21"
                      }
                    ],
                    "functionName": {
                      "name": "returndatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "28752:14:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28752:50:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28752:50:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28811:25:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "28831:4:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "28825:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28825:11:21"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "28815:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28845:26:21",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "returndatasize",
                      "nodeType": "YulIdentifier",
                      "src": "28855:14:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28855:16:21"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "28849:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28880:28:21",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "28890:18:21",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "28884:2:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "28966:9:21",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "28968:5:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "28926:6:21"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "28934:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "28923:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28923:14:21"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "28946:6:21"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "28954:4:21",
                                "type": "",
                                "value": "0x24"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "28942:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "28942:17:21"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "28961:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "28939:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28939:25:21"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "28920:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28920:45:21"
                  },
                  "nodeType": "YulIf",
                  "src": "28917:2:21"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "28984:28:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "28999:4:21"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "29005:6:21"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28995:3:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28995:17:21"
                  },
                  "variables": [
                    {
                      "name": "msg",
                      "nodeType": "YulTypedName",
                      "src": "28988:3:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "29021:24:21",
                  "value": {
                    "arguments": [
                      {
                        "name": "msg",
                        "nodeType": "YulIdentifier",
                        "src": "29041:3:21"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "29035:5:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29035:10:21"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "29025:6:21",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29072:9:21",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "29074:5:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "29060:6:21"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "29068:2:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "29057:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29057:14:21"
                  },
                  "nodeType": "YulIf",
                  "src": "29054:2:21"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29163:9:21",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "29165:5:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "29104:3:21"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "29109:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "29100:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29100:16:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29118:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29096:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29096:27:21"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "29133:4:21"
                              },
                              {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "29139:14:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29139:16:21"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "29129:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29129:27:21"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "29158:2:21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29125:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29125:36:21"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "29093:2:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29093:69:21"
                  },
                  "nodeType": "YulIf",
                  "src": "29090:2:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "29201:4:21"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "29215:6:21"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "29223:6:21"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "29211:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29211:19:21"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29232:4:21",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29207:3:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29207:30:21"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "29181:19:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29181:57:21"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29181:57:21"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29247:10:21",
                  "value": {
                    "name": "msg",
                    "nodeType": "YulIdentifier",
                    "src": "29254:3:21"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "29247:3:21"
                    }
                  ]
                }
              ]
            },
            "name": "try_decode_error_message",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "28631:3:21",
                "type": ""
              }
            ],
            "src": "28592:671:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29313:86:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29377:16:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29386:1:21",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29389:1:21",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "29379:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29379:12:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "29379:12:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "29336:5:21"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "29347:5:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29362:3:21",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29367:1:21",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "29358:3:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29358:11:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29371:1:21",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "29354:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29354:19:21"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "29343:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29343:31:21"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "29333:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29333:42:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "29326:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29326:50:21"
                  },
                  "nodeType": "YulIf",
                  "src": "29323:2:21"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "29302:5:21",
                "type": ""
              }
            ],
            "src": "29268:131:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29446:76:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29500:16:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29509:1:21",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29512:1:21",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "29502:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29502:12:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "29502:12:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "29469:5:21"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "29490:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "29483:6:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29483:13:21"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "29476:6:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29476:21:21"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "29466:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29466:32:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "29459:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29459:40:21"
                  },
                  "nodeType": "YulIf",
                  "src": "29456:2:21"
                }
              ]
            },
            "name": "validator_revert_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "29435:5:21",
                "type": ""
              }
            ],
            "src": "29404:118:21"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29571:87:21",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29636:16:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29645:1:21",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29648:1:21",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "29638:6:21"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29638:12:21"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "29638:12:21"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "29594:5:21"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "29605:5:21"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29616:3:21",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29621:10:21",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "29612:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29612:20:21"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "29601:3:21"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29601:32:21"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "29591:2:21"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29591:43:21"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "29584:6:21"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29584:51:21"
                  },
                  "nodeType": "YulIf",
                  "src": "29581:2:21"
                }
              ]
            },
            "name": "validator_revert_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "29560:5:21",
                "type": ""
              }
            ],
            "src": "29527:131:21"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_address_dyn(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := memPtr\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), array)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let _5 := array_allocation_size_array_address_dyn(_3)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _5)\n        let dst := memPtr\n        mstore(memPtr, _3)\n        dst := add(memPtr, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := memPtr\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value3 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n        let value := calldataload(add(headStart, 128))\n        validator_revert_address(value)\n        value4 := value\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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        mstore(pos, \"AccessControl: account \")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 23), \" is missing role \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n        end := add(add(_1, length_1), 40)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_array_uint256_dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_array_uint256_dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_stringliteral_8aa567986b0456a81ce203101ebba63c53ec1e51fd89bf6b7b00d0f87663d2e9__to_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), 11)\n        mstore(add(headStart, 96), \"coupon:burn\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 256\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), _1)\n        let tail_1 := abi_encode_bytes(value2, add(headStart, _1))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_bytes(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value4, tail_2)\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), value7)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint256_t_uint256_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 192)\n        let tail_1 := abi_encode_bytes(value4, add(headStart, 192))\n        mstore(add(headStart, 160), sub(tail_1, headStart))\n        tail := abi_encode_bytes(value5, tail_1)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_uint256_dyn(value1, tail_1)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Strings: hex length insufficient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC1155: ERC1155Receiver rejecte\")\n        mstore(add(headStart, 96), \"d tokens\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_1ecd6a116a4941731c50b376bf71566d9584ecd0299ff8c6670c6da1ca0ecc0a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"Burn: caller does not have coupo\")\n        mstore(add(headStart, 96), \"n:burn permission\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC1155: burn amount exceeds bal\")\n        mstore(add(headStart, 96), \"ance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_415a1b99e1fd4a18cf87c08995f5a9130182e8d76e9c17c497bfebaaef9265ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: address zero is not a v\")\n        mstore(add(headStart, 96), \"alid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_47c72b42072ed6c647dec3a0a5c88bec44d3e901c64659bff94ecce0a0323156__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1155: caller is not token own\")\n        mstore(add(headStart, 96), \"er or approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4ab85ebcec98b07125cdf4371ed6aad8bd365b4399596da91d1cf8af4c22ee11__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"No available tokens\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6be55a1d7878b900f271b09f02c19e924eff2c961b7bbdfe8e8df0e8e77afb17__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"VerificationCoupon: must have a \")\n        mstore(add(headStart, 96), \"minter role to mint\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC1155: transfer to the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_70657809104b9cebc8451c31180af28b43909695ec40e8ad5022c571e4e8c258__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Invalid quantity\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC1155: burn from the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"ERC1155: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r transfer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9dc617bcf2468f55b28a99d9e1900ebffcb563baf72349fbaf55f90e72258414__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Burn: bundle has no balance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"The caller is not VNF\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Initializable: contract is not i\")\n        mstore(add(headStart, 96), \"nitializing\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: setting approval status\")\n        mstore(add(headStart, 96), \" for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC1155: accounts and ids length\")\n        mstore(add(headStart, 96), \" mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC1155: ids and amounts length \")\n        mstore(add(headStart, 96), \"mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC1155: mint to the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f591f7b75ffc499e05f8b34c3364b2eceff651378d9549db1d5d67c0d8255c5d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155: transfer to non-ERC1155\")\n        mstore(add(headStart, 96), \"Receiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n        mstore(add(headStart, 96), \" roles for self\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\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        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function finalize_allocation(memPtr, size)\n    {\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function return_data_selector() -> sig\n    {\n        if gt(returndatasize(), 3)\n        {\n            returndatacopy(sig, sig, 4)\n            sig := shr(224, mload(sig))\n        }\n    }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        let data := mload(64)\n        let _1 := not(3)\n        returndatacopy(data, 4, add(returndatasize(), _1))\n        let offset := mload(data)\n        let _2 := returndatasize()\n        let _3 := 0xffffffffffffffff\n        if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _3) { leave }\n        if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n        finalize_allocation(data, add(add(offset, length), 0x20))\n        ret := msg\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n}",
      "id": 21,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "1068:5021:20:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "1068:5021:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2614:227:5;;;;;;:::i;:::-;;:::i;:::-;;;16683:25:21;;;16671:2;16656:18;2614:227:5;;;;;;;;5771:207:20;;;;;;:::i;:::-;;:::i;:::-;;;16510:14:21;;16503:22;16485:41;;16473:2;16458:18;5771:207:20;16440:92:21;2369:103:5;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4855:129:1:-;;;;;;:::i;:::-;4929:7;4955:12;;;:6;:12;;;;;:22;;;;4855:129;5984:103:20;;;:::i;4471:426:5:-;;;;;;:::i;:::-;;:::i;:::-;;5280:145:1;;;;;;:::i;:::-;;:::i;2368:75:20:-;2433:3;;-1:-1:-1;;;;;2433:3:20;2368:75;;;-1:-1:-1;;;;;12076:32:21;;;12058:51;;12046:2;12031:18;2368:75:20;12013:102:21;6389:214:1;;;;;;:::i;:::-;;:::i;4272:831:20:-;;;;;;:::i;:::-;;:::i;1867:312::-;;;;;;:::i;:::-;;:::i;2998:486:5:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3658:608:20:-;;;;;;:::i;:::-;;:::i;1791:151:0:-;;;;;;:::i;:::-;;:::i;3350:145:1:-;;;;;;:::i;:::-;;:::i;2320:49::-;;2365:4;2320:49;;3552:153:5;;;;;;:::i;:::-;;:::i;2110:140:0:-;;;;;;:::i;:::-;;:::i;1255:62:20:-;;1293:24;1255:62;;5705:147:1;;;;;;:::i;:::-;;:::i;2449:129:20:-;;;;;;:::i;:::-;2506:4;2548:23;;;:14;:23;;;;;;2529:15;:42;;;2449:129;3772:166:5;;;;;;:::i;:::-;-1:-1:-1;;;;;3894:27:5;;;3871:4;3894:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3772:166;2584:694:20;;;;;;:::i;:::-;;:::i;4005:394:5:-;;;;;;:::i;:::-;;:::i;2185:177:20:-;;;;;;:::i;:::-;;:::i;2614:227:5:-;2700:7;-1:-1:-1;;;;;2727:21:5;;2719:76;;;;-1:-1:-1;;;2719:76:5;;18937:2:21;2719:76:5;;;18919:21:21;18976:2;18956:18;;;18949:30;19015:34;18995:18;;;18988:62;-1:-1:-1;;;19066:18:21;;;19059:40;19116:19;;2719:76:5;;;;;;;;;-1:-1:-1;2812:13:5;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;2812:22:5;;;;;;;;;;2614:227;;;;;:::o;5771:207:20:-;5912:4;5935:36;5959:11;5935:23;:36::i;2369:103:5:-;2429:13;2461:4;2454:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2369:103;;;:::o;5984::20:-;6038:13;6070:10;6063:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5984:103;:::o;4471:426:5:-;-1:-1:-1;;;;;4696:20:5;;965:10:10;4696:20:5;;:60;;-1:-1:-1;4720:36:5;4737:4;965:10:10;3772:166:5;:::i;4720:36::-;4675:153;;;;-1:-1:-1;;;4675:153:5;;;;;;;:::i;:::-;4838:52;4861:4;4867:2;4871:3;4876:7;4885:4;4838:22;:52::i;:::-;4471:426;;;;;:::o;5280:145:1:-;4929:7;4955:12;;;:6;:12;;;;;:22;;;2798:16;2809:4;2798:10;:16::i;:::-;5393:25:::1;5404:4;5410:7;5393:10;:25::i;:::-;5280:145:::0;;;:::o;6389:214::-;-1:-1:-1;;;;;6484:23:1;;965:10:10;6484:23:1;6476:83;;;;-1:-1:-1;;;6476:83:1;;25682:2:21;6476:83:1;;;25664:21:21;25721:2;25701:18;;;25694:30;25760:34;25740:18;;;25733:62;-1:-1:-1;;;25811:18:21;;;25804:45;25866:19;;6476:83:1;25654:237:21;6476:83:1;6570:26;6582:4;6588:7;6570:11;:26::i;:::-;6389:214;;:::o;4272:831:20:-;4424:11;;:56;;;-1:-1:-1;;;4424:56:20;;4454:10;4424:56;;;13728:51:21;13795:18;;;13788:30;;;;13854:2;13834:18;;;13827:30;-1:-1:-1;;;13873:18:21;;;13866:41;-1:-1:-1;;;;;4424:11:20;;;;:29;;13924:19:21;;4424:56:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4416:118;;;;-1:-1:-1;;;4416:118:20;;18114:2:21;4416:118:20;;;18096:21:21;18153:2;18133:18;;;18126:30;18192:34;18172:18;;;18165:62;-1:-1:-1;;;18243:18:21;;;18236:47;18300:19;;4416:118:20;18086:239:21;4416:118:20;4562:11;;:35;;-1:-1:-1;;;4562:35:20;;-1:-1:-1;;;;;12076:32:21;;;4562:35:20;;;12058:51:21;4544:15:20;;4562:11;;:25;;12031:18:21;;4562:35:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4544:53;;4645:1;4615:27;4625:7;4634;4615:9;:27::i;:::-;:31;4607:71;;;;-1:-1:-1;;;4607:71:20;;22512:2:21;4607:71:20;;;22494:21:21;22551:2;22531:18;;;22524:30;22590:29;22570:18;;;22563:57;22637:18;;4607:71:20;22484:177:21;4607:71:20;4688:26;4706:7;4688:17;:26::i;:::-;4725;4731:7;4740;4749:1;4725:5;:26::i;:::-;4761:15;4779:27;4789:7;4798;4779:9;:27::i;:::-;4816:18;4837:23;;;:14;:23;;;;;;4761:45;;-1:-1:-1;4874:12:20;4870:118;;4909:23;;;;:14;:23;;;;;4902:30;4946:31;4924:7;4969;4946:13;:31::i;:::-;5002:94;5013:7;5022;5031;5040:6;5048:9;5059:7;5068:10;5080:15;5002:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;4272:831;;;;;;;;:::o;1867:312::-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:9;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;21282:2:21;3325:201:4;;;21264:21:21;21321:2;21301:18;;;21294:30;21360:34;21340:18;;;21333:62;-1:-1:-1;;;21411:18:21;;;21404:44;21465:19;;3325:201:4;21254:236:21;3325:201:4;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;1969:47:20::1;2003:12;1969:33;:47::i;:::-;2026:3;:16:::0;;-1:-1:-1;;;;;;2026:16:20::1;2032:10;2026:16;::::0;;2052:22;;::::1;::::0;:10:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2085:42:20::1;2365:4:1;2116:10:20;2085;:42::i;:::-;2137:35;1293:24;2161:10;2137;:35::i;:::-;3651:14:4::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;16871:36:21;;3721:14:4;;16859:2:21;16844:18;3721:14:4;;;;;;;1867:312:20;;;:::o;2998:486:5:-;3131:16;3186:3;:10;3167:8;:15;:29;3159:83;;;;-1:-1:-1;;;3159:83:5;;24040:2:21;3159:83:5;;;24022:21:21;24079:2;24059:18;;;24052:30;24118:34;24098:18;;;24091:62;-1:-1:-1;;;24169:18:21;;;24162:39;24218:19;;3159:83:5;24012:231:21;3159:83:5;3253:30;3300:8;:15;3286:30;;;;;;-1:-1:-1;;;3286:30:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3286:30:5;;3253:63;;3332:9;3327:120;3351:8;:15;3347:1;:19;3327:120;;;3406:30;3416:8;3425:1;3416:11;;;;;;-1:-1:-1;;;3416:11:5;;;;;;;;;;;;;;;3429:3;3433:1;3429:6;;;;;;-1:-1:-1;;;3429:6:5;;;;;;;;;;;;;;;3406:9;:30::i;:::-;3387:13;3401:1;3387:16;;;;;;-1:-1:-1;;;3387:16:5;;;;;;;;;;;;;;;;;;:49;3368:3;;;:::i;:::-;;;3327:120;;;-1:-1:-1;3464:13:5;2998:486;-1:-1:-1;;;2998:486:5:o;3658:608:20:-;3807:32;1293:24;3828:10;3807:7;:32::i;:::-;3799:96;;;;-1:-1:-1;;;3799:96:20;;20111:2:21;3799:96:20;;;20093:21:21;20150:2;20130:18;;;20123:30;20189:34;20169:18;;;20162:62;-1:-1:-1;;;20240:18:21;;;20233:49;20299:19;;3799:96:20;20083:241:21;3799:96:20;3924:1;3913:8;:12;3905:41;;;;-1:-1:-1;;;3905:41:20;;20937:2:21;3905:41:20;;;20919:21:21;20976:2;20956:18;;;20949:30;-1:-1:-1;;;20995:18:21;;;20988:46;21051:18;;3905:41:20;20909:166:21;3905:41:20;3957:15;3975:25;:15;929:14:11;;838:112;3975:25:20;3957:43;;4010:32;4016:2;4020:7;4029:8;4010:32;;;;;;;;;;;;:5;:32::i;:::-;-1:-1:-1;;;;;4052:15:20;;;;;;:11;:15;;;;;;;;:29;;;;;;;;;;;;;;;;;4091:23;;;:14;:23;;;;;:41;;;4142:27;:15;1043:19:11;;1061:1;1043:19;;;956:123;4142:27:20;4184:75;4201:2;4205:7;4214:15;4231:8;4241:7;4250:8;4184:75;;;;;;;;;;;:::i;:::-;;;;;;;;3658:608;;;;;;:::o;1791:151:0:-;1881:7;1907:18;;;:12;:18;;;;;:28;;1929:5;1907:21;:28::i;:::-;1900:35;1791:151;-1:-1:-1;;;1791:151:0:o;3350:145:1:-;3436:4;3459:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3459:29:1;;;;;;;;;;;;;;;3350:145::o;3552:153:5:-;3646:52;965:10:10;3679:8:5;3689;3646:18;:52::i;2110:140:0:-;2190:7;2216:18;;;:12;:18;;;;;:27;;:25;:27::i;5705:147:1:-;4929:7;4955:12;;;:6;:12;;;;;:22;;;2798:16;2809:4;2798:10;:16::i;:::-;5819:26:::1;5831:4;5837:7;5819:11;:26::i;2584:694:20:-:0;2680:11;;:35;;-1:-1:-1;;;2680:35:20;;-1:-1:-1;;;;;12076:32:21;;;2680:35:20;;;12058:51:21;2643:7:20;;;;2680:11;;;:25;;12031:18:21;;2680:35:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2744:20:20;;2725:16;2744:20;;;:11;:20;;;;;:27;2662:53;;-1:-1:-1;2789:13:20;2781:45;;;;-1:-1:-1;;;2781:45:20;;19763:2:21;2781:45:20;;;19745:21:21;19802:2;19782:18;;;19775:30;-1:-1:-1;;;19821:18:21;;;19814:49;19880:18;;2781:45:20;19735:169:21;2781:45:20;-1:-1:-1;;2837:21:20;;2920:246;2944:8;2940:1;:12;2920:246;;;-1:-1:-1;;;;;2990:20:20;;;;;;:11;:20;;;;;:23;;3011:1;;2990:23;;;;-1:-1:-1;;;2990:23:20;;;;;;;;;;;;;;;;;2973:40;;3032:25;3042:14;2506:4;2548:23;;;:14;:23;;;;;;2529:15;:42;;;2449:129;3032:25;3031:26;:60;;;;;3078:13;3061:14;:30;3031:60;3027:129;;;3127:14;3111:30;;3027:129;2954:3;;;;:::i;:::-;;;;2920:246;;;;-1:-1:-1;;3183:13:20;:34;;3175:66;;;;-1:-1:-1;;;3175:66:20;;19763:2:21;3175:66:20;;;19745:21:21;19802:2;19782:18;;;19775:30;-1:-1:-1;;;19821:18:21;;;19814:49;19880:18;;3175:66:20;19735:169:21;3175:66:20;-1:-1:-1;3258:13:20;2584:694;-1:-1:-1;;;;2584:694:20:o;4005:394:5:-;-1:-1:-1;;;;;4205:20:5;;965:10:10;4205:20:5;;:60;;-1:-1:-1;4229:36:5;4246:4;965:10:10;3772:166:5;:::i;4229:36::-;4184:153;;;;-1:-1:-1;;;4184:153:5;;;;;;;:::i;:::-;4347:45;4365:4;4371:2;4375;4379:6;4387:4;4347:17;:45::i;2185:177:20:-;2277:3;;-1:-1:-1;;;;;2277:3:20;2263:10;:17;2255:51;;;;-1:-1:-1;;;2255:51:20;;22868:2:21;2255:51:20;;;22850:21:21;22907:2;22887:18;;;22880:30;-1:-1:-1;;;22926:18:21;;;22919:51;22987:18;;2255:51:20;22840:171:21;2255:51:20;2316:11;:39;;-1:-1:-1;;;;;;2316:39:20;-1:-1:-1;;;;;2316:39:20;;;;;;;;;;2185:177::o;1621:349:5:-;1745:4;-1:-1:-1;;;;;;1780:52:5;;-1:-1:-1;;;1780:52:5;;:131;;-1:-1:-1;;;;;;;1848:63:5;;-1:-1:-1;;;1848:63:5;1780:131;:183;;;;1927:36;1951:11;1927:23;:36::i;6640:1115::-;6860:7;:14;6846:3;:10;:28;6838:81;;;;-1:-1:-1;;;6838:81:5;;24450:2:21;6838:81:5;;;24432:21:21;24489:2;24469:18;;;24462:30;24528:34;24508:18;;;24501:62;-1:-1:-1;;;24579:18:21;;;24572:38;24627:19;;6838:81:5;24422:230:21;6838:81:5;-1:-1:-1;;;;;6937:16:5;;6929:66;;;;-1:-1:-1;;;6929:66:5;;;;;;;:::i;:::-;965:10:10;7006:16:5;7119:411;7143:3;:10;7139:1;:14;7119:411;;;7174:10;7187:3;7191:1;7187:6;;;;;;-1:-1:-1;;;7187:6:5;;;;;;;;;;;;;;;7174:19;;7207:14;7224:7;7232:1;7224:10;;;;;;-1:-1:-1;;;7224:10:5;;;;;;;;;;;;;;;;;;;;7249:19;7271:13;;;:9;:13;;;;;;-1:-1:-1;;;;;7271:19:5;;;;;;;;;;;;7224:10;;-1:-1:-1;7312:21:5;;;;7304:76;;;;-1:-1:-1;;;7304:76:5;;;;;;;:::i;:::-;7422:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;7422:19:5;;;;;;;;;;7444:20;;;7422:42;;7492:17;;;;;;;:27;;7444:20;;7422:13;7492:27;;7444:20;;7492:27;:::i;:::-;;;;;;;;7119:411;;;7155:3;;;;:::i;:::-;;;7119:411;;;;7575:2;-1:-1:-1;;;;;7545:47:5;7569:4;-1:-1:-1;;;;;7545:47:5;7559:8;-1:-1:-1;;;;;7545:47:5;;7579:3;7584:7;7545:47;;;;;;;:::i;:::-;;;;;;;;7673:75;7709:8;7719:4;7725:2;7729:3;7734:7;7743:4;7673:35;:75::i;:::-;6640:1115;;;;;;:::o;3789:103:1:-;3855:30;3866:4;965:10:10;3855::1;:30::i;:::-;3789:103;:::o;2338:166:0:-;2425:31;2442:4;2448:7;2425:16;:31::i;:::-;2466:18;;;;:12;:18;;;;;:31;;2489:7;2466:22;:31::i;2593:171::-;2681:32;2699:4;2705:7;2681:17;:32::i;:::-;2723:18;;;;:12;:18;;;;;:34;;2749:7;2723:25;:34::i;5109:656:20:-;-1:-1:-1;;;;;5194:24:20;;5175:16;5194:24;;;:11;:24;;;;;:31;;5175:16;5290:469;5301:8;5297:1;:12;5290:469;;;-1:-1:-1;;;;;5342:24:20;;;;;;:11;:24;;;;;:27;;5367:1;;5342:27;;;;-1:-1:-1;;;5342:27:20;;;;;;;;;;;;;;;;;5325:44;;5387:25;5397:14;2506:4;2548:23;;;:14;:23;;;;;;2529:15;:42;;;2449:129;5387:25;5383:366;;;5432:15;5450:38;5460:11;5473:14;5450:9;:38::i;:::-;5432:56;;5506:43;5512:11;5525:14;5541:7;5506:5;:43::i;:::-;5574:30;;;;:14;:30;;;;;5567:37;5622:42;5589:14;5652:11;5622:13;:42::i;:::-;5682:10;;;;:::i;:::-;;;;5383:366;5290:469;;5383:366;5731:3;;;;:::i;:::-;;;;5290:469;;;5109:656;;;;:::o;11175:756:5:-;-1:-1:-1;;;;;11267:18:5;;11259:66;;;;-1:-1:-1;;;11259:66:5;;21697:2:21;11259:66:5;;;21679:21:21;21736:2;21716:18;;;21709:30;21775:34;21755:18;;;21748:62;-1:-1:-1;;;21826:18:21;;;21819:33;21869:19;;11259:66:5;21669:225:21;11259:66:5;965:10:10;11336:16:5;11400:21;11418:2;11400:17;:21::i;:::-;11377:44;;11431:24;11458:25;11476:6;11458:17;:25::i;:::-;11494:66;;;;;;;;;-1:-1:-1;11494:66:5;;;;11593:13;;;:9;:13;;;;;-1:-1:-1;;;;;11593:19:5;;;;;;;;11431:52;;-1:-1:-1;11630:21:5;;;;11622:70;;;;-1:-1:-1;;;11622:70:5;;18532:2:21;11622:70:5;;;18514:21:21;18571:2;18551:18;;;18544:30;18610:34;18590:18;;;18583:62;-1:-1:-1;;;18661:18:21;;;18654:34;18705:19;;11622:70:5;18504:226:21;11622:70:5;11726:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;11726:19:5;;;;;;;;;;;;11748:20;;;11726:42;;11794:54;;26252:25:21;;;26293:18;;;26286:34;;;11726:19:5;;11794:54;;;;;;26225:18:21;11794:54:5;;;;;;;11859:65;;;;;;;;;11903:1;11859:65;;;11175:756;;;;;;;:::o;3284:368:20:-;-1:-1:-1;;;;;3393:24:20;;3363:27;3393:24;;;:11;:24;;;;;;3427:219;3451:16;;3447:20;;3427:219;;;3503:9;3513:1;3503:12;;;;;;-1:-1:-1;;;3503:12:20;;;;;;;;;;;;;;;;;3492:7;:23;3488:148;;;3560:16;;3550:9;;3560:20;;3579:1;;3560:20;:::i;:::-;3550:31;;;;;;-1:-1:-1;;;3550:31:20;;;;;;;;;;;;;;;;;3535:9;3545:1;3535:12;;;;;;-1:-1:-1;;;3535:12:20;;;;;;;;;;;;;;;;:46;;;;3606:9;:15;;;;;-1:-1:-1;;;3606:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;3599:22;;3284:368;;:::o;3488:148::-;3469:3;;;;:::i;:::-;;;;3427:219;;1321:117:5;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;;;;;;:::i;:::-;1401:30:5::1;1426:4;1401:24;:30::i;7288:110:1:-:0;7366:25;7377:4;7383:7;7366:10;:25::i;9037:671:5:-;-1:-1:-1;;;;;9146:16:5;;9138:62;;;;-1:-1:-1;;;9138:62:5;;24859:2:21;9138:62:5;;;24841:21:21;24898:2;24878:18;;;24871:30;24937:34;24917:18;;;24910:62;-1:-1:-1;;;24988:18:21;;;24981:31;25029:19;;9138:62:5;24831:223:21;9138:62:5;965:10:10;9211:16:5;9275:21;9293:2;9275:17;:21::i;:::-;9252:44;;9306:24;9333:25;9351:6;9333:17;:25::i;:::-;9306:52;;9446:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;9446:17:5;;;;;;;;;:27;;9467:6;;9446:13;:27;;9467:6;;9446:27;:::i;:::-;;;;-1:-1:-1;;9488:52:5;;;26252:25:21;;;26308:2;26293:18;;26286:34;;;-1:-1:-1;;;;;9488:52:5;;;;9521:1;;9488:52;;;;;;26225:18:21;9488:52:5;;;;;;;9627:74;9658:8;9676:1;9680:2;9684;9688:6;9696:4;9627:30;:74::i;9574:156:17:-;9648:7;9698:22;9702:3;9714:5;9698:3;:22::i;13219:293:5:-;13339:8;-1:-1:-1;;;;;13330:17:5;:5;-1:-1:-1;;;;;13330:17:5;;;13322:71;;;;-1:-1:-1;;;13322:71:5;;23630:2:21;13322:71:5;;;23612:21:21;23669:2;23649:18;;;23642:30;23708:34;23688:18;;;23681:62;-1:-1:-1;;;23759:18:21;;;23752:39;23808:19;;13322:71:5;23602:231:21;13322:71:5;-1:-1:-1;;;;;13403:25:5;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13403:46:5;;;;;;;;;;13464:41;;16485::21;;;13464::5;;16458:18:21;13464:41:5;;;;;;;13219:293;;;:::o;9117:115:17:-;9180:7;9206:19;9214:3;4556:18;;4474:107;5347:947:5;-1:-1:-1;;;;;5528:16:5;;5520:66;;;;-1:-1:-1;;;5520:66:5;;;;;;;:::i;:::-;965:10:10;5597:16:5;5661:21;5679:2;5661:17;:21::i;:::-;5638:44;;5692:24;5719:25;5737:6;5719:17;:25::i;:::-;5692:52;;5826:19;5848:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5848:19:5;;;;;;;;;;5885:21;;;;5877:76;;;;-1:-1:-1;;;5877:76:5;;;;;;;:::i;:::-;5987:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5987:19:5;;;;;;;;;;6009:20;;;5987:42;;6049:17;;;;;;;:27;;6009:20;;5987:13;6049:27;;6009:20;;6049:27;:::i;:::-;;;;-1:-1:-1;;6092:46:5;;;26252:25:21;;;26308:2;26293:18;;26286:34;;;-1:-1:-1;;;;;6092:46:5;;;;;;;;;;;;;;26225:18:21;6092:46:5;;;;;;;6219:68;6250:8;6260:4;6266:2;6270;6274:6;6282:4;6219:30;:68::i;:::-;5347:947;;;;;;;;;:::o;983:223:0:-;1068:4;-1:-1:-1;;;;;;1091:68:0;;-1:-1:-1;;;1091:68:0;;:108;;;1163:36;1187:11;1163:23;:36::i;16567:814:5:-;-1:-1:-1;;;;;16799:13:5;;1713:19:9;:23;16795:580:5;;16834:90;;-1:-1:-1;;;16834:90:5;;-1:-1:-1;;;;;16834:54:5;;;;;:90;;16889:8;;16899:4;;16905:3;;16910:7;;16919:4;;16834:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16834:90:5;;;;;;;;-1:-1:-1;;16834:90:5;;;;;;;;;;;;:::i;:::-;;;16830:535;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;17241:6;17234:14;;-1:-1:-1;;;17234:14:5;;;;;;;;:::i;16830:535::-;;;17288:62;;-1:-1:-1;;;17288:62:5;;25261:2:21;17288:62:5;;;25243:21:21;25300:2;25280:18;;;25273:30;25339:34;25319:18;;;25312:62;-1:-1:-1;;;25390:18:21;;;25383:50;25450:19;;17288:62:5;25233:242:21;16830:535:5;-1:-1:-1;;;;;;17003:71:5;;-1:-1:-1;;;17003:71:5;16999:168;;17098:50;;-1:-1:-1;;;17098:50:5;;;;;;;:::i;4173:501:1:-;4261:22;4269:4;4275:7;4261;:22::i;:::-;4256:412;;4444:39;4475:7;4444:30;:39::i;:::-;4554:49;4593:4;4600:2;4554:30;:49::i;:::-;4351:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4351:274:1;;;;;;;;;;-1:-1:-1;;;4299:358:1;;;;;;;:::i;7938:233::-;8021:22;8029:4;8035:7;8021;:22::i;:::-;8016:149;;8059:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8059:29:1;;;;;;;;;:36;;-1:-1:-1;;8059:36:1;8091:4;8059:36;;;8141:12;965:10:10;;886:96;8141:12:1;-1:-1:-1;;;;;8114:40:1;8132:7;-1:-1:-1;;;;;8114:40:1;8126:4;8114:40;;;;;;;;;;7938:233;;:::o;8316:150:17:-;8386:4;8409:50;8414:3;-1:-1:-1;;;;;8434:23:17;;8409:4;:50::i;8342:234:1:-;8425:22;8433:4;8439:7;8425;:22::i;:::-;8421:149;;;8495:5;8463:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8463:29:1;;;;;;;;;;:37;;-1:-1:-1;;8463:37:1;;;8519:40;965:10:10;;8463:12:1;;8519:40;;8495:5;8519:40;8342:234;;:::o;8634:156:17:-;8707:4;8730:53;8738:3;-1:-1:-1;;;;;8758:23:17;;8730:7;:53::i;17387:193:5:-;17506:16;;;17520:1;17506:16;;;;;;;;;17453;;17481:22;;17506:16;;;;;;;;;;;;-1:-1:-1;17506:16:5;17481:41;;17543:7;17532:5;17538:1;17532:8;;;;;;-1:-1:-1;;;17532:8:5;;;;;;;;;;;;;;;;;;:18;17568:5;17387:193;-1:-1:-1;;17387:193:5:o;1444:110::-;5374:13:4;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:4;;;;;;;:::i;:::-;1534:13:5::1;1542:4;1534:7;:13::i;15814:747::-:0;-1:-1:-1;;;;;16021:13:5;;1713:19:9;:23;16017:538:5;;16056:83;;-1:-1:-1;;;16056:83:5;;-1:-1:-1;;;;;16056:49:5;;;;;:83;;16106:8;;16116:4;;16122:2;;16126:6;;16134:4;;16056:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16056:83:5;;;;;;;;-1:-1:-1;;16056:83:5;;;;;;;;;;;;:::i;:::-;;;16052:493;;;;:::i;:::-;-1:-1:-1;;;;;;16188:66:5;;-1:-1:-1;;;16188:66:5;16184:163;;16278:50;;-1:-1:-1;;;16278:50:5;;;;;;;:::i;4923:118:17:-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;-1:-1:-1;;;5016:18:17;;;;;;;;;;;;;;;;;5009:25;;4923:118;;;;:::o;3050:213:1:-;3135:4;-1:-1:-1;;;;;;3158:58:1;;-1:-1:-1;;;3158:58:1;;:98;;-1:-1:-1;;;;;;;;;;1189:51:13;;;3220:36:1;1081:166:13;2473:149:12;2531:13;2563:52;-1:-1:-1;;;;;2575:22:12;;376:2;1884:437;1959:13;1984:19;2016:10;2020:6;2016:1;:10;:::i;:::-;:14;;2029:1;2016:14;:::i;:::-;2006:25;;;;;;-1:-1:-1;;;2006:25:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2006:25:12;;1984:47;;-1:-1:-1;;;2041:6:12;2048:1;2041:9;;;;;;-1:-1:-1;;;2041:9:12;;;;;;;;;;;;:15;-1:-1:-1;;;;;2041:15:12;;;;;;;;;-1:-1:-1;;;2066:6:12;2073:1;2066:9;;;;;;-1:-1:-1;;;2066:9:12;;;;;;;;;;;;:15;-1:-1:-1;;;;;2066:15:12;;;;;;;;-1:-1:-1;2096:9:12;2108:10;2112:6;2108:1;:10;:::i;:::-;:14;;2121:1;2108:14;:::i;:::-;2096:26;;2091:128;2128:1;2124;:5;2091:128;;;-1:-1:-1;;;2171:5:12;2179:3;2171:11;2162:21;;;;;-1:-1:-1;;;2162:21:12;;;;;;;;;;;;2150:6;2157:1;2150:9;;;;;;-1:-1:-1;;;2150:9:12;;;;;;;;;;;;:33;-1:-1:-1;;;;;2150:33:12;;;;;;;;-1:-1:-1;2207:1:12;2197:11;;;;;2131:3;;;:::i;:::-;;;2091:128;;;-1:-1:-1;2236:10:12;;2228:55;;;;-1:-1:-1;;;2228:55:12;;17344:2:21;2228:55:12;;;17326:21:21;;;17363:18;;;17356:30;17422:34;17402:18;;;17395:62;17474:18;;2228:55:12;17316:182:21;2225:404:17;2288:4;4362:19;;;:12;;;:19;;;;;;2304:319;;-1:-1:-1;2346:23:17;;;;;;;;:11;:23;;;;;;;;;;;;;2526:18;;2504:19;;;:12;;;:19;;;;;;:40;;;;2558:11;;2304:319;-1:-1:-1;2607:5:17;2600:12;;2797:1388;2863:4;3000:19;;;:12;;;:19;;;;;;3034:15;;3030:1149;;3403:21;3427:14;3440:1;3427:10;:14;:::i;:::-;3475:18;;3403:38;;-1:-1:-1;3455:17:17;;3475:22;;3496:1;;3475:22;:::i;:::-;3455:42;;3529:13;3516:9;:26;3512:398;;3562:17;3582:3;:11;;3594:9;3582:22;;;;;;-1:-1:-1;;;3582:22:17;;;;;;;;;;;;;;;;;3562:42;;3733:9;3704:3;:11;;3716:13;3704:26;;;;;;-1:-1:-1;;;3704:26:17;;;;;;;;;;;;;;;;;;;;:38;;;;3816:23;;;:12;;;:23;;;;;:36;;;3512:398;3988:17;;:3;;:17;;;-1:-1:-1;;;3988:17:17;;;;;;;;;;;;;;;;;;;;;;;;;;4080:3;:12;;:19;4093:5;4080:19;;;;;;;;;;;4073:26;;;4121:4;4114:11;;;;;;;3030:1149;4163:5;4156:12;;;;;8578:86:5;8644:13;;;;:4;;:13;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:755:21;68:5;121:3;114:4;106:6;102:17;98:27;88:2;;143:5;136;129:20;88:2;183:6;170:20;209:4;232:43;272:2;232:43;:::i;:::-;304:2;298:9;316:31;344:2;336:6;316:31;:::i;:::-;382:18;;;416:15;;;;-1:-1:-1;451:15:21;;;501:1;497:10;;;485:23;;481:32;;478:41;-1:-1:-1;475:2:21;;;536:5;529;522:20;475:2;562:5;576:163;590:2;587:1;584:9;576:163;;;647:17;;635:30;;685:12;;;;717;;;;608:1;601:9;576:163;;;-1:-1:-1;757:6:21;;78:691;-1:-1:-1;;;;;;;78:691:21:o;774:575::-;816:5;869:3;862:4;854:6;850:17;846:27;836:2;;891:5;884;877:20;836:2;931:6;918:20;957:18;953:2;950:26;947:2;;;979:18;;:::i;:::-;1028:2;1022:9;1040:67;1095:2;1076:13;;-1:-1:-1;;1072:27:21;1101:4;1068:38;1022:9;1040:67;:::i;:::-;1131:2;1123:6;1116:18;1177:3;1170:4;1165:2;1157:6;1153:15;1149:26;1146:35;1143:2;;;1198:5;1191;1184:20;1143:2;1266;1259:4;1251:6;1247:17;1240:4;1232:6;1228:17;1215:54;1289:15;;;1306:4;1285:26;1278:41;;;;1293:6;826:523;-1:-1:-1;;826:523:21:o;1354:257::-;1413:6;1466:2;1454:9;1445:7;1441:23;1437:32;1434:2;;;1487:6;1479;1472:22;1434:2;1531:9;1518:23;1550:31;1575:5;1550:31;:::i;1616:261::-;1686:6;1739:2;1727:9;1718:7;1714:23;1710:32;1707:2;;;1760:6;1752;1745:22;1707:2;1797:9;1791:16;1816:31;1841:5;1816:31;:::i;1882:398::-;1950:6;1958;2011:2;1999:9;1990:7;1986:23;1982:32;1979:2;;;2032:6;2024;2017:22;1979:2;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:21;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;2267:7;2257:17;;;1969:311;;;;;:::o;2285:1111::-;2439:6;2447;2455;2463;2471;2524:3;2512:9;2503:7;2499:23;2495:33;2492:2;;;2546:6;2538;2531:22;2492:2;2590:9;2577:23;2609:31;2634:5;2609:31;:::i;:::-;2659:5;-1:-1:-1;2716:2:21;2701:18;;2688:32;2729:33;2688:32;2729:33;:::i;:::-;2781:7;-1:-1:-1;2839:2:21;2824:18;;2811:32;2862:18;2892:14;;;2889:2;;;2924:6;2916;2909:22;2889:2;2952:61;3005:7;2996:6;2985:9;2981:22;2952:61;:::i;:::-;2942:71;;3066:2;3055:9;3051:18;3038:32;3022:48;;3095:2;3085:8;3082:16;3079:2;;;3116:6;3108;3101:22;3079:2;3144:63;3199:7;3188:8;3177:9;3173:24;3144:63;:::i;:::-;3134:73;;3260:3;3249:9;3245:19;3232:33;3216:49;;3290:2;3280:8;3277:16;3274:2;;;3311:6;3303;3296:22;3274:2;;3339:51;3382:7;3371:8;3360:9;3356:24;3339:51;:::i;:::-;3329:61;;;2482:914;;;;;;;;:::o;3401:754::-;3505:6;3513;3521;3529;3537;3590:3;3578:9;3569:7;3565:23;3561:33;3558:2;;;3612:6;3604;3597:22;3558:2;3656:9;3643:23;3675:31;3700:5;3675:31;:::i;:::-;3725:5;-1:-1:-1;3782:2:21;3767:18;;3754:32;3795:33;3754:32;3795:33;:::i;:::-;3847:7;-1:-1:-1;3901:2:21;3886:18;;3873:32;;-1:-1:-1;3952:2:21;3937:18;;3924:32;;-1:-1:-1;4007:3:21;3992:19;;3979:33;4035:18;4024:30;;4021:2;;;4072:6;4064;4057:22;4021:2;4100:49;4141:7;4132:6;4121:9;4117:22;4100:49;:::i;4160:392::-;4225:6;4233;4286:2;4274:9;4265:7;4261:23;4257:32;4254:2;;;4307:6;4299;4292:22;4254:2;4351:9;4338:23;4370:31;4395:5;4370:31;:::i;:::-;4420:5;-1:-1:-1;4477:2:21;4462:18;;4449:32;4490:30;4449:32;4490:30;:::i;4557:325::-;4625:6;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:2;;;4707:6;4699;4692:22;4654:2;4751:9;4738:23;4770:31;4795:5;4770:31;:::i;:::-;4820:5;4872:2;4857:18;;;;4844:32;;-1:-1:-1;;;4644:238:21:o;4887:844::-;5002:6;5010;5018;5026;5034;5087:3;5075:9;5066:7;5062:23;5058:33;5055:2;;;5109:6;5101;5094:22;5055:2;5153:9;5140:23;5172:31;5197:5;5172:31;:::i;:::-;5222:5;-1:-1:-1;5274:2:21;5259:18;;5246:32;;-1:-1:-1;5325:2:21;5310:18;;5297:32;;-1:-1:-1;5380:2:21;5365:18;;5352:32;5403:18;5433:14;;;5430:2;;;5465:6;5457;5450:22;5430:2;5493:49;5534:7;5525:6;5514:9;5510:22;5493:49;:::i;5736:1343::-;5854:6;5862;5915:2;5903:9;5894:7;5890:23;5886:32;5883:2;;;5936:6;5928;5921:22;5883:2;5981:9;5968:23;6010:18;6051:2;6043:6;6040:14;6037:2;;;6072:6;6064;6057:22;6037:2;6115:6;6104:9;6100:22;6090:32;;6160:7;6153:4;6149:2;6145:13;6141:27;6131:2;;6187:6;6179;6172:22;6131:2;6228;6215:16;6250:4;6273:43;6313:2;6273:43;:::i;:::-;6345:2;6339:9;6357:31;6385:2;6377:6;6357:31;:::i;:::-;6423:18;;;6457:15;;;;-1:-1:-1;6492:11:21;;;6534:1;6530:10;;;6522:19;;6518:28;;6515:41;-1:-1:-1;6512:2:21;;;6574:6;6566;6559:22;6512:2;6601:6;6592:15;;6616:238;6630:2;6627:1;6624:9;6616:238;;;6701:3;6688:17;6718:31;6743:5;6718:31;:::i;:::-;6762:18;;6648:1;6641:9;;;;;6800:12;;;;6832;;6616:238;;;-1:-1:-1;6873:6:21;-1:-1:-1;;6917:18:21;;6904:32;;-1:-1:-1;;6948:16:21;;;6945:2;;;6982:6;6974;6967:22;6945:2;;7010:63;7065:7;7054:8;7043:9;7039:24;7010:63;:::i;:::-;7000:73;;;5873:1206;;;;;:::o;7084:255::-;7151:6;7204:2;7192:9;7183:7;7179:23;7175:32;7172:2;;;7225:6;7217;7210:22;7172:2;7262:9;7256:16;7281:28;7303:5;7281:28;:::i;7344:190::-;7403:6;7456:2;7444:9;7435:7;7431:23;7427:32;7424:2;;;7477:6;7469;7462:22;7424:2;-1:-1:-1;7505:23:21;;7414:120;-1:-1:-1;7414:120:21:o;7539:325::-;7607:6;7615;7668:2;7656:9;7647:7;7643:23;7639:32;7636:2;;;7689:6;7681;7674:22;7636:2;7730:9;7717:23;7707:33;;7790:2;7779:9;7775:18;7762:32;7803:31;7828:5;7803:31;:::i;7869:258::-;7937:6;7945;7998:2;7986:9;7977:7;7973:23;7969:32;7966:2;;;8019:6;8011;8004:22;7966:2;-1:-1:-1;;8047:23:21;;;8117:2;8102:18;;;8089:32;;-1:-1:-1;7956:171:21:o;8132:255::-;8190:6;8243:2;8231:9;8222:7;8218:23;8214:32;8211:2;;;8264:6;8256;8249:22;8211:2;8308:9;8295:23;8327:30;8351:5;8327:30;:::i;8392:259::-;8461:6;8514:2;8502:9;8493:7;8489:23;8485:32;8482:2;;;8535:6;8527;8520:22;8482:2;8572:9;8566:16;8591:30;8615:5;8591:30;:::i;8656:571::-;8744:6;8752;8805:2;8793:9;8784:7;8780:23;8776:32;8773:2;;;8826:6;8818;8811:22;8773:2;8871:9;8858:23;8900:18;8941:2;8933:6;8930:14;8927:2;;;8962:6;8954;8947:22;8927:2;8990:49;9031:7;9022:6;9011:9;9007:22;8990:49;:::i;:::-;8980:59;;9092:2;9081:9;9077:18;9064:32;9048:48;;9121:2;9111:8;9108:16;9105:2;;;9142:6;9134;9127:22;9105:2;;9170:51;9213:7;9202:8;9191:9;9187:24;9170:51;:::i;9427:985::-;9552:6;9560;9568;9576;9584;9637:3;9625:9;9616:7;9612:23;9608:33;9605:2;;;9659:6;9651;9644:22;9605:2;9700:9;9687:23;9677:33;;9761:2;9750:9;9746:18;9733:32;9784:18;9825:2;9817:6;9814:14;9811:2;;;9846:6;9838;9831:22;9811:2;9874:49;9915:7;9906:6;9895:9;9891:22;9874:49;:::i;:::-;9864:59;;9976:2;9965:9;9961:18;9948:32;9932:48;;10005:2;9995:8;9992:16;9989:2;;;10026:6;10018;10011:22;9989:2;10054:51;10097:7;10086:8;10075:9;10071:24;10054:51;:::i;:::-;10044:61;;10158:2;10147:9;10143:18;10130:32;10114:48;;10187:2;10177:8;10174:16;10171:2;;;10208:6;10200;10193:22;10171:2;;10236:51;10279:7;10268:8;10257:9;10253:24;10236:51;:::i;:::-;10226:61;;;10337:3;10326:9;10322:19;10309:33;10351:31;10376:5;10351:31;:::i;:::-;10401:5;10391:15;;;9595:817;;;;;;;;:::o;10417:437::-;10470:3;10508:5;10502:12;10535:6;10530:3;10523:19;10561:4;10590:2;10585:3;10581:12;10574:19;;10627:2;10620:5;10616:14;10648:3;10660:169;10674:6;10671:1;10668:13;10660:169;;;10735:13;;10723:26;;10769:12;;;;10804:15;;;;10696:1;10689:9;10660:169;;;-1:-1:-1;10845:3:21;;10478:376;-1:-1:-1;;;;;10478:376:21:o;10859:257::-;10900:3;10938:5;10932:12;10965:6;10960:3;10953:19;10981:63;11037:6;11030:4;11025:3;11021:14;11014:4;11007:5;11003:16;10981:63;:::i;:::-;11098:2;11077:15;-1:-1:-1;;11073:29:21;11064:39;;;;11105:4;11060:50;;10908:208;-1:-1:-1;;10908:208:21:o;11121:786::-;11532:25;11527:3;11520:38;11502:3;11587:6;11581:13;11603:62;11658:6;11653:2;11648:3;11644:12;11637:4;11629:6;11625:17;11603:62;:::i;:::-;-1:-1:-1;;;11724:2:21;11684:16;;;11716:11;;;11709:40;11774:13;;11796:63;11774:13;11845:2;11837:11;;11830:4;11818:17;;11796:63;:::i;:::-;11879:17;11898:2;11875:26;;11510:397;-1:-1:-1;;;;11510:397:21:o;12120:826::-;-1:-1:-1;;;;;12517:15:21;;;12499:34;;12569:15;;12564:2;12549:18;;12542:43;12479:3;12616:2;12601:18;;12594:31;;;12442:4;;12648:57;;12685:19;;12677:6;12648:57;:::i;:::-;12753:9;12745:6;12741:22;12736:2;12725:9;12721:18;12714:50;12787:44;12824:6;12816;12787:44;:::i;:::-;12773:58;;12880:9;12872:6;12868:22;12862:3;12851:9;12847:19;12840:51;12908:32;12933:6;12925;12908:32;:::i;:::-;12900:40;12451:495;-1:-1:-1;;;;;;;;12451:495:21:o;12951:560::-;-1:-1:-1;;;;;13248:15:21;;;13230:34;;13300:15;;13295:2;13280:18;;13273:43;13347:2;13332:18;;13325:34;;;13390:2;13375:18;;13368:34;;;13210:3;13433;13418:19;;13411:32;;;13173:4;;13460:45;;13485:19;;13477:6;13460:45;:::i;:::-;13452:53;13182:329;-1:-1:-1;;;;;;;13182:329:21:o;13954:950::-;-1:-1:-1;;;;;14361:32:21;;14343:51;;14425:2;14410:18;;14403:34;;;14331:3;14468:2;14453:18;;14446:30;;;14302:4;;14499:44;14524:18;;;14516:6;14499:44;:::i;:::-;14485:58;;14591:9;14583:6;14579:22;14574:2;14563:9;14559:18;14552:50;14625:32;14650:6;14642;14625:32;:::i;:::-;14611:46;;14706:9;14698:6;14694:22;14688:3;14677:9;14673:19;14666:51;14734:32;14759:6;14751;14734:32;:::i;:::-;14797:3;14782:19;;14775:35;;;;-1:-1:-1;;14841:3:21;14826:19;;14819:35;;;;14885:3;14870:19;;;14863:35;14726:40;14311:593;-1:-1:-1;;;;;14311:593:21:o;14909:695::-;15247:1;15243;15238:3;15234:11;15230:19;15222:6;15218:32;15207:9;15200:51;15287:6;15282:2;15271:9;15267:18;15260:34;15330:6;15325:2;15314:9;15310:18;15303:34;15373:6;15368:2;15357:9;15353:18;15346:34;15417:3;15411;15400:9;15396:19;15389:32;15181:4;15444:45;15484:3;15473:9;15469:19;15461:6;15444:45;:::i;:::-;15538:9;15530:6;15526:22;15520:3;15509:9;15505:19;15498:51;15566:32;15591:6;15583;15566:32;:::i;:::-;15558:40;15190:414;-1:-1:-1;;;;;;;;;15190:414:21:o;15609:261::-;15788:2;15777:9;15770:21;15751:4;15808:56;15860:2;15849:9;15845:18;15837:6;15808:56;:::i;15875:465::-;16132:2;16121:9;16114:21;16095:4;16158:56;16210:2;16199:9;16195:18;16187:6;16158:56;:::i;:::-;16262:9;16254:6;16250:22;16245:2;16234:9;16230:18;16223:50;16290:44;16327:6;16319;16290:44;:::i;:::-;16282:52;16104:236;-1:-1:-1;;;;;16104:236:21:o;16918:219::-;17067:2;17056:9;17049:21;17030:4;17087:44;17127:2;17116:9;17112:18;17104:6;17087:44;:::i;17503:404::-;17705:2;17687:21;;;17744:2;17724:18;;;17717:30;17783:34;17778:2;17763:18;;17756:62;-1:-1:-1;;;17849:2:21;17834:18;;17827:38;17897:3;17882:19;;17677:230::o;19146:410::-;19348:2;19330:21;;;19387:2;19367:18;;;19360:30;19426:34;19421:2;19406:18;;19399:62;-1:-1:-1;;;19492:2:21;19477:18;;19470:44;19546:3;19531:19;;19320:236::o;20329:401::-;20531:2;20513:21;;;20570:2;20550:18;;;20543:30;20609:34;20604:2;20589:18;;20582:62;-1:-1:-1;;;20675:2:21;20660:18;;20653:35;20720:3;20705:19;;20503:227::o;21899:406::-;22101:2;22083:21;;;22140:2;22120:18;;;22113:30;22179:34;22174:2;22159:18;;22152:62;-1:-1:-1;;;22245:2:21;22230:18;;22223:40;22295:3;22280:19;;22073:232::o;23016:407::-;23218:2;23200:21;;;23257:2;23237:18;;;23230:30;23296:34;23291:2;23276:18;;23269:62;-1:-1:-1;;;23362:2:21;23347:18;;23340:41;23413:3;23398:19;;23190:233::o;26331:183::-;26391:4;26424:18;26416:6;26413:30;26410:2;;;26446:18;;:::i;:::-;-1:-1:-1;26491:1:21;26487:14;26503:4;26483:25;;26400:114::o;26519:128::-;26559:3;26590:1;26586:6;26583:1;26580:13;26577:2;;;26596:18;;:::i;:::-;-1:-1:-1;26632:9:21;;26567:80::o;26652:168::-;26692:7;26758:1;26754;26750:6;26746:14;26743:1;26740:21;26735:1;26728:9;26721:17;26717:45;26714:2;;;26765:18;;:::i;:::-;-1:-1:-1;26805:9:21;;26704:116::o;26825:125::-;26865:4;26893:1;26890;26887:8;26884:2;;;26898:18;;:::i;:::-;-1:-1:-1;26935:9:21;;26874:76::o;26955:258::-;27027:1;27037:113;27051:6;27048:1;27045:13;27037:113;;;27127:11;;;27121:18;27108:11;;;27101:39;27073:2;27066:10;27037:113;;;27168:6;27165:1;27162:13;27159:2;;;-1:-1:-1;;27203:1:21;27185:16;;27178:27;27008:205::o;27218:136::-;27257:3;27285:5;27275:2;;27294:18;;:::i;:::-;-1:-1:-1;;;27330:18:21;;27265:89::o;27359:380::-;27438:1;27434:12;;;;27481;;;27502:2;;27556:4;27548:6;27544:17;27534:27;;27502:2;27609;27601:6;27598:14;27578:18;27575:38;27572:2;;;27655:10;27650:3;27646:20;27643:1;27636:31;27690:4;27687:1;27680:15;27718:4;27715:1;27708:15;27572:2;;27414:325;;;:::o;27744:249::-;27854:2;27835:13;;-1:-1:-1;;27831:27:21;27819:40;;27889:18;27874:34;;27910:22;;;27871:62;27868:2;;;27936:18;;:::i;:::-;27972:2;27965:22;-1:-1:-1;;27791:202:21:o;27998:135::-;28037:3;-1:-1:-1;;28058:17:21;;28055:2;;;28078:18;;:::i;:::-;-1:-1:-1;28125:1:21;28114:13;;28045:88::o;28138:127::-;28199:10;28194:3;28190:20;28187:1;28180:31;28230:4;28227:1;28220:15;28254:4;28251:1;28244:15;28270:127;28331:10;28326:3;28322:20;28319:1;28312:31;28362:4;28359:1;28352:15;28386:4;28383:1;28376:15;28402:185;28437:3;28479:1;28461:16;28458:23;28455:2;;;28529:1;28524:3;28519;28504:27;28560:10;28555:3;28551:20;28455:2;28445:142;:::o;28592:671::-;28631:3;28673:4;28655:16;28652:26;28649:2;;;28639:624;:::o;28649:2::-;28715;28709:9;-1:-1:-1;;28780:16:21;28776:25;;28773:1;28709:9;28752:50;28831:4;28825:11;28855:16;28890:18;28961:2;28954:4;28946:6;28942:17;28939:25;28934:2;28926:6;28923:14;28920:45;28917:2;;;28968:5;;;;;28639:624;:::o;28917:2::-;29005:6;28999:4;28995:17;28984:28;;29041:3;29035:10;29068:2;29060:6;29057:14;29054:2;;;29074:5;;;;;;28639:624;:::o;29054:2::-;29158;29139:16;29133:4;29129:27;29125:36;29118:4;29109:6;29104:3;29100:16;29096:27;29093:69;29090:2;;;29165:5;;;;;;28639:624;:::o;29090:2::-;29181:57;29232:4;29223:6;29215;29211:19;29207:30;29201:4;29181:57;:::i;:::-;-1:-1:-1;29254:3:21;;28639:624;-1:-1:-1;;;;;28639:624:21:o;29268:131::-;-1:-1:-1;;;;;29343:31:21;;29333:42;;29323:2;;29389:1;29386;29379:12;29404:118;29490:5;29483:13;29476:21;29469:5;29466:32;29456:2;;29512:1;29509;29502:12;29527:131;-1:-1:-1;;;;;;29601:32:21;;29591:43;;29581:2;;29648:1;29645;29638:12",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.4;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\";\nimport \"@verii/permissions-contract/contracts/Permissions.sol\";\n\n/**\n * @dev {ERC721} token, including:\n *\n *  - ability for holders to burn (destroy) their tokens\n *  - a minter role that allows for token minting (creation)\n *  - a pauser role that allows to stop all token transfers\n *  - token ID and URI autogeneration\n *\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the minter and pauser\n * roles, as well as the default admin role, which will let it grant both minter\n * and pauser roles to other accounts.\n */\ncontract VerificationCoupon is Initializable, AccessControlEnumerableUpgradeable, ERC1155Upgradeable {\n    address VNF;\n    using CountersUpgradeable for CountersUpgradeable.Counter;\n    bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n    mapping(uint256 => uint256) private expirationTime;\n\n    mapping(address => uint256[]) private ownerTokens;\n\n    CountersUpgradeable.Counter private _tokenIdTracker;\n\n    string private _tokenName;\n\n    Permissions internal permissions;\n\n    event MintCouponBundle(address owner, uint256 bundleId, uint256 expirationTime, uint256 quantity, string traceId, string ownerDid);\n\n    event BurnCoupon(address owner, uint256 bundleId, string traceId, string caoDid, string burnerDid, uint256 balance, uint256 expirationTime, uint256 burnTime);\n\n    function initialize(string memory tokenName, string memory baseTokenURI) public initializer {\n        ERC1155Upgradeable.__ERC1155_init(baseTokenURI);\n        VNF = msg.sender;\n        _tokenName = tokenName;\n\n        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n        _setupRole(MINTER_ROLE, msg.sender);\n    }\n\n    function setPermissionsAddress(address _permissions) public {\n        require(msg.sender == VNF, \"The caller is not VNF\");\n        permissions = Permissions(_permissions);\n    }\n\n    function getVNF() public view returns (address) {\n        return VNF;\n    }\n\n    function isExpired(uint256 tokenId) public view returns (bool) {\n        return block.timestamp >= expirationTime[tokenId];\n    }\n\n    function getTokenId(address operator) public view returns (uint256) {\n        address primary = permissions.checkOperator(operator);\n        uint256 quantity = ownerTokens[primary].length;\n        require(quantity != 0, \"No available tokens\");\n\n        uint256 lowestTokenId = type(uint256).max;\n        uint256 currentTokenId;\n        for (uint256 i = 0; i < quantity; i++) {\n            currentTokenId = ownerTokens[primary][i];\n            if (!isExpired(currentTokenId) && currentTokenId < lowestTokenId) {\n                lowestTokenId = currentTokenId;\n            }\n        }\n        require(lowestTokenId != type(uint256).max, \"No available tokens\");\n        return lowestTokenId;\n    }\n\n    function removeTokenId(uint256 tokenId, address burnAddress) private {\n        uint256[] storage tokenList = ownerTokens[burnAddress];\n        for (uint256 i = 0; i < tokenList.length; i++) {\n            if (tokenId == tokenList[i]) {\n                tokenList[i] = tokenList[tokenList.length - 1];\n                return tokenList.pop();\n            }\n        }\n    }\n\n    function mint(address to, uint256 _expirationTime, uint256 quantity, string memory traceId, string memory ownerDid) public virtual {\n        require(hasRole(MINTER_ROLE, msg.sender), \"VerificationCoupon: must have a minter role to mint\");\n        require(quantity > 0, \"Invalid quantity\");\n\n        uint256 tokenId = _tokenIdTracker.current();\n        _mint(to, tokenId, quantity, \"\");\n        ownerTokens[to].push(tokenId);\n        expirationTime[tokenId] = _expirationTime;\n        _tokenIdTracker.increment();\n        emit MintCouponBundle(to, tokenId, _expirationTime, quantity, traceId, ownerDid);\n    }\n\n    function burn(uint256 tokenId, string memory traceId, string memory caoDid, string memory burnerDid, address operator) public virtual {\n        require(permissions.checkAddressScope(msg.sender, \"coupon:burn\"), \"Burn: caller does not have coupon:burn permission\");\n        address primary = permissions.checkOperator(operator);\n        require(balanceOf(primary, tokenId) > 0, \"Burn: bundle has no balance\");\n        burnExpiredTokens(primary);\n\n        _burn(primary, tokenId, 1);\n        uint256 balance = balanceOf(primary, tokenId);\n        uint256 expiration = expirationTime[tokenId];\n        if (balance == 0) {\n            delete expirationTime[tokenId];\n            removeTokenId(tokenId, primary);\n        }\n        emit BurnCoupon(primary, tokenId, traceId, caoDid, burnerDid, balance, expiration, block.timestamp);\n    }\n\n    function burnExpiredTokens(address burnAddress) private {\n        uint256 quantity = ownerTokens[burnAddress].length;\n        uint256 currentTokenId;\n        uint256 i = 0;\n        while (i < quantity) {\n            currentTokenId = ownerTokens[burnAddress][i];\n            if (isExpired(currentTokenId)) {\n                uint256 balance = balanceOf(burnAddress, currentTokenId);\n                _burn(burnAddress, currentTokenId, balance);\n                delete expirationTime[currentTokenId];\n                removeTokenId(currentTokenId, burnAddress);\n                quantity--;\n            } else {\n                i++;\n            }\n        }\n    }\n\n    function supportsInterface(bytes4 interfaceId) public view virtual override(AccessControlEnumerableUpgradeable, ERC1155Upgradeable) returns (bool) {\n        return super.supportsInterface(interfaceId);\n    }\n\n    function _getTokenName() public view virtual returns (string memory) {\n        return _tokenName;\n    }\n}\n",
  "sourcePath": "/Users/nassan/s/vclworld/monorepo/contracts/verification-coupon/contracts/VerificationCoupon.sol",
  "ast": {
    "absolutePath": "project:/contracts/VerificationCoupon.sol",
    "exportedSymbols": {
      "AccessControlEnumerableUpgradeable": [
        145
      ],
      "AccessControlUpgradeable": [
        482
      ],
      "AddressUpgradeable": [
        2503
      ],
      "ContextUpgradeable": [
        2554
      ],
      "CountersUpgradeable": [
        2628
      ],
      "ERC1155Upgradeable": [
        1995
      ],
      "ERC165Upgradeable": [
        2902
      ],
      "EnumerableSetUpgradeable": [
        4498
      ],
      "IAccessControlEnumerableUpgradeable": [
        507
      ],
      "IAccessControlUpgradeable": [
        580
      ],
      "IERC1155MetadataURIUpgradeable": [
        2173
      ],
      "IERC1155ReceiverUpgradeable": [
        2036
      ],
      "IERC1155Upgradeable": [
        2158
      ],
      "IERC165Upgradeable": [
        2914
      ],
      "Initializable": [
        749
      ],
      "MathUpgradeable": [
        3780
      ],
      "Permissions": [
        5358
      ],
      "SignedMathUpgradeable": [
        3885
      ],
      "StringsUpgradeable": [
        2857
      ],
      "VerificationCoupon": [
        5938
      ]
    },
    "id": 5939,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5393,
        "literals": [
          "solidity",
          "0.8",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:22:20"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "id": 5394,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5939,
        "sourceUnit": 750,
        "src": "57:75:20",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol",
        "id": 5395,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5939,
        "sourceUnit": 1996,
        "src": "133:82:20",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol",
        "id": 5396,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5939,
        "sourceUnit": 146,
        "src": "216:91:20",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
        "id": 5397,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5939,
        "sourceUnit": 2629,
        "src": "308:75:20",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@verii/permissions-contract/contracts/Permissions.sol",
        "file": "@verii/permissions-contract/contracts/Permissions.sol",
        "id": 5398,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5939,
        "sourceUnit": 5359,
        "src": "384:76:20",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 5400,
              "name": "Initializable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 749,
              "src": "1099:13:20"
            },
            "id": 5401,
            "nodeType": "InheritanceSpecifier",
            "src": "1099:13:20"
          },
          {
            "baseName": {
              "id": 5402,
              "name": "AccessControlEnumerableUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 145,
              "src": "1114:34:20"
            },
            "id": 5403,
            "nodeType": "InheritanceSpecifier",
            "src": "1114:34:20"
          },
          {
            "baseName": {
              "id": 5404,
              "name": "ERC1155Upgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1995,
              "src": "1150:18:20"
            },
            "id": 5405,
            "nodeType": "InheritanceSpecifier",
            "src": "1150:18:20"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 5399,
          "nodeType": "StructuredDocumentation",
          "src": "462:605:20",
          "text": " @dev {ERC721} token, including:\n  - ability for holders to burn (destroy) their tokens\n  - a minter role that allows for token minting (creation)\n  - a pauser role that allows to stop all token transfers\n  - token ID and URI autogeneration\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the minter and pauser\n roles, as well as the default admin role, which will let it grant both minter\n and pauser roles to other accounts."
        },
        "fullyImplemented": true,
        "id": 5938,
        "linearizedBaseContracts": [
          5938,
          1995,
          2173,
          2158,
          145,
          482,
          2902,
          2914,
          507,
          580,
          2554,
          749
        ],
        "name": "VerificationCoupon",
        "nameLocation": "1077:18:20",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 5407,
            "mutability": "mutable",
            "name": "VNF",
            "nameLocation": "1183:3:20",
            "nodeType": "VariableDeclaration",
            "scope": 5938,
            "src": "1175:11:20",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 5406,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1175:7:20",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 5411,
            "libraryName": {
              "id": 5408,
              "name": "CountersUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2628,
              "src": "1198:19:20"
            },
            "nodeType": "UsingForDirective",
            "src": "1192:58:20",
            "typeName": {
              "id": 5410,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5409,
                "name": "CountersUpgradeable.Counter",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 2560,
                "src": "1222:27:20"
              },
              "referencedDeclaration": 2560,
              "src": "1222:27:20",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Counter_$2560_storage_ptr",
                "typeString": "struct CountersUpgradeable.Counter"
              }
            }
          },
          {
            "constant": true,
            "functionSelector": "d5391393",
            "id": 5416,
            "mutability": "constant",
            "name": "MINTER_ROLE",
            "nameLocation": "1279:11:20",
            "nodeType": "VariableDeclaration",
            "scope": 5938,
            "src": "1255:62:20",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 5412,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1255:7:20",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "4d494e5445525f524f4c45",
                  "id": 5414,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1303:13:20",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                    "typeString": "literal_string \"MINTER_ROLE\""
                  },
                  "value": "MINTER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                    "typeString": "literal_string \"MINTER_ROLE\""
                  }
                ],
                "id": 5413,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 4294967288,
                "src": "1293:9:20",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 5415,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1293:24:20",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5420,
            "mutability": "mutable",
            "name": "expirationTime",
            "nameLocation": "1360:14:20",
            "nodeType": "VariableDeclaration",
            "scope": 5938,
            "src": "1324:50:20",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 5419,
              "keyType": {
                "id": 5417,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1332:7:20",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1324:27:20",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 5418,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1343:7:20",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5425,
            "mutability": "mutable",
            "name": "ownerTokens",
            "nameLocation": "1419:11:20",
            "nodeType": "VariableDeclaration",
            "scope": 5938,
            "src": "1381:49:20",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
              "typeString": "mapping(address => uint256[])"
            },
            "typeName": {
              "id": 5424,
              "keyType": {
                "id": 5421,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1389:7:20",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1381:29:20",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                "typeString": "mapping(address => uint256[])"
              },
              "valueType": {
                "baseType": {
                  "id": 5422,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1400:7:20",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "id": 5423,
                "nodeType": "ArrayTypeName",
                "src": "1400:9:20",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5428,
            "mutability": "mutable",
            "name": "_tokenIdTracker",
            "nameLocation": "1473:15:20",
            "nodeType": "VariableDeclaration",
            "scope": 5938,
            "src": "1437:51:20",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Counter_$2560_storage",
              "typeString": "struct CountersUpgradeable.Counter"
            },
            "typeName": {
              "id": 5427,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5426,
                "name": "CountersUpgradeable.Counter",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 2560,
                "src": "1437:27:20"
              },
              "referencedDeclaration": 2560,
              "src": "1437:27:20",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Counter_$2560_storage_ptr",
                "typeString": "struct CountersUpgradeable.Counter"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5430,
            "mutability": "mutable",
            "name": "_tokenName",
            "nameLocation": "1510:10:20",
            "nodeType": "VariableDeclaration",
            "scope": 5938,
            "src": "1495:25:20",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 5429,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1495:6:20",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 5433,
            "mutability": "mutable",
            "name": "permissions",
            "nameLocation": "1548:11:20",
            "nodeType": "VariableDeclaration",
            "scope": 5938,
            "src": "1527:32:20",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Permissions_$5358",
              "typeString": "contract Permissions"
            },
            "typeName": {
              "id": 5432,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5431,
                "name": "Permissions",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 5358,
                "src": "1527:11:20"
              },
              "referencedDeclaration": 5358,
              "src": "1527:11:20",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Permissions_$5358",
                "typeString": "contract Permissions"
              }
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "id": 5447,
            "name": "MintCouponBundle",
            "nameLocation": "1572:16:20",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5435,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1597:5:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5447,
                  "src": "1589:13:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5434,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1589:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5437,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "bundleId",
                  "nameLocation": "1612:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5447,
                  "src": "1604:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5436,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1604:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5439,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "expirationTime",
                  "nameLocation": "1630:14:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5447,
                  "src": "1622:22:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5438,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1622:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5441,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "quantity",
                  "nameLocation": "1654:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5447,
                  "src": "1646:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5440,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1646:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5443,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "1671:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5447,
                  "src": "1664:14:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5442,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1664:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5445,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "ownerDid",
                  "nameLocation": "1687:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5447,
                  "src": "1680:15:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5444,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1680:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1588:108:20"
            },
            "src": "1566:131:20"
          },
          {
            "anonymous": false,
            "id": 5465,
            "name": "BurnCoupon",
            "nameLocation": "1709:10:20",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5464,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5449,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1728:5:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1720:13:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5448,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1720:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5451,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "bundleId",
                  "nameLocation": "1743:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1735:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5450,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1735:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5453,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "1760:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1753:14:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5452,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5455,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "1776:6:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1769:13:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5454,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1769:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5457,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "burnerDid",
                  "nameLocation": "1791:9:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1784:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5456,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1784:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5459,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "balance",
                  "nameLocation": "1810:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1802:15:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5458,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1802:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5461,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "expirationTime",
                  "nameLocation": "1827:14:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1819:22:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1819:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5463,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "burnTime",
                  "nameLocation": "1851:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "1843:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5462,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1843:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1719:141:20"
            },
            "src": "1703:158:20"
          },
          {
            "body": {
              "id": 5501,
              "nodeType": "Block",
              "src": "1959:220:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5477,
                        "name": "baseTokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5469,
                        "src": "2003:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 5474,
                        "name": "ERC1155Upgradeable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1995,
                        "src": "1969:18:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC1155Upgradeable_$1995_$",
                          "typeString": "type(contract ERC1155Upgradeable)"
                        }
                      },
                      "id": 5476,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "__ERC1155_init",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 800,
                      "src": "1969:33:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 5478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1969:47:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5479,
                  "nodeType": "ExpressionStatement",
                  "src": "1969:47:20"
                },
                {
                  "expression": {
                    "id": 5483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5480,
                      "name": "VNF",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5407,
                      "src": "2026:3:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 5481,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "2032:3:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 5482,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "2032:10:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2026:16:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 5484,
                  "nodeType": "ExpressionStatement",
                  "src": "2026:16:20"
                },
                {
                  "expression": {
                    "id": 5487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5485,
                      "name": "_tokenName",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5430,
                      "src": "2052:10:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5486,
                      "name": "tokenName",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5467,
                      "src": "2065:9:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2052:22:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 5488,
                  "nodeType": "ExpressionStatement",
                  "src": "2052:22:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5490,
                        "name": "DEFAULT_ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 177,
                        "src": "2096:18:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 5491,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2116:3:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2116:10:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5489,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 385,
                      "src": "2085:10:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 5493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2085:42:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5494,
                  "nodeType": "ExpressionStatement",
                  "src": "2085:42:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5496,
                        "name": "MINTER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5416,
                        "src": "2148:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 5497,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2161:3:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2161:10:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5495,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 385,
                      "src": "2137:10:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 5499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2137:35:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5500,
                  "nodeType": "ExpressionStatement",
                  "src": "2137:35:20"
                }
              ]
            },
            "functionSelector": "4cd88b76",
            "id": 5502,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5472,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5471,
                  "name": "initializer",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 651,
                  "src": "1947:11:20"
                },
                "nodeType": "ModifierInvocation",
                "src": "1947:11:20"
              }
            ],
            "name": "initialize",
            "nameLocation": "1876:10:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5470,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5467,
                  "mutability": "mutable",
                  "name": "tokenName",
                  "nameLocation": "1901:9:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5502,
                  "src": "1887:23:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5466,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1887:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5469,
                  "mutability": "mutable",
                  "name": "baseTokenURI",
                  "nameLocation": "1926:12:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5502,
                  "src": "1912:26:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5468,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1912:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1886:53:20"
            },
            "returnParameters": {
              "id": 5473,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1959:0:20"
            },
            "scope": 5938,
            "src": "1867:312:20",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5521,
              "nodeType": "Block",
              "src": "2245:117:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 5511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 5508,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "2263:3:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "2263:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 5510,
                          "name": "VNF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5407,
                          "src": "2277:3:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2263:17:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5468652063616c6c6572206973206e6f7420564e46",
                        "id": 5512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2282:23:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        },
                        "value": "The caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        }
                      ],
                      "id": 5507,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2255:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2255:51:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5514,
                  "nodeType": "ExpressionStatement",
                  "src": "2255:51:20"
                },
                {
                  "expression": {
                    "id": 5519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5515,
                      "name": "permissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5433,
                      "src": "2316:11:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Permissions_$5358",
                        "typeString": "contract Permissions"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 5517,
                          "name": "_permissions",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5504,
                          "src": "2342:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5516,
                        "name": "Permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5358,
                        "src": "2330:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Permissions_$5358_$",
                          "typeString": "type(contract Permissions)"
                        }
                      },
                      "id": 5518,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2330:25:20",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Permissions_$5358",
                        "typeString": "contract Permissions"
                      }
                    },
                    "src": "2316:39:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Permissions_$5358",
                      "typeString": "contract Permissions"
                    }
                  },
                  "id": 5520,
                  "nodeType": "ExpressionStatement",
                  "src": "2316:39:20"
                }
              ]
            },
            "functionSelector": "fb5e3c25",
            "id": 5522,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPermissionsAddress",
            "nameLocation": "2194:21:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5504,
                  "mutability": "mutable",
                  "name": "_permissions",
                  "nameLocation": "2224:12:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5522,
                  "src": "2216:20:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2216:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2215:22:20"
            },
            "returnParameters": {
              "id": 5506,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2245:0:20"
            },
            "scope": 5938,
            "src": "2185:177:20",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5529,
              "nodeType": "Block",
              "src": "2416:27:20",
              "statements": [
                {
                  "expression": {
                    "id": 5527,
                    "name": "VNF",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5407,
                    "src": "2433:3:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 5526,
                  "id": 5528,
                  "nodeType": "Return",
                  "src": "2426:10:20"
                }
              ]
            },
            "functionSelector": "34ca4b64",
            "id": 5530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getVNF",
            "nameLocation": "2377:6:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5523,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2383:2:20"
            },
            "returnParameters": {
              "id": 5526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5525,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5530,
                  "src": "2407:7:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5524,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2407:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2406:9:20"
            },
            "scope": 5938,
            "src": "2368:75:20",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5544,
              "nodeType": "Block",
              "src": "2512:66:20",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 5537,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967292,
                        "src": "2529:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 5538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "2529:15:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "baseExpression": {
                        "id": 5539,
                        "name": "expirationTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5420,
                        "src": "2548:14:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 5541,
                      "indexExpression": {
                        "id": 5540,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5532,
                        "src": "2563:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2548:23:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2529:42:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5536,
                  "id": 5543,
                  "nodeType": "Return",
                  "src": "2522:49:20"
                }
              ]
            },
            "functionSelector": "d9548e53",
            "id": 5545,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isExpired",
            "nameLocation": "2458:9:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5533,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5532,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2476:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5545,
                  "src": "2468:15:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5531,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2468:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2467:17:20"
            },
            "returnParameters": {
              "id": 5536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5535,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5545,
                  "src": "2506:4:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5534,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2506:4:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2505:6:20"
            },
            "scope": 5938,
            "src": "2449:129:20",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5631,
              "nodeType": "Block",
              "src": "2652:626:20",
              "statements": [
                {
                  "assignments": [
                    5553
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5553,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "2670:7:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5631,
                      "src": "2662:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5552,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2662:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5558,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5556,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5547,
                        "src": "2706:8:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 5554,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5433,
                        "src": "2680:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$5358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 5555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4939,
                      "src": "2680:25:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 5557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2680:35:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2662:53:20"
                },
                {
                  "assignments": [
                    5560
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5560,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "2733:8:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5631,
                      "src": "2725:16:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5559,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2725:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5565,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 5561,
                        "name": "ownerTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5425,
                        "src": "2744:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(address => uint256[] storage ref)"
                        }
                      },
                      "id": 5563,
                      "indexExpression": {
                        "id": 5562,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5553,
                        "src": "2756:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2744:20:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 5564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "2744:27:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2725:46:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5567,
                          "name": "quantity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5560,
                          "src": "2789:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 5568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2801:1:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2789:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f20617661696c61626c6520746f6b656e73",
                        "id": 5570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2804:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4ab85ebcec98b07125cdf4371ed6aad8bd365b4399596da91d1cf8af4c22ee11",
                          "typeString": "literal_string \"No available tokens\""
                        },
                        "value": "No available tokens"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4ab85ebcec98b07125cdf4371ed6aad8bd365b4399596da91d1cf8af4c22ee11",
                          "typeString": "literal_string \"No available tokens\""
                        }
                      ],
                      "id": 5566,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2781:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2781:45:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5572,
                  "nodeType": "ExpressionStatement",
                  "src": "2781:45:20"
                },
                {
                  "assignments": [
                    5574
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5574,
                      "mutability": "mutable",
                      "name": "lowestTokenId",
                      "nameLocation": "2845:13:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5631,
                      "src": "2837:21:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5573,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2837:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5580,
                  "initialValue": {
                    "expression": {
                      "arguments": [
                        {
                          "id": 5577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2866:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 5576,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2866:7:20",
                            "typeDescriptions": {}
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          }
                        ],
                        "id": 5575,
                        "name": "type",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967269,
                        "src": "2861:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 5578,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2861:13:20",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_meta_type_t_uint256",
                        "typeString": "type(uint256)"
                      }
                    },
                    "id": 5579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "max",
                    "nodeType": "MemberAccess",
                    "src": "2861:17:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2837:41:20"
                },
                {
                  "assignments": [
                    5582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5582,
                      "mutability": "mutable",
                      "name": "currentTokenId",
                      "nameLocation": "2896:14:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5631,
                      "src": "2888:22:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5581,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2888:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5583,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2888:22:20"
                },
                {
                  "body": {
                    "id": 5616,
                    "nodeType": "Block",
                    "src": "2959:207:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 5600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5594,
                            "name": "currentTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5582,
                            "src": "2973:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 5595,
                                "name": "ownerTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5425,
                                "src": "2990:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                                  "typeString": "mapping(address => uint256[] storage ref)"
                                }
                              },
                              "id": 5597,
                              "indexExpression": {
                                "id": 5596,
                                "name": "primary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5553,
                                "src": "3002:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2990:20:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 5599,
                            "indexExpression": {
                              "id": 5598,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5585,
                              "src": "3011:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2990:23:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2973:40:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5601,
                        "nodeType": "ExpressionStatement",
                        "src": "2973:40:20"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "3031:26:20",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 5603,
                                  "name": "currentTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5582,
                                  "src": "3042:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5602,
                                "name": "isExpired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5545,
                                "src": "3032:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) view returns (bool)"
                                }
                              },
                              "id": 5604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3032:25:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5606,
                              "name": "currentTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5582,
                              "src": "3061:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 5607,
                              "name": "lowestTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5574,
                              "src": "3078:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3061:30:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3031:60:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5615,
                        "nodeType": "IfStatement",
                        "src": "3027:129:20",
                        "trueBody": {
                          "id": 5614,
                          "nodeType": "Block",
                          "src": "3093:63:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 5612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5610,
                                  "name": "lowestTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5574,
                                  "src": "3111:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 5611,
                                  "name": "currentTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5582,
                                  "src": "3127:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3111:30:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5613,
                              "nodeType": "ExpressionStatement",
                              "src": "3111:30:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5588,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5585,
                      "src": "2940:1:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 5589,
                      "name": "quantity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5560,
                      "src": "2944:8:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2940:12:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5617,
                  "initializationExpression": {
                    "assignments": [
                      5585
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5585,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "2933:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5617,
                        "src": "2925:9:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5584,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2925:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 5587,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 5586,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2937:1:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2925:13:20"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 5592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2954:3:20",
                      "subExpression": {
                        "id": 5591,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5585,
                        "src": "2954:1:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5593,
                    "nodeType": "ExpressionStatement",
                    "src": "2954:3:20"
                  },
                  "nodeType": "ForStatement",
                  "src": "2920:246:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5619,
                          "name": "lowestTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5574,
                          "src": "3183:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 5622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3205:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 5621,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3205:7:20",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "id": 5620,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967269,
                              "src": "3200:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 5623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3200:13:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint256",
                              "typeString": "type(uint256)"
                            }
                          },
                          "id": 5624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "3200:17:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3183:34:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f20617661696c61626c6520746f6b656e73",
                        "id": 5626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3219:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4ab85ebcec98b07125cdf4371ed6aad8bd365b4399596da91d1cf8af4c22ee11",
                          "typeString": "literal_string \"No available tokens\""
                        },
                        "value": "No available tokens"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4ab85ebcec98b07125cdf4371ed6aad8bd365b4399596da91d1cf8af4c22ee11",
                          "typeString": "literal_string \"No available tokens\""
                        }
                      ],
                      "id": 5618,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3175:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3175:66:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5628,
                  "nodeType": "ExpressionStatement",
                  "src": "3175:66:20"
                },
                {
                  "expression": {
                    "id": 5629,
                    "name": "lowestTokenId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5574,
                    "src": "3258:13:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5551,
                  "id": 5630,
                  "nodeType": "Return",
                  "src": "3251:20:20"
                }
              ]
            },
            "functionSelector": "f1537686",
            "id": 5632,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTokenId",
            "nameLocation": "2593:10:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5547,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "2612:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5632,
                  "src": "2604:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5546,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2604:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2603:18:20"
            },
            "returnParameters": {
              "id": 5551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5550,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5632,
                  "src": "2643:7:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5549,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2643:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2642:9:20"
            },
            "scope": 5938,
            "src": "2584:694:20",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5683,
              "nodeType": "Block",
              "src": "3353:299:20",
              "statements": [
                {
                  "assignments": [
                    5643
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5643,
                      "mutability": "mutable",
                      "name": "tokenList",
                      "nameLocation": "3381:9:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5683,
                      "src": "3363:27:20",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3363:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5642,
                        "nodeType": "ArrayTypeName",
                        "src": "3363:9:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5647,
                  "initialValue": {
                    "baseExpression": {
                      "id": 5644,
                      "name": "ownerTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5425,
                      "src": "3393:11:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                        "typeString": "mapping(address => uint256[] storage ref)"
                      }
                    },
                    "id": 5646,
                    "indexExpression": {
                      "id": 5645,
                      "name": "burnAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5636,
                      "src": "3405:11:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3393:24:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3363:54:20"
                },
                {
                  "body": {
                    "id": 5681,
                    "nodeType": "Block",
                    "src": "3474:172:20",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5659,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5634,
                            "src": "3492:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "baseExpression": {
                              "id": 5660,
                              "name": "tokenList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5643,
                              "src": "3503:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[] storage pointer"
                              }
                            },
                            "id": 5662,
                            "indexExpression": {
                              "id": 5661,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5649,
                              "src": "3513:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3503:12:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3492:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5680,
                        "nodeType": "IfStatement",
                        "src": "3488:148:20",
                        "trueBody": {
                          "id": 5679,
                          "nodeType": "Block",
                          "src": "3517:119:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 5673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 5664,
                                    "name": "tokenList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5643,
                                    "src": "3535:9:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[] storage pointer"
                                    }
                                  },
                                  "id": 5666,
                                  "indexExpression": {
                                    "id": 5665,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5649,
                                    "src": "3545:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3535:12:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 5667,
                                    "name": "tokenList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5643,
                                    "src": "3550:9:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[] storage pointer"
                                    }
                                  },
                                  "id": 5672,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5671,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 5668,
                                        "name": "tokenList",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5643,
                                        "src": "3560:9:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                          "typeString": "uint256[] storage pointer"
                                        }
                                      },
                                      "id": 5669,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "3560:16:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 5670,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3579:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "3560:20:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3550:31:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3535:46:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5674,
                              "nodeType": "ExpressionStatement",
                              "src": "3535:46:20"
                            },
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 5675,
                                    "name": "tokenList",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5643,
                                    "src": "3606:9:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[] storage pointer"
                                    }
                                  },
                                  "id": 5676,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pop",
                                  "nodeType": "MemberAccess",
                                  "src": "3606:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                                    "typeString": "function (uint256[] storage pointer)"
                                  }
                                },
                                "id": 5677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3606:15:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "functionReturnParameters": 5638,
                              "id": 5678,
                              "nodeType": "Return",
                              "src": "3599:22:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5655,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5652,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5649,
                      "src": "3447:1:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 5653,
                        "name": "tokenList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5643,
                        "src": "3451:9:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[] storage pointer"
                        }
                      },
                      "id": 5654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3451:16:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3447:20:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5682,
                  "initializationExpression": {
                    "assignments": [
                      5649
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 5649,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "3440:1:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5682,
                        "src": "3432:9:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5648,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3432:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 5651,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 5650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3444:1:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3432:13:20"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 5657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3469:3:20",
                      "subExpression": {
                        "id": 5656,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5649,
                        "src": "3469:1:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 5658,
                    "nodeType": "ExpressionStatement",
                    "src": "3469:3:20"
                  },
                  "nodeType": "ForStatement",
                  "src": "3427:219:20"
                }
              ]
            },
            "id": 5684,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeTokenId",
            "nameLocation": "3293:13:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5634,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3315:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5684,
                  "src": "3307:15:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5633,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3307:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5636,
                  "mutability": "mutable",
                  "name": "burnAddress",
                  "nameLocation": "3332:11:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5684,
                  "src": "3324:19:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3324:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3306:38:20"
            },
            "returnParameters": {
              "id": 5638,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3353:0:20"
            },
            "scope": 5938,
            "src": "3284:368:20",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 5753,
              "nodeType": "Block",
              "src": "3789:477:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5699,
                            "name": "MINTER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5416,
                            "src": "3815:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 5700,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3828:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3828:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5698,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 241,
                          "src": "3807:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 5702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3807:32:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "566572696669636174696f6e436f75706f6e3a206d75737420686176652061206d696e74657220726f6c6520746f206d696e74",
                        "id": 5703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3841:53:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6be55a1d7878b900f271b09f02c19e924eff2c961b7bbdfe8e8df0e8e77afb17",
                          "typeString": "literal_string \"VerificationCoupon: must have a minter role to mint\""
                        },
                        "value": "VerificationCoupon: must have a minter role to mint"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6be55a1d7878b900f271b09f02c19e924eff2c961b7bbdfe8e8df0e8e77afb17",
                          "typeString": "literal_string \"VerificationCoupon: must have a minter role to mint\""
                        }
                      ],
                      "id": 5697,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3799:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3799:96:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5705,
                  "nodeType": "ExpressionStatement",
                  "src": "3799:96:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5707,
                          "name": "quantity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5690,
                          "src": "3913:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 5708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3924:1:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3913:12:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c6964207175616e74697479",
                        "id": 5710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3927:18:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_70657809104b9cebc8451c31180af28b43909695ec40e8ad5022c571e4e8c258",
                          "typeString": "literal_string \"Invalid quantity\""
                        },
                        "value": "Invalid quantity"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_70657809104b9cebc8451c31180af28b43909695ec40e8ad5022c571e4e8c258",
                          "typeString": "literal_string \"Invalid quantity\""
                        }
                      ],
                      "id": 5706,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3905:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3905:41:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5712,
                  "nodeType": "ExpressionStatement",
                  "src": "3905:41:20"
                },
                {
                  "assignments": [
                    5714
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5714,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nameLocation": "3965:7:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5753,
                      "src": "3957:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5713,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3957:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5718,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 5715,
                        "name": "_tokenIdTracker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5428,
                        "src": "3975:15:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$2560_storage",
                          "typeString": "struct CountersUpgradeable.Counter storage ref"
                        }
                      },
                      "id": 5716,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "current",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2572,
                      "src": "3975:23:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2560_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2560_storage_ptr_$",
                        "typeString": "function (struct CountersUpgradeable.Counter storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 5717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3975:25:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3957:43:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5720,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5686,
                        "src": "4016:2:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5721,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5714,
                        "src": "4020:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5722,
                        "name": "quantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5690,
                        "src": "4029:8:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 5723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4039:2:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 5719,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1424,
                      "src": "4010:5:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 5724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4010:32:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5725,
                  "nodeType": "ExpressionStatement",
                  "src": "4010:32:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5730,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5714,
                        "src": "4073:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "baseExpression": {
                          "id": 5726,
                          "name": "ownerTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5425,
                          "src": "4052:11:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                            "typeString": "mapping(address => uint256[] storage ref)"
                          }
                        },
                        "id": 5728,
                        "indexExpression": {
                          "id": 5727,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5686,
                          "src": "4064:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4052:15:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 5729,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "push",
                      "nodeType": "MemberAccess",
                      "src": "4052:20:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$bound_to$_t_array$_t_uint256_$dyn_storage_ptr_$",
                        "typeString": "function (uint256[] storage pointer,uint256)"
                      }
                    },
                    "id": 5731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4052:29:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5732,
                  "nodeType": "ExpressionStatement",
                  "src": "4052:29:20"
                },
                {
                  "expression": {
                    "id": 5737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 5733,
                        "name": "expirationTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5420,
                        "src": "4091:14:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 5735,
                      "indexExpression": {
                        "id": 5734,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5714,
                        "src": "4106:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4091:23:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5736,
                      "name": "_expirationTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5688,
                      "src": "4117:15:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4091:41:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5738,
                  "nodeType": "ExpressionStatement",
                  "src": "4091:41:20"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 5739,
                        "name": "_tokenIdTracker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5428,
                        "src": "4142:15:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$2560_storage",
                          "typeString": "struct CountersUpgradeable.Counter storage ref"
                        }
                      },
                      "id": 5741,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "increment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2586,
                      "src": "4142:25:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2560_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2560_storage_ptr_$",
                        "typeString": "function (struct CountersUpgradeable.Counter storage pointer)"
                      }
                    },
                    "id": 5742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4142:27:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5743,
                  "nodeType": "ExpressionStatement",
                  "src": "4142:27:20"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 5745,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5686,
                        "src": "4201:2:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5746,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5714,
                        "src": "4205:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5747,
                        "name": "_expirationTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5688,
                        "src": "4214:15:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5748,
                        "name": "quantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5690,
                        "src": "4231:8:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5749,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5692,
                        "src": "4241:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 5750,
                        "name": "ownerDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5694,
                        "src": "4250:8:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5744,
                      "name": "MintCouponBundle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5447,
                      "src": "4184:16:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,uint256,string memory,string memory)"
                      }
                    },
                    "id": 5751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4184:75:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5752,
                  "nodeType": "EmitStatement",
                  "src": "4179:80:20"
                }
              ]
            },
            "functionSelector": "6d013618",
            "id": 5754,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nameLocation": "3667:4:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5686,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "3680:2:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5754,
                  "src": "3672:10:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5685,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3672:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5688,
                  "mutability": "mutable",
                  "name": "_expirationTime",
                  "nameLocation": "3692:15:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5754,
                  "src": "3684:23:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3684:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5690,
                  "mutability": "mutable",
                  "name": "quantity",
                  "nameLocation": "3717:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5754,
                  "src": "3709:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3709:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5692,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "3741:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5754,
                  "src": "3727:21:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5691,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3727:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5694,
                  "mutability": "mutable",
                  "name": "ownerDid",
                  "nameLocation": "3764:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5754,
                  "src": "3750:22:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5693,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3750:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3671:102:20"
            },
            "returnParameters": {
              "id": 5696,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3789:0:20"
            },
            "scope": 5938,
            "src": "3658:608:20",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5844,
              "nodeType": "Block",
              "src": "4406:697:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 5770,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "4454:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "4454:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "hexValue": "636f75706f6e3a6275726e",
                            "id": 5772,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4466:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8aa567986b0456a81ce203101ebba63c53ec1e51fd89bf6b7b00d0f87663d2e9",
                              "typeString": "literal_string \"coupon:burn\""
                            },
                            "value": "coupon:burn"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_8aa567986b0456a81ce203101ebba63c53ec1e51fd89bf6b7b00d0f87663d2e9",
                              "typeString": "literal_string \"coupon:burn\""
                            }
                          ],
                          "expression": {
                            "id": 5768,
                            "name": "permissions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5433,
                            "src": "4424:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Permissions_$5358",
                              "typeString": "contract Permissions"
                            }
                          },
                          "id": 5769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "checkAddressScope",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4751,
                          "src": "4424:29:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_string_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,string memory) view external returns (bool)"
                          }
                        },
                        "id": 5773,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4424:56:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4275726e3a2063616c6c657220646f6573206e6f74206861766520636f75706f6e3a6275726e207065726d697373696f6e",
                        "id": 5774,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4482:51:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1ecd6a116a4941731c50b376bf71566d9584ecd0299ff8c6670c6da1ca0ecc0a",
                          "typeString": "literal_string \"Burn: caller does not have coupon:burn permission\""
                        },
                        "value": "Burn: caller does not have coupon:burn permission"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1ecd6a116a4941731c50b376bf71566d9584ecd0299ff8c6670c6da1ca0ecc0a",
                          "typeString": "literal_string \"Burn: caller does not have coupon:burn permission\""
                        }
                      ],
                      "id": 5767,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4416:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5775,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4416:118:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5776,
                  "nodeType": "ExpressionStatement",
                  "src": "4416:118:20"
                },
                {
                  "assignments": [
                    5778
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5778,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "4552:7:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5844,
                      "src": "4544:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5777,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4544:7:20",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5783,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5781,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5764,
                        "src": "4588:8:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 5779,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5433,
                        "src": "4562:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$5358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 5780,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4939,
                      "src": "4562:25:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 5782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4562:35:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4544:53:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 5786,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5778,
                              "src": "4625:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5787,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5756,
                              "src": "4634:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5785,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 883,
                            "src": "4615:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 5788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4615:27:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 5789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4645:1:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4615:31:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4275726e3a2062756e646c6520686173206e6f2062616c616e6365",
                        "id": 5791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4648:29:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9dc617bcf2468f55b28a99d9e1900ebffcb563baf72349fbaf55f90e72258414",
                          "typeString": "literal_string \"Burn: bundle has no balance\""
                        },
                        "value": "Burn: bundle has no balance"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9dc617bcf2468f55b28a99d9e1900ebffcb563baf72349fbaf55f90e72258414",
                          "typeString": "literal_string \"Burn: bundle has no balance\""
                        }
                      ],
                      "id": 5784,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4607:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4607:71:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5793,
                  "nodeType": "ExpressionStatement",
                  "src": "4607:71:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5795,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5778,
                        "src": "4706:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5794,
                      "name": "burnExpiredTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5913,
                      "src": "4688:17:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 5796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4688:26:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5797,
                  "nodeType": "ExpressionStatement",
                  "src": "4688:26:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5799,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5778,
                        "src": "4731:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5800,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5756,
                        "src": "4740:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 5801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4749:1:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 5798,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1640,
                      "src": "4725:5:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 5802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4725:26:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5803,
                  "nodeType": "ExpressionStatement",
                  "src": "4725:26:20"
                },
                {
                  "assignments": [
                    5805
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5805,
                      "mutability": "mutable",
                      "name": "balance",
                      "nameLocation": "4769:7:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5844,
                      "src": "4761:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5804,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4761:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5810,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5807,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5778,
                        "src": "4789:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5808,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5756,
                        "src": "4798:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5806,
                      "name": "balanceOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 883,
                      "src": "4779:9:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view returns (uint256)"
                      }
                    },
                    "id": 5809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4779:27:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4761:45:20"
                },
                {
                  "assignments": [
                    5812
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5812,
                      "mutability": "mutable",
                      "name": "expiration",
                      "nameLocation": "4824:10:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5844,
                      "src": "4816:18:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5811,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4816:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5816,
                  "initialValue": {
                    "baseExpression": {
                      "id": 5813,
                      "name": "expirationTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5420,
                      "src": "4837:14:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 5815,
                    "indexExpression": {
                      "id": 5814,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5756,
                      "src": "4852:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4837:23:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4816:44:20"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5817,
                      "name": "balance",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5805,
                      "src": "4874:7:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 5818,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4885:1:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4874:12:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5831,
                  "nodeType": "IfStatement",
                  "src": "4870:118:20",
                  "trueBody": {
                    "id": 5830,
                    "nodeType": "Block",
                    "src": "4888:100:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 5823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "4902:30:20",
                          "subExpression": {
                            "baseExpression": {
                              "id": 5820,
                              "name": "expirationTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "4909:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 5822,
                            "indexExpression": {
                              "id": 5821,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5756,
                              "src": "4924:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4909:23:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5824,
                        "nodeType": "ExpressionStatement",
                        "src": "4902:30:20"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5826,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5756,
                              "src": "4960:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5827,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5778,
                              "src": "4969:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5825,
                            "name": "removeTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5684,
                            "src": "4946:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address)"
                            }
                          },
                          "id": 5828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4946:31:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5829,
                        "nodeType": "ExpressionStatement",
                        "src": "4946:31:20"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 5833,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5778,
                        "src": "5013:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5834,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5756,
                        "src": "5022:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5835,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5758,
                        "src": "5031:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 5836,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5760,
                        "src": "5040:6:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 5837,
                        "name": "burnerDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5762,
                        "src": "5048:9:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 5838,
                        "name": "balance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5805,
                        "src": "5059:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5839,
                        "name": "expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5812,
                        "src": "5068:10:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 5840,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967292,
                          "src": "5080:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 5841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "src": "5080:15:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5832,
                      "name": "BurnCoupon",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5465,
                      "src": "5002:10:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,string memory,string memory,string memory,uint256,uint256,uint256)"
                      }
                    },
                    "id": 5842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5002:94:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5843,
                  "nodeType": "EmitStatement",
                  "src": "4997:99:20"
                }
              ]
            },
            "functionSelector": "428d6910",
            "id": 5845,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nameLocation": "4281:4:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5756,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4294:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5845,
                  "src": "4286:15:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5755,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4286:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5758,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "4317:7:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5845,
                  "src": "4303:21:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5757,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4303:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5760,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "4340:6:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5845,
                  "src": "4326:20:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5759,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4326:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5762,
                  "mutability": "mutable",
                  "name": "burnerDid",
                  "nameLocation": "4362:9:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5845,
                  "src": "4348:23:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5761,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4348:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5764,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4381:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5845,
                  "src": "4373:16:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5763,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4373:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4285:105:20"
            },
            "returnParameters": {
              "id": 5766,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4406:0:20"
            },
            "scope": 5938,
            "src": "4272:831:20",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5912,
              "nodeType": "Block",
              "src": "5165:600:20",
              "statements": [
                {
                  "assignments": [
                    5851
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5851,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nameLocation": "5183:8:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5912,
                      "src": "5175:16:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5850,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5175:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5856,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 5852,
                        "name": "ownerTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5425,
                        "src": "5194:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(address => uint256[] storage ref)"
                        }
                      },
                      "id": 5854,
                      "indexExpression": {
                        "id": 5853,
                        "name": "burnAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5847,
                        "src": "5206:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5194:24:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 5855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "5194:31:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5175:50:20"
                },
                {
                  "assignments": [
                    5858
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5858,
                      "mutability": "mutable",
                      "name": "currentTokenId",
                      "nameLocation": "5243:14:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5912,
                      "src": "5235:22:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5857,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5235:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5859,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5235:22:20"
                },
                {
                  "assignments": [
                    5861
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5861,
                      "mutability": "mutable",
                      "name": "i",
                      "nameLocation": "5275:1:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 5912,
                      "src": "5267:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5860,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5267:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5863,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 5862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5279:1:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5267:13:20"
                },
                {
                  "body": {
                    "id": 5910,
                    "nodeType": "Block",
                    "src": "5311:448:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 5873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5867,
                            "name": "currentTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5858,
                            "src": "5325:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 5868,
                                "name": "ownerTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5425,
                                "src": "5342:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$",
                                  "typeString": "mapping(address => uint256[] storage ref)"
                                }
                              },
                              "id": 5870,
                              "indexExpression": {
                                "id": 5869,
                                "name": "burnAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5847,
                                "src": "5354:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5342:24:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 5872,
                            "indexExpression": {
                              "id": 5871,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5861,
                              "src": "5367:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5342:27:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5325:44:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5874,
                        "nodeType": "ExpressionStatement",
                        "src": "5325:44:20"
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 5876,
                              "name": "currentTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5858,
                              "src": "5397:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5875,
                            "name": "isExpired",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5545,
                            "src": "5387:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) view returns (bool)"
                            }
                          },
                          "id": 5877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5387:25:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5908,
                          "nodeType": "Block",
                          "src": "5713:36:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 5906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "5731:3:20",
                                "subExpression": {
                                  "id": 5905,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5861,
                                  "src": "5731:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5907,
                              "nodeType": "ExpressionStatement",
                              "src": "5731:3:20"
                            }
                          ]
                        },
                        "id": 5909,
                        "nodeType": "IfStatement",
                        "src": "5383:366:20",
                        "trueBody": {
                          "id": 5904,
                          "nodeType": "Block",
                          "src": "5414:293:20",
                          "statements": [
                            {
                              "assignments": [
                                5879
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5879,
                                  "mutability": "mutable",
                                  "name": "balance",
                                  "nameLocation": "5440:7:20",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5904,
                                  "src": "5432:15:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5878,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5432:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5884,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5881,
                                    "name": "burnAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5847,
                                    "src": "5460:11:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5882,
                                    "name": "currentTokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5858,
                                    "src": "5473:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5880,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 883,
                                  "src": "5450:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 5883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5450:38:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5432:56:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5886,
                                    "name": "burnAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5847,
                                    "src": "5512:11:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5887,
                                    "name": "currentTokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5858,
                                    "src": "5525:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5888,
                                    "name": "balance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5879,
                                    "src": "5541:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5885,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1640,
                                  "src": "5506:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 5889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5506:43:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5890,
                              "nodeType": "ExpressionStatement",
                              "src": "5506:43:20"
                            },
                            {
                              "expression": {
                                "id": 5894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "5567:37:20",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 5891,
                                    "name": "expirationTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5420,
                                    "src": "5574:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 5893,
                                  "indexExpression": {
                                    "id": 5892,
                                    "name": "currentTokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5858,
                                    "src": "5589:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5574:30:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5895,
                              "nodeType": "ExpressionStatement",
                              "src": "5567:37:20"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5897,
                                    "name": "currentTokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5858,
                                    "src": "5636:14:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5898,
                                    "name": "burnAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5847,
                                    "src": "5652:11:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5896,
                                  "name": "removeTokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5684,
                                  "src": "5622:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$",
                                    "typeString": "function (uint256,address)"
                                  }
                                },
                                "id": 5899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5622:42:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5900,
                              "nodeType": "ExpressionStatement",
                              "src": "5622:42:20"
                            },
                            {
                              "expression": {
                                "id": 5902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5682:10:20",
                                "subExpression": {
                                  "id": 5901,
                                  "name": "quantity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5851,
                                  "src": "5682:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5903,
                              "nodeType": "ExpressionStatement",
                              "src": "5682:10:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5864,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5861,
                      "src": "5297:1:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 5865,
                      "name": "quantity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5851,
                      "src": "5301:8:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5297:12:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5911,
                  "nodeType": "WhileStatement",
                  "src": "5290:469:20"
                }
              ]
            },
            "id": 5913,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burnExpiredTokens",
            "nameLocation": "5118:17:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5847,
                  "mutability": "mutable",
                  "name": "burnAddress",
                  "nameLocation": "5144:11:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5913,
                  "src": "5136:19:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5846,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5136:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5135:21:20"
            },
            "returnParameters": {
              "id": 5849,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5165:0:20"
            },
            "scope": 5938,
            "src": "5109:656:20",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "baseFunctions": [
              56,
              843
            ],
            "body": {
              "id": 5928,
              "nodeType": "Block",
              "src": "5918:60:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5925,
                        "name": "interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5915,
                        "src": "5959:11:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 5923,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967271,
                        "src": "5935:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_VerificationCoupon_$5938_$",
                          "typeString": "type(contract super VerificationCoupon)"
                        }
                      },
                      "id": 5924,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "supportsInterface",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 843,
                      "src": "5935:23:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                        "typeString": "function (bytes4) view returns (bool)"
                      }
                    },
                    "id": 5926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5935:36:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5922,
                  "id": 5927,
                  "nodeType": "Return",
                  "src": "5928:43:20"
                }
              ]
            },
            "functionSelector": "01ffc9a7",
            "id": 5929,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "5780:17:20",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 5919,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 5917,
                  "name": "AccessControlEnumerableUpgradeable",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 145,
                  "src": "5847:34:20"
                },
                {
                  "id": 5918,
                  "name": "ERC1155Upgradeable",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1995,
                  "src": "5883:18:20"
                }
              ],
              "src": "5838:64:20"
            },
            "parameters": {
              "id": 5916,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5915,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "5805:11:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5929,
                  "src": "5798:18:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 5914,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "5798:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5797:20:20"
            },
            "returnParameters": {
              "id": 5922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5921,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5929,
                  "src": "5912:4:20",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5920,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5912:4:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5911:6:20"
            },
            "scope": 5938,
            "src": "5771:207:20",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5936,
              "nodeType": "Block",
              "src": "6053:34:20",
              "statements": [
                {
                  "expression": {
                    "id": 5934,
                    "name": "_tokenName",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5430,
                    "src": "6070:10:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 5933,
                  "id": 5935,
                  "nodeType": "Return",
                  "src": "6063:17:20"
                }
              ]
            },
            "functionSelector": "24ff40b7",
            "id": 5937,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getTokenName",
            "nameLocation": "5993:13:20",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5930,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6006:2:20"
            },
            "returnParameters": {
              "id": 5933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5932,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5937,
                  "src": "6038:13:20",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5931,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6038:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6037:15:20"
            },
            "scope": 5938,
            "src": "5984:103:20",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 5939,
        "src": "1068:5021:20",
        "usedErrors": []
      }
    ],
    "src": "33:6057:20"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.4+commit.c7e474f2.Emscripten.clang"
  },
  "networks": {
    "1480": {
      "events": {},
      "links": {},
      "address": "0xD08600fbE01fA09490d387974CC915aD7f254A91",
      "transactionHash": "0x3969861cc53fe0bed4d48d379bb94a4016a66174fc6bf25e8c73bc2ff333ce1d"
    },
    "1481": {
      "events": {},
      "links": {},
      "address": "0xC172E0F7aed123Cd23c2fE0b33020f9e96B0c4Be",
      "transactionHash": "0x597cca0a46d2284b8504f3850f9bc4b235c8ac716491b18398456c30681de8ad"
    },
    "1482": {
      "events": {},
      "links": {},
      "address": "0xAE1d4258c60843a03875550C1e5E71BD8248BF84",
      "transactionHash": "0xe687ff5394207c16c52a13299757bd3c147e95d649d52edc02850cca843f2848"
    },
    "1483": {
      "events": {},
      "links": {},
      "address": "0xA1507C7C35433CE2f146e397113483e1745a6175",
      "transactionHash": "0xbbc52b5818b3534c1be77aad16150af8bf09216aabe8afd4023216e84befb5fd"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2024-07-15T16:12:04.794Z",
  "devdoc": {
    "details": "{ERC721} token, including:  - ability for holders to burn (destroy) their tokens  - a minter role that allows for token minting (creation)  - a pauser role that allows to stop all token transfers  - token ID and URI autogeneration This contract uses {AccessControl} to lock permissioned functions using the different roles - head to its documentation for details. The account that deploys the contract will be granted the minter and pauser roles, as well as the default admin role, which will let it grant both minter and pauser roles to other accounts.",
    "kind": "dev",
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
      },
      "getRoleAdmin(bytes32)": {
        "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
      },
      "getRoleMember(bytes32,uint256)": {
        "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."
      },
      "getRoleMemberCount(bytes32)": {
        "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."
      },
      "grantRole(bytes32,address)": {
        "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
      },
      "hasRole(bytes32,address)": {
        "details": "Returns `true` if `account` has been granted `role`."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC1155-isApprovedForAll}."
      },
      "renounceRole(bytes32,address)": {
        "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
      },
      "revokeRole(bytes32,address)": {
        "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "details": "See {IERC1155-safeBatchTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "details": "See {IERC1155-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC1155-setApprovalForAll}."
      },
      "uri(uint256)": {
        "details": "See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}