{
  "contractName": "Whitelist",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newWallet",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "AddApprovedUserWallet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_lockupExpirationDate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_numberOfTokensLocked",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "AddLockup",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_trader",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_jurisdictionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "ApproveNewUser",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_startDate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_lockupGranularity",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "ConfigWhitelist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_jurisdictionId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_until",
          "type": "uint256"
        }
      ],
      "name": "Halt",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_jurisdictionId",
          "type": "uint256"
        }
      ],
      "name": "InvestorDelisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_jurisdictionId",
          "type": "uint256"
        }
      ],
      "name": "InvestorEnlisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_jurisdictionId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "name": "MaxInvestorsByJurisdictionChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "name": "MaxInvestorsChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OperatorAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OperatorRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_jurisdictionId",
          "type": "uint256"
        }
      ],
      "name": "Resume",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_wallet",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "RevokeUserWallet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_tokensUnlocked",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "UnlockTokens",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_fromJurisdictionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_toJurisdictionId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_lockupLength",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "UpdateJurisdictionFlow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_jurisdictionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "UpdateJurisdictionForUserId",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_wallet",
          "type": "address"
        }
      ],
      "name": "WalletActivated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_wallet",
          "type": "address"
        }
      ],
      "name": "WalletDeactivated",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addOperator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "authorizedWalletToUserId",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "callingContract",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentInvestors",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "currentInvestorsByJurisdiction",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "investorEnlisted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "jurisdictionHaltsUntil",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lockupGranularity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxInvestors",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "maxInvestorsByJurisdiction",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "removeOperator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOperator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "revokedFrom",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "startDate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userActiveWalletCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "walletActivated",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_fromJurisdictionId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_toJurisdictionId",
          "type": "uint256"
        }
      ],
      "name": "getJurisdictionFlow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "lockupLength",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        }
      ],
      "name": "getAuthorizedUserIdInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "jurisdictionId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalTokensLocked",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endIndex",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_lockupIndex",
          "type": "uint256"
        }
      ],
      "name": "getUserIdLockup",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "lockupExpirationDate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "numberOfTokensLocked",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        }
      ],
      "name": "getLockedTokenCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "lockedTokens",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "detectTransferRestriction",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "status",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_restrictionCode",
          "type": "uint8"
        }
      ],
      "name": "messageForTransferRestriction",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_callingContract",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_startDate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_lockupGranularity",
          "type": "uint256"
        }
      ],
      "name": "configWhitelist",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_fromJurisdictionIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_toJurisdictionIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_lockupLengths",
          "type": "uint256[]"
        }
      ],
      "name": "updateJurisdictionFlows",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_traders",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_jurisdictionIds",
          "type": "uint256[]"
        }
      ],
      "name": "approveNewUsers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_userIds",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "_newWallets",
          "type": "address[]"
        }
      ],
      "name": "addApprovedUserWallets",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_wallets",
          "type": "address[]"
        }
      ],
      "name": "revokeUserWallets",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_userIds",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_jurisdictionIds",
          "type": "uint256[]"
        }
      ],
      "name": "updateJurisdictionsForUserIds",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_userIds",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_lockupExpirationDates",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_numberOfTokensLocked",
          "type": "uint256[]"
        }
      ],
      "name": "addLockups",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_maxCount",
          "type": "uint256"
        }
      ],
      "name": "processLockups",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_userId",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_maxLockupIndex",
          "type": "uint256"
        }
      ],
      "name": "forceUnlockUpTo",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_jurisdictionIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_expirationTimestamps",
          "type": "uint256[]"
        }
      ],
      "name": "halt",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_jurisdictionIds",
          "type": "uint256[]"
        }
      ],
      "name": "resume",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "name": "setInvestorLimit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_jurisdictionIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_limits",
          "type": "uint256[]"
        }
      ],
      "name": "setInvestorLimitForJurisdiction",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_wallets",
          "type": "address[]"
        }
      ],
      "name": "activateWallets",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_wallet",
          "type": "address"
        }
      ],
      "name": "deactivateWallet",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_wallets",
          "type": "address[]"
        }
      ],
      "name": "deactivateWallets",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_userIds",
          "type": "address[]"
        }
      ],
      "name": "enlistUsers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_userIds",
          "type": "address[]"
        }
      ],
      "name": "delistUsers",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_isSell",
          "type": "bool"
        }
      ],
      "name": "authorizeTransfer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newWallet\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"AddApprovedUserWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_lockupExpirationDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_numberOfTokensLocked\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"AddLockup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_jurisdictionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"ApproveNewUser\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_startDate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_lockupGranularity\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"ConfigWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_jurisdictionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_until\",\"type\":\"uint256\"}],\"name\":\"Halt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_jurisdictionId\",\"type\":\"uint256\"}],\"name\":\"InvestorDelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_jurisdictionId\",\"type\":\"uint256\"}],\"name\":\"InvestorEnlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_jurisdictionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MaxInvestorsByJurisdictionChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MaxInvestorsChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_jurisdictionId\",\"type\":\"uint256\"}],\"name\":\"Resume\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"RevokeUserWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokensUnlocked\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"UnlockTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_fromJurisdictionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_toJurisdictionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_lockupLength\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"UpdateJurisdictionFlow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_jurisdictionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"UpdateJurisdictionForUserId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"WalletActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"WalletDeactivated\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_wallets\",\"type\":\"address[]\"}],\"name\":\"activateWallets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_userIds\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_newWallets\",\"type\":\"address[]\"}],\"name\":\"addApprovedUserWallets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_userIds\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_lockupExpirationDates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_numberOfTokensLocked\",\"type\":\"uint256[]\"}],\"name\":\"addLockups\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_traders\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_jurisdictionIds\",\"type\":\"uint256[]\"}],\"name\":\"approveNewUsers\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isSell\",\"type\":\"bool\"}],\"name\":\"authorizeTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorizedWalletToUserId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"callingContract\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_lockupGranularity\",\"type\":\"uint256\"}],\"name\":\"configWhitelist\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentInvestors\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"currentInvestorsByJurisdiction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"deactivateWallet\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_wallets\",\"type\":\"address[]\"}],\"name\":\"deactivateWallets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_userIds\",\"type\":\"address[]\"}],\"name\":\"delistUsers\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"detectTransferRestriction\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"status\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_userIds\",\"type\":\"address[]\"}],\"name\":\"enlistUsers\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_maxLockupIndex\",\"type\":\"uint256\"}],\"name\":\"forceUnlockUpTo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"}],\"name\":\"getAuthorizedUserIdInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"jurisdictionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalTokensLocked\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endIndex\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_fromJurisdictionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_toJurisdictionId\",\"type\":\"uint256\"}],\"name\":\"getJurisdictionFlow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lockupLength\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"}],\"name\":\"getLockedTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lockedTokens\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lockupIndex\",\"type\":\"uint256\"}],\"name\":\"getUserIdLockup\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lockupExpirationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numberOfTokensLocked\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_jurisdictionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_expirationTimestamps\",\"type\":\"uint256[]\"}],\"name\":\"halt\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_callingContract\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"investorEnlisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"jurisdictionHaltsUntil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lockupGranularity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxInvestors\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"maxInvestorsByJurisdiction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_restrictionCode\",\"type\":\"uint8\"}],\"name\":\"messageForTransferRestriction\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_maxCount\",\"type\":\"uint256\"}],\"name\":\"processLockups\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_jurisdictionIds\",\"type\":\"uint256[]\"}],\"name\":\"resume\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_wallets\",\"type\":\"address[]\"}],\"name\":\"revokeUserWallets\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"revokedFrom\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"setInvestorLimit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_jurisdictionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_limits\",\"type\":\"uint256[]\"}],\"name\":\"setInvestorLimitForJurisdiction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"startDate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_fromJurisdictionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_toJurisdictionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_lockupLengths\",\"type\":\"uint256[]\"}],\"name\":\"updateJurisdictionFlows\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_userIds\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_jurisdictionIds\",\"type\":\"uint256[]\"}],\"name\":\"updateJurisdictionsForUserIds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userActiveWalletCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"walletActivated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"activateWallets(address[])\":{\"details\":\"This function can be called even user does not have balance only owner can call this function\"},\"approveNewUsers(address[],uint256[])\":{\"details\":\"The trader will be assigned a userId equal to their wallet address.\"},\"authorizeTransfer(address,address,uint256,bool)\":{\"details\":\"This call will revert when the transfer is not authorized. This is a mutable call to allow additional data to be recorded, such as when the user aquired their tokens.*\"},\"deactivateWallet(address)\":{\"details\":\"This function can only be called when _wallet has zero balance\"},\"detectTransferRestriction(address,address,uint256)\":{\"details\":\"this function is from the erc-1404 standard and currently in use by the DAT for the `pay` feature.\"},\"forceUnlockUpTo(address,uint256)\":{\"details\":\"This should generally remain unused. It could be used in combination with `addLockups` to fix an incorrect lockup expiration date or quantity.\"},\"getJurisdictionFlow(uint256,uint256)\":{\"return\":\"if transfers between these jurisdictions are allowed and if a token lockup should apply: - 0 means transfers between these jurisdictions is blocked (the default) - 1 is supported with no token lockup required - >1 is supported and this value defines the lockup length in seconds\"},\"getLockedTokenCount(address)\":{\"details\":\"this is a `view`-only way to determine how many tokens are still locked (info.totalTokensLocked is only accurate after processing lockups which changes state)\"},\"getUserIdLockup(address,uint256)\":{\"details\":\"use `getAuthorizedUserIdInfo` to determine the range of applicable lockupIndex.\"},\"halt(uint256[],uint256[])\":{\"details\":\"only owner can call this function\",\"params\":{\"_expirationTimestamps\":\"due when halt ends*\",\"_jurisdictionIds\":\"ids of the jurisdictions to halt\"}},\"initialize(address)\":{\"details\":\"Done with `initialize` instead of a constructor in order to support using this contract via an Upgradable Proxy.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"resume(uint256[])\":{\"details\":\"only owner can call this function\",\"params\":{\"_jurisdictionIds\":\"list of jurisdiction ids to resume*\"}},\"revokeUserWallets(address[])\":{\"details\":\"If this is called in error, you can restore access with `addApprovedUserWallets`.\"},\"setInvestorLimit(uint256)\":{\"details\":\"only owner can call this function\",\"params\":{\"_limit\":\"new investor limit for contract\"}},\"setInvestorLimitForJurisdiction(uint256[],uint256[])\":{\"details\":\"only owner can call this function\",\"params\":{\"_jurisdictionIds\":\"jurisdiction id to update\",\"_limits\":\"new investor limit for jurisdiction\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateJurisdictionFlows(uint256[],uint256[],uint256[])\":{\"details\":\"note that this can be called with a partial list, only including entries to be added or which have changed.\",\"params\":{\"_lockupLengths\":\"defines transfer restrictions where: - 0 is not supported (the default) - 1 is supported with no token lockup required - >1 is supported and this value defines the lockup length in seconds.\"}}}},\"userdoc\":{\"methods\":{\"activateWallets(address[])\":{\"notice\":\"activate wallet enlist user when user is not enlisted\"},\"addApprovedUserWallets(address[],address[])\":{\"notice\":\"Called by an operator to add wallets to known userIds.\"},\"addLockups(address[],uint256[],uint256[])\":{\"notice\":\"Operators can manually add lockups for userIds. This may be used by the organization before transfering tokens from the initial supply.\"},\"approveNewUsers(address[],uint256[])\":{\"notice\":\"Called by an operator to add new traders.\"},\"authorizeTransfer(address,address,uint256,bool)\":{\"notice\":\"Called by the callingContract before a transfer occurs.\"},\"configWhitelist(uint256,uint256)\":{\"notice\":\"Called by the owner to update the startDate or lockupGranularity.\"},\"deactivateWallet(address)\":{\"notice\":\"deactivate wallet delist user if user does not have any wallet left\"},\"detectTransferRestriction(address,address,uint256)\":{\"notice\":\"Checks if there is a transfer restriction for the given addresses. Does not consider tokenLockup. Use `getLockedTokenCount` for that.\"},\"forceUnlockUpTo(address,uint256)\":{\"notice\":\"Allows operators to remove lockup entries, bypassing the recorded expiration date.\"},\"getAuthorizedUserIdInfo(address)\":{\"notice\":\"checks details for a given userId.\"},\"getJurisdictionFlow(uint256,uint256)\":{\"notice\":\"checks for transfer restrictions between jurisdictions.\"},\"getLockedTokenCount(address)\":{\"notice\":\"Returns the number of unlocked tokens a given userId has available.\"},\"getUserIdLockup(address,uint256)\":{\"notice\":\"gets a specific lockup entry for a userId.\"},\"halt(uint256[],uint256[])\":{\"notice\":\"halts jurisdictions of id `_jurisdictionIds` for `_duration` seconds\"},\"initialize(address)\":{\"notice\":\"Called once to complete configuration for this contract.\"},\"processLockups(address,uint256)\":{\"notice\":\"Anyone can process lockups for a userId. This is generally unused but may be required if a given userId has a lot of individual lockup entries which are expired.\"},\"resume(uint256[])\":{\"notice\":\"resume halted jurisdiction\"},\"revokeUserWallets(address[])\":{\"notice\":\"Called by an operator to revoke approval for the given wallets.\"},\"setInvestorLimit(uint256)\":{\"notice\":\"changes max investors limit of the contract to `_limit`\"},\"setInvestorLimitForJurisdiction(uint256[],uint256[])\":{\"notice\":\"changes max investors limit of the `_jurisdcitionId` to `_limit`\"},\"updateJurisdictionFlows(uint256[],uint256[],uint256[])\":{\"notice\":\"Called by the owner to define or update jurisdiction flows.\"},\"updateJurisdictionsForUserIds(address[],uint256[])\":{\"notice\":\"Called by an operator to change the jurisdiction for the given userIds.\"}},\"notice\":\"whitelist which manages KYC approvals, token lockup, and transfer restrictions for a DAT token.\"}},\"settings\":{\"compilationTarget\":{\"/home/circleci/repo/contracts/Whitelist.sol\":\"Whitelist\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/circleci/repo/contracts/Whitelist.sol\":{\"keccak256\":\"0xfbb619221da5504d928d3d80e0f1f38e206ce71d285dcfa5ac9c7ee5835e39f7\",\"urls\":[\"bzz-raw://d449aac0bcaedbd365554e1ba0f544792122e9c8544c5268e6dada9b25d0c5a6\",\"dweb:/ipfs/QmQ2LKani6gRJWZY7AAbLciYyzSMKZpn5vY4gjQik79DU3\"]},\"/home/circleci/repo/contracts/interfaces/IWhitelist.sol\":{\"keccak256\":\"0x1ab9b967293b5df5b5a4f1fb9ca886a5da3d390c6093a9759695369c59be4348\",\"urls\":[\"bzz-raw://dc8f72a6df60a20b34ca2b5cf2ea8ce53f66afe73673805c68ff91e4a2a78d17\",\"dweb:/ipfs/QmQHrcnL1jEPxj2YfVkg31u1egZ1tBWuZcJfPME5c5dpbV\"]},\"/home/circleci/repo/contracts/mixins/OperatorRole.sol\":{\"keccak256\":\"0xf0f3f799ce6de866f1295832a1608fd6776d1ef79a54a99930b1916675f4db54\",\"urls\":[\"bzz-raw://0872ce4dbb377ab3518709c2dcb30ff317943f3df10933e23df72cff97c66fc3\",\"dweb:/ipfs/QmWHHgKU4vK2h8wAbig5StpVhM97FWJUvFf1RcbXcdTEEW\"]},\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzz-raw://3e51386d74eb723d3acaaddafce1dd0b4082ad4c10ddba6b9fc154aad2930d02\",\"dweb:/ipfs/QmcA8Huap1c7YjdVjx5TGasxKNMLgsa3XyLvQUaMa1nMt8\"]},\"@openzeppelin/contracts-ethereum-package/contracts/access/Roles.sol\":{\"keccak256\":\"0xb002c378d7b82a101bd659c341518953ca0919d342c0a400196982c0e7e7bcdb\",\"urls\":[\"bzz-raw://00a788c4631466c220b385bdd100c571d24b2deccd657615cfbcef6cadf669a4\",\"dweb:/ipfs/QmTEwDbjJNxmMNCDMqtuou3dyM8Wtp8Q9NFvn7SAVM7Jf3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xd7e8ab76fa35c4d8d35a06a6ed538cadab8b75a1aa00594ced1568b2c0cadde3\",\"urls\":[\"bzz-raw://a3f816aa3e6161b4cf882ad34755673848d835f7fb964db49bcef9df14570cef\",\"dweb:/ipfs/QmQACSH1W7pKQnqTAqpuEP8ychp3PvosfnyondLaLE1nVq\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f\",\"dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7\"]}},\"version\":1}",
  "bytecode": "0x6080604052613f1f806100136000396000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c806388817f4911610167578063c324a258116100ce578063ddbe65a211610087578063ddbe65a214610e99578063e91e7fc514610ea1578063f11b5ded14610ec7578063f20b7e7b14610f35578063f2fde38b14610f81578063ff93b73914610fa757610294565b8063c324a25814610d8c578063c4d66de814610db2578063c9f8993a14610dd8578063cbaed37714610e04578063d4ce141514610e2a578063dabf9a2314610e7657610294565b8063a7f897cf11610120578063a7f897cf14610b51578063ab44318e14610c0f578063ac8a584a14610c7d578063b14abf4214610ca3578063b332c78014610cc6578063bc99cc3714610d8457610294565b806388817f4914610a225780638da5cb5b14610a905780638f32d59b14610a985780638f71292b14610aa05780639870d7fe14610abd5780639d50d14f14610ae357610294565b806339e18c1d1161020b5780636d70f7ae116101c45780636d70f7ae146108f0578063715018a61461091657806378084d711461091e5780637c5e07061461094a5780637d1ec28e146109705780637f4ab1dd1461098d57610294565b806339e18c1d146106d05780634c0a72581461078e5780635c83e3121461079657806361d807dc146107b357806365dc7454146107ed5780636b1278e8146108ab57610294565b8063273c14e51161025d578063273c14e5146103da5780632ab6f8db146104e85780632bfc388e146104f05780632d0c4ab9146105fe578063355003ae1461066c57806336dffedf1461069257610294565b80621e4150146102995780630b3ffd1d146102c85780630b97bc86146102f057806316f3b322146102f8578063224206e2146103b6575b600080fd5b6102b6600480360360208110156102af57600080fd5b5035611015565b60408051918252519081900360200190f35b6102ee600480360360208110156102de57600080fd5b50356001600160a01b0316611027565b005b6102b66110e8565b6102ee6004803603604081101561030e57600080fd5b810190602081018135600160201b81111561032857600080fd5b82018360208201111561033a57600080fd5b803590602001918460208302840111600160201b8311171561035b57600080fd5b919390929091602081019035600160201b81111561037857600080fd5b82018360208201111561038a57600080fd5b803590602001918460208302840111600160201b831117156103ab57600080fd5b5090925090506110ee565b6103be611320565b604080516001600160a01b039092168252519081900360200190f35b6102ee600480360360608110156103f057600080fd5b810190602081018135600160201b81111561040a57600080fd5b82018360208201111561041c57600080fd5b803590602001918460208302840111600160201b8311171561043d57600080fd5b919390929091602081019035600160201b81111561045a57600080fd5b82018360208201111561046c57600080fd5b803590602001918460208302840111600160201b8311171561048d57600080fd5b919390929091602081019035600160201b8111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460208302840111600160201b831117156104dd57600080fd5b50909250905061132f565b6102ee61149b565b6102ee6004803603606081101561050657600080fd5b810190602081018135600160201b81111561052057600080fd5b82018360208201111561053257600080fd5b803590602001918460208302840111600160201b8311171561055357600080fd5b919390929091602081019035600160201b81111561057057600080fd5b82018360208201111561058257600080fd5b803590602001918460208302840111600160201b831117156105a357600080fd5b919390929091602081019035600160201b8111156105c057600080fd5b8201836020820111156105d257600080fd5b803590602001918460208302840111600160201b831117156105f357600080fd5b5090925090506114a6565b6102ee6004803603602081101561061457600080fd5b810190602081018135600160201b81111561062e57600080fd5b82018360208201111561064057600080fd5b803590602001918460208302840111600160201b8311171561066157600080fd5b509092509050611548565b6103be6004803603602081101561068257600080fd5b50356001600160a01b03166115c8565b6102ee600480360360808110156106a857600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013515156115e3565b6102ee600480360360408110156106e657600080fd5b810190602081018135600160201b81111561070057600080fd5b82018360208201111561071257600080fd5b803590602001918460208302840111600160201b8311171561073357600080fd5b919390929091602081019035600160201b81111561075057600080fd5b82018360208201111561076257600080fd5b803590602001918460208302840111600160201b8311171561078357600080fd5b509092509050611ba8565b6102b6611de7565b6102b6600480360360208110156107ac57600080fd5b5035611ded565b6107d9600480360360208110156107c957600080fd5b50356001600160a01b0316611dff565b604080519115158252519081900360200190f35b6102ee6004803603604081101561080357600080fd5b810190602081018135600160201b81111561081d57600080fd5b82018360208201111561082f57600080fd5b803590602001918460208302840111600160201b8311171561085057600080fd5b919390929091602081019035600160201b81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460208302840111600160201b831117156108a057600080fd5b509092509050611e14565b6108d7600480360360408110156108c157600080fd5b506001600160a01b038135169060200135611ff1565b6040805192835260208301919091528051918290030190f35b6107d96004803603602081101561090657600080fd5b50356001600160a01b0316612043565b6102ee61205e565b6102ee6004803603604081101561093457600080fd5b506001600160a01b0381351690602001356120ef565b6103be6004803603602081101561096057600080fd5b50356001600160a01b0316612175565b6102b66004803603602081101561098657600080fd5b5035612190565b6109ad600480360360208110156109a357600080fd5b503560ff166121a2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109e75781810151838201526020016109cf565b50505050905090810190601f168015610a145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ee60048036036020811015610a3857600080fd5b810190602081018135600160201b811115610a5257600080fd5b820183602082011115610a6457600080fd5b803590602001918460208302840111600160201b83111715610a8557600080fd5b5090925090506122fd565b6103be612378565b6107d9612387565b6102ee60048036036020811015610ab657600080fd5b50356123ad565b6102ee60048036036020811015610ad357600080fd5b50356001600160a01b0316612470565b6102ee60048036036020811015610af957600080fd5b810190602081018135600160201b811115610b1357600080fd5b820183602082011115610b2557600080fd5b803590602001918460208302840111600160201b83111715610b4657600080fd5b5090925090506124c0565b6102ee60048036036040811015610b6757600080fd5b810190602081018135600160201b811115610b8157600080fd5b820183602082011115610b9357600080fd5b803590602001918460208302840111600160201b83111715610bb457600080fd5b919390929091602081019035600160201b811115610bd157600080fd5b820183602082011115610be357600080fd5b803590602001918460208302840111600160201b83111715610c0457600080fd5b509092509050612536565b6102ee60048036036020811015610c2557600080fd5b810190602081018135600160201b811115610c3f57600080fd5b820183602082011115610c5157600080fd5b803590602001918460208302840111600160201b83111715610c7257600080fd5b5090925090506125bf565b6102ee60048036036020811015610c9357600080fd5b50356001600160a01b031661263a565b6102ee60048036036040811015610cb957600080fd5b508035906020013561268a565b6102ee60048036036040811015610cdc57600080fd5b810190602081018135600160201b811115610cf657600080fd5b820183602082011115610d0857600080fd5b803590602001918460208302840111600160201b83111715610d2957600080fd5b919390929091602081019035600160201b811115610d4657600080fd5b820183602082011115610d5857600080fd5b803590602001918460208302840111600160201b83111715610d7957600080fd5b509092509050612719565b6102b6612843565b6107d960048036036020811015610da257600080fd5b50356001600160a01b0316612849565b6102ee60048036036020811015610dc857600080fd5b50356001600160a01b031661285e565b6102ee60048036036040811015610dee57600080fd5b506001600160a01b038135169060200135612891565b6102b660048036036020811015610e1a57600080fd5b50356001600160a01b03166129ad565b610e6060048036036060811015610e4057600080fd5b506001600160a01b038135811691602081013590911690604001356129bf565b6040805160ff9092168252519081900360200190f35b6102b660048036036040811015610e8c57600080fd5b5080359060200135612ad7565b6102b6612af4565b6102b660048036036020811015610eb757600080fd5b50356001600160a01b0316612afa565b6102ee60048036036020811015610edd57600080fd5b810190602081018135600160201b811115610ef757600080fd5b820183602082011115610f0957600080fd5b803590602001918460208302840111600160201b83111715610f2a57600080fd5b509092509050612bcb565b610f5b60048036036020811015610f4b57600080fd5b50356001600160a01b0316612d21565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6102ee60048036036020811015610f9757600080fd5b50356001600160a01b0316612d8a565b6102ee60048036036020811015610fbd57600080fd5b810190602081018135600160201b811115610fd757600080fd5b820183602082011115610fe957600080fd5b803590602001918460208302840111600160201b8311171561100a57600080fd5b509092509050612dda565b60a06020526000908152604090205481565b609954604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561107457600080fd5b505afa158015611088573d6000803e3d6000fd5b505050506040513d602081101561109e57600080fd5b5051156110dc5760405162461bcd60e51b8152600401808060200182810382526029815260200180613dfa6029913960400191505060405180910390fd5b6110e581612f4a565b50565b609a5481565b6110f733612043565b6111325760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8260005b8181101561131857600086868381811061114c57fe5b6001600160a01b036020918202939093013583166000818152609d9092526040909120549093509091161590506111ca576040805162461bcd60e51b815260206004820152601960248201527f555345525f57414c4c45545f414c52454144595f414444454400000000000000604482015290519081900360640190fd5b6001600160a01b03818116600090815260a8602052604090205416158061120b57506001600160a01b03808216600081815260a86020526040902054909116145b6112465760405162461bcd60e51b815260040180806020018281038252602a815260200180613d41602a913960400191505060405180910390fd5b600085858481811061125457fe5b90506020020135905080600014156112ad576040805162461bcd60e51b81526020600482015260176024820152761253959053125117d295549254d11250d51253d397d251604a1b604482015290519081900360640190fd5b6001600160a01b0382166000818152609d6020908152604080832080546001600160a01b03191685179055609e909152808220849055513392849290917fd063c5c14c27af07d5cd2f3e746975a6e2b806d4df0046f3734004ea82746bed9190a45050600101611136565b505050505050565b6099546001600160a01b031681565b611337612387565b611376576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b8460005b8181101561149157600088888381811061139057fe5b90506020020135905060008787848181106113a757fe5b9050602002013590506000821180156113c05750600081115b61140b576040805162461bcd60e51b81526020600482015260176024820152761253959053125117d295549254d11250d51253d397d251604a1b604482015290519081900360640190fd5b85858481811061141757fe5b6000858152609c60209081526040808320878452825290912091029290920135909155503381837f6b826749e25c3a52bd30d3153eca908526472a2941794c2255277b75e54ee23289898881811061146b57fe5b905060200201356040518082815260200191505060405180910390a4505060010161137a565b5050505050505050565b6114a43361309d565b565b6114af33612043565b6114ea5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8460005b818110156114915761154088888381811061150557fe5b905060200201356001600160a01b031687878481811061152157fe5b9050602002013586868581811061153457fe5b905060200201356130e5565b6001016114ee565b61155133612043565b61158c5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c3576115bb8383838181106115a657fe5b905060200201356001600160a01b031661325c565b60010161158f565b505050565b609d602052600090815260409020546001600160a01b031681565b6099546001600160a01b0316331461163b576040805162461bcd60e51b815260206004820152601660248201527543414c4c5f5649415f434f4e54524143545f4f4e4c5960501b604482015290519081900360640190fd5b6001600160a01b038316158015611650575080155b1561165a57611ba2565b6001600160a01b038085166000908152609d6020526040902054168015158061168a57506001600160a01b038516155b6116cf576040805162461bcd60e51b8152602060048201526011602482015270232927a6afaaa9a2a92faaa725a727aba760791b604482015290519081900360640190fd5b6001600160a01b038085166000908152609d602052604090205416801515806116ff57506001600160a01b038516155b611742576040805162461bcd60e51b815260206004820152600f60248201526e2a27afaaa9a2a92faaa725a727aba760891b604482015290519081900360640190fd5b6001600160a01b038616600090815260a7602052604090205460ff1615801561177357506001600160a01b03861615155b156117815761178186613468565b6001600160a01b038516600090815260a7602052604090205460ff161580156117b257506001600160a01b03851615155b156117c0576117c085613468565b609954604080516370a0823160e01b81526001600160a01b0389811660048301529151879392909216916370a0823191602480820192602092909190829003018186803b15801561181057600080fd5b505afa158015611824573d6000803e3d6000fd5b505050506040513d602081101561183a57600080fd5b505114801561185157506001600160a01b03861615155b1561185f5761185f86612f4a565b806001600160a01b0316826001600160a01b031614611318576001600160a01b038083166000908152609e60205260408082205492841682529020546118a4826135c5565b156118f6576040805162461bcd60e51b815260206004820152601860248201527f46524f4d5f4a5552495344494354494f4e5f48414c5445440000000000000000604482015290519081900360640190fd5b6118ff816135c5565b1561194a576040805162461bcd60e51b81526020600482015260166024820152751513d7d295549254d11250d51253d397d2105315115160521b604482015290519081900360640190fd5b6000828152609c60209081526040808320848452909152902054806119b2576040805162461bcd60e51b815260206004820152601960248201527844454e4945443a204a5552495344494354494f4e5f464c4f5760381b604482015290519081900360640190fd5b6001811180156119ca57506001600160a01b03881615155b156119df574281016119dd85828a6130e5565b505b6001600160a01b038916611a3f57609a54421015611a3a576040805162461bcd60e51b8152602060048201526013602482015272574149545f464f525f53544152545f4441544560681b604482015290519081900360640190fd5b611b9c565b6001600160a01b0385166000908152609e602052604090205b611a64818760006135e6565b15611a6e57611a73565b611a58565b609954604080516370a0823160e01b81526001600160a01b038d81166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015611ac457600080fd5b505afa158015611ad8573d6000803e3d6000fd5b505050506040513d6020811015611aee57600080fd5b5051905088811015611b3e576040805162461bcd60e51b8152602060048201526014602482015273494e53554646494349454e545f42414c414e434560601b604482015290519081900360640190fd5b8780611b5e57506001820154611b5a908a63ffffffff6136b616565b8110155b611b995760405162461bcd60e51b8152600401808060200182810382526021815260200180613d6b6021913960400191505060405180910390fd5b50505b50505050505b50505050565b611bb133612043565b611bec5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8260005b81811015611318576000868683818110611c0657fe5b602090810292909201356001600160a01b03166000818152609e909352604090922054919250611c719050576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b6000858584818110611c7f57fe5b6001600160a01b036020918202939093013583166000818152609d909252604090912054909350909116159050611cf4576040805162461bcd60e51b815260206004820152601460248201527315d05313115517d053149150511657d05111115160621b604482015290519081900360640190fd5b6001600160a01b03818116600090815260a86020526040902054161580611d3757506001600160a01b03818116600090815260a860205260409020548116908316145b611d88576040805162461bcd60e51b815260206004820152601a60248201527f415454454d50545f544f5f45584348414e47455f57414c4c4554000000000000604482015290519081900360640190fd5b6001600160a01b038181166000818152609d602052604080822080546001600160a01b0319169487169485179055513393917f53e962e61fe9ce77833285621e927b34612795a901a9d0814afec8c1732aa86291a45050600101611bf0565b60a25481565b60a46020526000908152604090205481565b60a76020526000908152604090205460ff1681565b611e1d33612043565b611e585760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8260005b81811015611318576000868683818110611e7257fe5b602090810292909201356001600160a01b03166000818152609e909352604090922054919250611edd9050576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b6000858584818110611eeb57fe5b9050602002013590508060001415611f44576040805162461bcd60e51b81526020600482015260176024820152761253959053125117d295549254d11250d51253d397d251604a1b604482015290519081900360640190fd5b6001600160a01b038216600090815260a5602052604090205460ff1615611fa0576001600160a01b0382166000908152609e6020908152604080832054835260a490915280822080546000190190558282529020805460010190555b6001600160a01b0382166000818152609e6020526040808220849055513392849290917f5d97ebcd5ff20c95c3c5deb68791a187b6b51625d256e95baa0a881b1c3548d99190a45050600101611e5c565b600080611ffc613ca4565b5050506001600160a01b03919091166000908152609f6020908152604080832093835292815290829020825180840190935280548084526001909101549290910182905291565b600061205660668363ffffffff61371016565b90505b919050565b612066612387565b6120a5576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6001600160a01b0382166000908152609e60205260409020805461214c576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b60005b82811015611ba257612163828560006135e6565b1561216d57611ba2565b60010161214f565b60a8602052600090815260409020546001600160a01b031681565b60a36020526000908152604090205481565b606060ff82166121d057506040805180820190915260078152665355434345535360c81b6020820152612059565b60ff821660011415612212575060408051808201909152601981527844454e4945443a204a5552495344494354494f4e5f464c4f5760381b6020820152612059565b60ff821660021415612249575060408051808201909152600e81526d044454e4945443a204c4f434b55560941b6020820152612059565b60ff82166003141561228657506040805180820190915260148152732222a724a2a21d102aa9a2a92faaa725a727aba760611b6020820152612059565b60ff8216600414156122cc575060408051808201909152601981527f44454e4945443a204a5552495344494354494f4e5f48414c54000000000000006020820152612059565b50506040805180820190915260158152742222a724a2a21d102aa725a727aba72fa2a92927a960591b602082015290565b61230633612043565b6123415760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c35761237083838381811061235b57fe5b905060200201356001600160a01b0316613777565b600101612344565b6033546001600160a01b031690565b6033546000906001600160a01b031661239e6138ab565b6001600160a01b031614905090565b6123b5612387565b6123f4576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b60a2548110156124355760405162461bcd60e51b815260040180806020018281038252602d815260200180613ebe602d913960400191505060405180910390fd5b60a18190556040805182815290517f551e8b37e1626747768962f97a6d271e38f975a55381bb8cca2347892d56ddbb9181900360200190a150565b612478612387565b6124b7576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6110e5816138af565b6124c8612387565b612507576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b8060005b81811015611ba25761252e84848381811061252257fe5b905060200201356138f7565b60010161250b565b61253e612387565b61257d576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b8260005b81811015611318576125b786868381811061259857fe5b905060200201358585848181106125ab57fe5b9050602002013561397c565b600101612581565b6125c833612043565b6126035760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c35761263283838381811061261d57fe5b905060200201356001600160a01b0316613468565b600101612606565b612642612387565b612681576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6110e58161309d565b612692612387565b6126d1576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b609a829055609b8190556040805183815260208101839052815133927f351bf262cacaf0ec30f703f14f08fe31647e71580fb5b0d950ba3c274144b5ae928290030190a25050565b612721612387565b612760576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b60005b8381101561283c57600085858381811061277957fe5b905060200201359050600084848481811061279057fe5b90506020020135905060a46000838152602001908152602001600020548110156127eb5760405162461bcd60e51b815260040180806020018281038252602d815260200180613ebe602d913960400191505060405180910390fd5b600082815260a360209081526040918290208390558151838152915184927fcb42e429db87b4956833278b16a22707c23658595f90ec0bd507b10591ef845e92908290030190a25050600101612763565b5050505050565b60a15481565b60a56020526000908152604090205460ff1681565b61286733613a1b565b61286f613b0c565b609980546001600160a01b0319166001600160a01b0392909216919091179055565b61289a33612043565b6128d55760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b6001600160a01b0382166000908152609e602052604090208054612932576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b8060020154821161297d576040805162461bcd60e51b815260206004820152601060248201526f1053149150511657d5539313d0d2d15160821b604482015290519081900360640190fd5b6002810154820360005b8181101561283c5761299b838660016135e6565b156129a55761283c565b600101612987565b60a66020526000908152604090205481565b6001600160a01b038084166000908152609d6020526040808220548584168352908220549192908116911681158015612a0057506001600160a01b03861615155b80612a2557506001600160a01b038116158015612a2557506001600160a01b03851615155b15612a3557600392505050612ad0565b806001600160a01b0316826001600160a01b031614612ac9576001600160a01b038083166000908152609e6020526040808220549284168252902054612a7a826135c5565b80612a895750612a89816135c5565b15612a9b576004945050505050612ad0565b6000828152609c60209081526040808320848452909152902054612ac6576001945050505050612ad0565b50505b6000925050505b9392505050565b6000918252609c6020908152604080842092845291905290205490565b609b5481565b6000612b04613cbe565b50506001600160a01b0381166000908152609e6020908152604091829020825160808101845281548152600182015492810183905260028201549381018490526003909101546060820181905291929091905b81811015612bc357612b67613ca4565b506001600160a01b0385166000908152609f602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152421015612bb35750612bc3565b6020015190930392600101612b57565b505050919050565b612bd433612043565b612c0f5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c3576099546001600160a01b03166370a08231848484818110612c3757fe5b905060200201356001600160a01b03166040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612c8d57600080fd5b505afa158015612ca1573d6000803e3d6000fd5b505050506040513d6020811015612cb757600080fd5b505115612cf55760405162461bcd60e51b8152600401808060200182810382526029815260200180613dfa6029913960400191505060405180910390fd5b612d19838383818110612d0457fe5b905060200201356001600160a01b0316612f4a565b600101612c12565b600080600080612d2f613cbe565b505050506001600160a01b03919091166000908152609e602090815260409182902082516080810184528154808252600183015493820184905260028301549482018590526003909201546060909101819052909491935090565b612d92612387565b612dd1576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6110e581613b15565b612de333612043565b612e1e5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8060005b81811015611ba2576000848483818110612e3857fe5b6001600160a01b036020918202939093013583166000818152609d90925260409091205490935090911615159050612eaa576040805162461bcd60e51b815260206004820152601060248201526f15d05313115517d393d517d193d5539160821b604482015290519081900360640190fd5b6001600160a01b038116600090815260a7602052604090205460ff1615612ed457612ed481612f4a565b6001600160a01b038181166000818152609d60208181526040808420805460a884528286208054919098166001600160a01b0319918216179097559290915281549094169055915133927f2007443167b0169b3aa7607d3d8b1c34e46c921c9ced575762b2f22d737a3d0991a350600101612e22565b6001600160a01b038082166000908152609d60205260409020541680612fa6576040805162461bcd60e51b815260206004820152600c60248201526b2aa9a2a92faaa725a727aba760a11b604482015290519081900360640190fd5b6001600160a01b038216600090815260a7602052604090205460ff16613013576040805162461bcd60e51b815260206004820152601a60248201527f414c52454144595f44454143544956415445445f57414c4c4554000000000000604482015290519081900360640190fd5b6001600160a01b03808216600081815260a660209081526040808320805460001901905593861680835260a7909152838220805460ff1916905592517f2ef811d7254e0de6fde78feafe4df7645aaa65aede0c7633fe618aa95980af389190a36001600160a01b038116600090815260a660205260409020546130995761309981613777565b5050565b6130ae60668263ffffffff613bb616565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b8015806130f25750428211155b156130fc576115c3565b6040805183815260208101839052815133926001600160a01b038716927f0c2a6928dd0ff2711056b955763131ec1585c1913f3b5f543edbee23b95c2bf6929081900390910190a36001600160a01b0383166000908152609e6020526040902080546131a1576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b60018101546131b6908363ffffffff6136b616565b600182015560038101541561320d576001600160a01b0384166000908152609f6020908152604080832060038501546000190184529091529020609b54815401841161320b57600101805483019055506115c3565b505b60408051808201825293845260208085019384526001600160a01b03959095166000908152609f8652818120600393909301805482529290955290932091518255516001918201558154019055565b6001600160a01b0381166000908152609e60205260409020546132b8576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b6001600160a01b038116600090815260a5602052604090205460ff161561331e576040805162461bcd60e51b815260206004820152601560248201527420a62922a0a22cafa2a72624a9aa22a22faaa9a2a960591b604482015290519081900360640190fd5b6001600160a01b038116600090815260a560209081526040808320805460ff19166001908117909155609e9092529091205460a280549092019182905560a154909190158061336f575060a1548111155b6133c0576040805162461bcd60e51b815260206004820152601760248201527f455843454544494e475f4d41585f494e564553544f5253000000000000000000604482015290519081900360640190fd5b600082815260a46020908152604080832080546001019081905560a3909252909120548015806133f05750808211155b61342b5760405162461bcd60e51b8152600401808060200182810382526024815260200180613d8c6024913960400191505060405180910390fd5b60405184906001600160a01b038716907f5b8bebd237f018217c7f57d8199d046879cd48f23153a9d97881339c9194472390600090a35050505050565b6001600160a01b038082166000908152609d602052604090205416806134c4576040805162461bcd60e51b815260206004820152600c60248201526b2aa9a2a92faaa725a727aba760a11b604482015290519081900360640190fd5b6001600160a01b038216600090815260a7602052604090205460ff1615613532576040805162461bcd60e51b815260206004820152601860248201527f414c52454144595f4143544956415445445f57414c4c45540000000000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260a5602052604090205460ff1661355b5761355b8161325c565b6001600160a01b03808216600081815260a6602090815260408083208054600190810190915594871680845260a7909252808320805460ff191690951790945592517f969805c5ca0bb66e202be05f2030c51ed429dd2abb9f38f7a2cbf70cba437ac19190a35050565b600081815260a060205260408120548015801590612ad05750421092915050565b600083600301548460020154106135ff57506001612ad0565b6001600160a01b0383166000908152609f60209081526040808320600288015484529091529020805442108015613634575082155b15613643576001915050612ad0565b6001810154604080519182525133916001600160a01b038716917f899c46f518cbddf4064d807f68b89d253cbd3a60590c1cfda1ebc7be1bd4f85a9181900360200190a3600181810180548783018054919091039055600290960180549091019055600094859055849055509192915050565b600082820183811015612ad0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b0382166137575760405162461bcd60e51b8152600401808060200182810382526022815260200180613e436022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038116600090815260a5602052604090205460ff166137dc576040805162461bcd60e51b815260206004820152601560248201527420a62922a0a22cafa222a624a9aa22a22faaa9a2a960591b604482015290519081900360640190fd5b6001600160a01b038116600090815260a66020526040902054156138315760405162461bcd60e51b8152600401808060200182810382526029815260200180613db06029913960400191505060405180910390fd5b6001600160a01b038116600081815260a560209081526040808320805460ff19169055609e82528083205460a2805460001990810190915581855260a49093528184208054909301909255519092839290917f77ae7d1d213b9a372071750d0c47b21fa40ee406e3f90ee0f8dfd58e420daae69190a35050565b3390565b6138c060668263ffffffff613c1d16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b600081815260a060205260409020546139415760405162461bcd60e51b815260040180806020018281038252602b815260200180613e93602b913960400191505060405180910390fd5b600081815260a060205260408082208290555182917fba4c77222d39a691cd2dc2b3e6e8d9e36d8ae9d00f5900eb3255ad07814d723791a250565b4281116139d0576040805162461bcd60e51b815260206004820152601960248201527f48414c545f4455455f53484f554c445f42455f46555455524500000000000000604482015290519081900360640190fd5b600082815260a060209081526040918290208390558151838152915184927feec889a379fc3ebfbe08af4bca4f829c13d084525662d500400841a34f22b50e92908290030190a25050565b600054610100900460ff1680613a345750613a34613c9e565b80613a42575060005460ff16155b613a7d5760405162461bcd60e51b815260040180806020018281038252602e815260200180613e65602e913960400191505060405180910390fd5b600054610100900460ff16158015613aa8576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015613099576000805461ff00191690555050565b6114a4336138af565b6001600160a01b038116613b5a5760405162461bcd60e51b8152600401808060200182810382526026815260200180613ce76026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b613bc08282613710565b613bfb5760405162461bcd60e51b8152600401808060200182810382526021815260200180613dd96021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b613c278282613710565b15613c79576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b303b1590565b604051806040016040528060008152602001600081525090565b604051806080016040528060008152602001600081526020016000815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f70657261746f72526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204f70657261746f7220726f6c65415454454d50545f544f5f4144445f50524556494f55535f57414c4c45545f41535f4e45575f55534552494e53554646494349454e545f5452414e5346455241424c455f42414c414e4345455843454544494e475f4a5552495344494354494f4e5f4d41585f494e564553544f5253415454454d50545f544f5f44454c4953545f555345525f574954485f4143544956455f57414c4c4554526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65415454454d50545f544f5f444541435449564154455f57414c4c45545f574954485f42414c414e43454f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564415454454d50545f544f5f524553554d455f4e4f4e455f48414c5445445f4a555249534449434154494f4e4c494d49545f53484f554c445f42455f4c41524745525f5448414e5f43555252454e545f494e564553544f5253a265627a7a723158204d48730ce395ccfba909e1fcec01453029ac68f0a67b2421dec2a2e3d9a8640c64736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102945760003560e01c806388817f4911610167578063c324a258116100ce578063ddbe65a211610087578063ddbe65a214610e99578063e91e7fc514610ea1578063f11b5ded14610ec7578063f20b7e7b14610f35578063f2fde38b14610f81578063ff93b73914610fa757610294565b8063c324a25814610d8c578063c4d66de814610db2578063c9f8993a14610dd8578063cbaed37714610e04578063d4ce141514610e2a578063dabf9a2314610e7657610294565b8063a7f897cf11610120578063a7f897cf14610b51578063ab44318e14610c0f578063ac8a584a14610c7d578063b14abf4214610ca3578063b332c78014610cc6578063bc99cc3714610d8457610294565b806388817f4914610a225780638da5cb5b14610a905780638f32d59b14610a985780638f71292b14610aa05780639870d7fe14610abd5780639d50d14f14610ae357610294565b806339e18c1d1161020b5780636d70f7ae116101c45780636d70f7ae146108f0578063715018a61461091657806378084d711461091e5780637c5e07061461094a5780637d1ec28e146109705780637f4ab1dd1461098d57610294565b806339e18c1d146106d05780634c0a72581461078e5780635c83e3121461079657806361d807dc146107b357806365dc7454146107ed5780636b1278e8146108ab57610294565b8063273c14e51161025d578063273c14e5146103da5780632ab6f8db146104e85780632bfc388e146104f05780632d0c4ab9146105fe578063355003ae1461066c57806336dffedf1461069257610294565b80621e4150146102995780630b3ffd1d146102c85780630b97bc86146102f057806316f3b322146102f8578063224206e2146103b6575b600080fd5b6102b6600480360360208110156102af57600080fd5b5035611015565b60408051918252519081900360200190f35b6102ee600480360360208110156102de57600080fd5b50356001600160a01b0316611027565b005b6102b66110e8565b6102ee6004803603604081101561030e57600080fd5b810190602081018135600160201b81111561032857600080fd5b82018360208201111561033a57600080fd5b803590602001918460208302840111600160201b8311171561035b57600080fd5b919390929091602081019035600160201b81111561037857600080fd5b82018360208201111561038a57600080fd5b803590602001918460208302840111600160201b831117156103ab57600080fd5b5090925090506110ee565b6103be611320565b604080516001600160a01b039092168252519081900360200190f35b6102ee600480360360608110156103f057600080fd5b810190602081018135600160201b81111561040a57600080fd5b82018360208201111561041c57600080fd5b803590602001918460208302840111600160201b8311171561043d57600080fd5b919390929091602081019035600160201b81111561045a57600080fd5b82018360208201111561046c57600080fd5b803590602001918460208302840111600160201b8311171561048d57600080fd5b919390929091602081019035600160201b8111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460208302840111600160201b831117156104dd57600080fd5b50909250905061132f565b6102ee61149b565b6102ee6004803603606081101561050657600080fd5b810190602081018135600160201b81111561052057600080fd5b82018360208201111561053257600080fd5b803590602001918460208302840111600160201b8311171561055357600080fd5b919390929091602081019035600160201b81111561057057600080fd5b82018360208201111561058257600080fd5b803590602001918460208302840111600160201b831117156105a357600080fd5b919390929091602081019035600160201b8111156105c057600080fd5b8201836020820111156105d257600080fd5b803590602001918460208302840111600160201b831117156105f357600080fd5b5090925090506114a6565b6102ee6004803603602081101561061457600080fd5b810190602081018135600160201b81111561062e57600080fd5b82018360208201111561064057600080fd5b803590602001918460208302840111600160201b8311171561066157600080fd5b509092509050611548565b6103be6004803603602081101561068257600080fd5b50356001600160a01b03166115c8565b6102ee600480360360808110156106a857600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013515156115e3565b6102ee600480360360408110156106e657600080fd5b810190602081018135600160201b81111561070057600080fd5b82018360208201111561071257600080fd5b803590602001918460208302840111600160201b8311171561073357600080fd5b919390929091602081019035600160201b81111561075057600080fd5b82018360208201111561076257600080fd5b803590602001918460208302840111600160201b8311171561078357600080fd5b509092509050611ba8565b6102b6611de7565b6102b6600480360360208110156107ac57600080fd5b5035611ded565b6107d9600480360360208110156107c957600080fd5b50356001600160a01b0316611dff565b604080519115158252519081900360200190f35b6102ee6004803603604081101561080357600080fd5b810190602081018135600160201b81111561081d57600080fd5b82018360208201111561082f57600080fd5b803590602001918460208302840111600160201b8311171561085057600080fd5b919390929091602081019035600160201b81111561086d57600080fd5b82018360208201111561087f57600080fd5b803590602001918460208302840111600160201b831117156108a057600080fd5b509092509050611e14565b6108d7600480360360408110156108c157600080fd5b506001600160a01b038135169060200135611ff1565b6040805192835260208301919091528051918290030190f35b6107d96004803603602081101561090657600080fd5b50356001600160a01b0316612043565b6102ee61205e565b6102ee6004803603604081101561093457600080fd5b506001600160a01b0381351690602001356120ef565b6103be6004803603602081101561096057600080fd5b50356001600160a01b0316612175565b6102b66004803603602081101561098657600080fd5b5035612190565b6109ad600480360360208110156109a357600080fd5b503560ff166121a2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109e75781810151838201526020016109cf565b50505050905090810190601f168015610a145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ee60048036036020811015610a3857600080fd5b810190602081018135600160201b811115610a5257600080fd5b820183602082011115610a6457600080fd5b803590602001918460208302840111600160201b83111715610a8557600080fd5b5090925090506122fd565b6103be612378565b6107d9612387565b6102ee60048036036020811015610ab657600080fd5b50356123ad565b6102ee60048036036020811015610ad357600080fd5b50356001600160a01b0316612470565b6102ee60048036036020811015610af957600080fd5b810190602081018135600160201b811115610b1357600080fd5b820183602082011115610b2557600080fd5b803590602001918460208302840111600160201b83111715610b4657600080fd5b5090925090506124c0565b6102ee60048036036040811015610b6757600080fd5b810190602081018135600160201b811115610b8157600080fd5b820183602082011115610b9357600080fd5b803590602001918460208302840111600160201b83111715610bb457600080fd5b919390929091602081019035600160201b811115610bd157600080fd5b820183602082011115610be357600080fd5b803590602001918460208302840111600160201b83111715610c0457600080fd5b509092509050612536565b6102ee60048036036020811015610c2557600080fd5b810190602081018135600160201b811115610c3f57600080fd5b820183602082011115610c5157600080fd5b803590602001918460208302840111600160201b83111715610c7257600080fd5b5090925090506125bf565b6102ee60048036036020811015610c9357600080fd5b50356001600160a01b031661263a565b6102ee60048036036040811015610cb957600080fd5b508035906020013561268a565b6102ee60048036036040811015610cdc57600080fd5b810190602081018135600160201b811115610cf657600080fd5b820183602082011115610d0857600080fd5b803590602001918460208302840111600160201b83111715610d2957600080fd5b919390929091602081019035600160201b811115610d4657600080fd5b820183602082011115610d5857600080fd5b803590602001918460208302840111600160201b83111715610d7957600080fd5b509092509050612719565b6102b6612843565b6107d960048036036020811015610da257600080fd5b50356001600160a01b0316612849565b6102ee60048036036020811015610dc857600080fd5b50356001600160a01b031661285e565b6102ee60048036036040811015610dee57600080fd5b506001600160a01b038135169060200135612891565b6102b660048036036020811015610e1a57600080fd5b50356001600160a01b03166129ad565b610e6060048036036060811015610e4057600080fd5b506001600160a01b038135811691602081013590911690604001356129bf565b6040805160ff9092168252519081900360200190f35b6102b660048036036040811015610e8c57600080fd5b5080359060200135612ad7565b6102b6612af4565b6102b660048036036020811015610eb757600080fd5b50356001600160a01b0316612afa565b6102ee60048036036020811015610edd57600080fd5b810190602081018135600160201b811115610ef757600080fd5b820183602082011115610f0957600080fd5b803590602001918460208302840111600160201b83111715610f2a57600080fd5b509092509050612bcb565b610f5b60048036036020811015610f4b57600080fd5b50356001600160a01b0316612d21565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6102ee60048036036020811015610f9757600080fd5b50356001600160a01b0316612d8a565b6102ee60048036036020811015610fbd57600080fd5b810190602081018135600160201b811115610fd757600080fd5b820183602082011115610fe957600080fd5b803590602001918460208302840111600160201b8311171561100a57600080fd5b509092509050612dda565b60a06020526000908152604090205481565b609954604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561107457600080fd5b505afa158015611088573d6000803e3d6000fd5b505050506040513d602081101561109e57600080fd5b5051156110dc5760405162461bcd60e51b8152600401808060200182810382526029815260200180613dfa6029913960400191505060405180910390fd5b6110e581612f4a565b50565b609a5481565b6110f733612043565b6111325760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8260005b8181101561131857600086868381811061114c57fe5b6001600160a01b036020918202939093013583166000818152609d9092526040909120549093509091161590506111ca576040805162461bcd60e51b815260206004820152601960248201527f555345525f57414c4c45545f414c52454144595f414444454400000000000000604482015290519081900360640190fd5b6001600160a01b03818116600090815260a8602052604090205416158061120b57506001600160a01b03808216600081815260a86020526040902054909116145b6112465760405162461bcd60e51b815260040180806020018281038252602a815260200180613d41602a913960400191505060405180910390fd5b600085858481811061125457fe5b90506020020135905080600014156112ad576040805162461bcd60e51b81526020600482015260176024820152761253959053125117d295549254d11250d51253d397d251604a1b604482015290519081900360640190fd5b6001600160a01b0382166000818152609d6020908152604080832080546001600160a01b03191685179055609e909152808220849055513392849290917fd063c5c14c27af07d5cd2f3e746975a6e2b806d4df0046f3734004ea82746bed9190a45050600101611136565b505050505050565b6099546001600160a01b031681565b611337612387565b611376576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b8460005b8181101561149157600088888381811061139057fe5b90506020020135905060008787848181106113a757fe5b9050602002013590506000821180156113c05750600081115b61140b576040805162461bcd60e51b81526020600482015260176024820152761253959053125117d295549254d11250d51253d397d251604a1b604482015290519081900360640190fd5b85858481811061141757fe5b6000858152609c60209081526040808320878452825290912091029290920135909155503381837f6b826749e25c3a52bd30d3153eca908526472a2941794c2255277b75e54ee23289898881811061146b57fe5b905060200201356040518082815260200191505060405180910390a4505060010161137a565b5050505050505050565b6114a43361309d565b565b6114af33612043565b6114ea5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8460005b818110156114915761154088888381811061150557fe5b905060200201356001600160a01b031687878481811061152157fe5b9050602002013586868581811061153457fe5b905060200201356130e5565b6001016114ee565b61155133612043565b61158c5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c3576115bb8383838181106115a657fe5b905060200201356001600160a01b031661325c565b60010161158f565b505050565b609d602052600090815260409020546001600160a01b031681565b6099546001600160a01b0316331461163b576040805162461bcd60e51b815260206004820152601660248201527543414c4c5f5649415f434f4e54524143545f4f4e4c5960501b604482015290519081900360640190fd5b6001600160a01b038316158015611650575080155b1561165a57611ba2565b6001600160a01b038085166000908152609d6020526040902054168015158061168a57506001600160a01b038516155b6116cf576040805162461bcd60e51b8152602060048201526011602482015270232927a6afaaa9a2a92faaa725a727aba760791b604482015290519081900360640190fd5b6001600160a01b038085166000908152609d602052604090205416801515806116ff57506001600160a01b038516155b611742576040805162461bcd60e51b815260206004820152600f60248201526e2a27afaaa9a2a92faaa725a727aba760891b604482015290519081900360640190fd5b6001600160a01b038616600090815260a7602052604090205460ff1615801561177357506001600160a01b03861615155b156117815761178186613468565b6001600160a01b038516600090815260a7602052604090205460ff161580156117b257506001600160a01b03851615155b156117c0576117c085613468565b609954604080516370a0823160e01b81526001600160a01b0389811660048301529151879392909216916370a0823191602480820192602092909190829003018186803b15801561181057600080fd5b505afa158015611824573d6000803e3d6000fd5b505050506040513d602081101561183a57600080fd5b505114801561185157506001600160a01b03861615155b1561185f5761185f86612f4a565b806001600160a01b0316826001600160a01b031614611318576001600160a01b038083166000908152609e60205260408082205492841682529020546118a4826135c5565b156118f6576040805162461bcd60e51b815260206004820152601860248201527f46524f4d5f4a5552495344494354494f4e5f48414c5445440000000000000000604482015290519081900360640190fd5b6118ff816135c5565b1561194a576040805162461bcd60e51b81526020600482015260166024820152751513d7d295549254d11250d51253d397d2105315115160521b604482015290519081900360640190fd5b6000828152609c60209081526040808320848452909152902054806119b2576040805162461bcd60e51b815260206004820152601960248201527844454e4945443a204a5552495344494354494f4e5f464c4f5760381b604482015290519081900360640190fd5b6001811180156119ca57506001600160a01b03881615155b156119df574281016119dd85828a6130e5565b505b6001600160a01b038916611a3f57609a54421015611a3a576040805162461bcd60e51b8152602060048201526013602482015272574149545f464f525f53544152545f4441544560681b604482015290519081900360640190fd5b611b9c565b6001600160a01b0385166000908152609e602052604090205b611a64818760006135e6565b15611a6e57611a73565b611a58565b609954604080516370a0823160e01b81526001600160a01b038d81166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015611ac457600080fd5b505afa158015611ad8573d6000803e3d6000fd5b505050506040513d6020811015611aee57600080fd5b5051905088811015611b3e576040805162461bcd60e51b8152602060048201526014602482015273494e53554646494349454e545f42414c414e434560601b604482015290519081900360640190fd5b8780611b5e57506001820154611b5a908a63ffffffff6136b616565b8110155b611b995760405162461bcd60e51b8152600401808060200182810382526021815260200180613d6b6021913960400191505060405180910390fd5b50505b50505050505b50505050565b611bb133612043565b611bec5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8260005b81811015611318576000868683818110611c0657fe5b602090810292909201356001600160a01b03166000818152609e909352604090922054919250611c719050576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b6000858584818110611c7f57fe5b6001600160a01b036020918202939093013583166000818152609d909252604090912054909350909116159050611cf4576040805162461bcd60e51b815260206004820152601460248201527315d05313115517d053149150511657d05111115160621b604482015290519081900360640190fd5b6001600160a01b03818116600090815260a86020526040902054161580611d3757506001600160a01b03818116600090815260a860205260409020548116908316145b611d88576040805162461bcd60e51b815260206004820152601a60248201527f415454454d50545f544f5f45584348414e47455f57414c4c4554000000000000604482015290519081900360640190fd5b6001600160a01b038181166000818152609d602052604080822080546001600160a01b0319169487169485179055513393917f53e962e61fe9ce77833285621e927b34612795a901a9d0814afec8c1732aa86291a45050600101611bf0565b60a25481565b60a46020526000908152604090205481565b60a76020526000908152604090205460ff1681565b611e1d33612043565b611e585760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8260005b81811015611318576000868683818110611e7257fe5b602090810292909201356001600160a01b03166000818152609e909352604090922054919250611edd9050576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b6000858584818110611eeb57fe5b9050602002013590508060001415611f44576040805162461bcd60e51b81526020600482015260176024820152761253959053125117d295549254d11250d51253d397d251604a1b604482015290519081900360640190fd5b6001600160a01b038216600090815260a5602052604090205460ff1615611fa0576001600160a01b0382166000908152609e6020908152604080832054835260a490915280822080546000190190558282529020805460010190555b6001600160a01b0382166000818152609e6020526040808220849055513392849290917f5d97ebcd5ff20c95c3c5deb68791a187b6b51625d256e95baa0a881b1c3548d99190a45050600101611e5c565b600080611ffc613ca4565b5050506001600160a01b03919091166000908152609f6020908152604080832093835292815290829020825180840190935280548084526001909101549290910182905291565b600061205660668363ffffffff61371016565b90505b919050565b612066612387565b6120a5576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6001600160a01b0382166000908152609e60205260409020805461214c576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b60005b82811015611ba257612163828560006135e6565b1561216d57611ba2565b60010161214f565b60a8602052600090815260409020546001600160a01b031681565b60a36020526000908152604090205481565b606060ff82166121d057506040805180820190915260078152665355434345535360c81b6020820152612059565b60ff821660011415612212575060408051808201909152601981527844454e4945443a204a5552495344494354494f4e5f464c4f5760381b6020820152612059565b60ff821660021415612249575060408051808201909152600e81526d044454e4945443a204c4f434b55560941b6020820152612059565b60ff82166003141561228657506040805180820190915260148152732222a724a2a21d102aa9a2a92faaa725a727aba760611b6020820152612059565b60ff8216600414156122cc575060408051808201909152601981527f44454e4945443a204a5552495344494354494f4e5f48414c54000000000000006020820152612059565b50506040805180820190915260158152742222a724a2a21d102aa725a727aba72fa2a92927a960591b602082015290565b61230633612043565b6123415760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c35761237083838381811061235b57fe5b905060200201356001600160a01b0316613777565b600101612344565b6033546001600160a01b031690565b6033546000906001600160a01b031661239e6138ab565b6001600160a01b031614905090565b6123b5612387565b6123f4576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b60a2548110156124355760405162461bcd60e51b815260040180806020018281038252602d815260200180613ebe602d913960400191505060405180910390fd5b60a18190556040805182815290517f551e8b37e1626747768962f97a6d271e38f975a55381bb8cca2347892d56ddbb9181900360200190a150565b612478612387565b6124b7576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6110e5816138af565b6124c8612387565b612507576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b8060005b81811015611ba25761252e84848381811061252257fe5b905060200201356138f7565b60010161250b565b61253e612387565b61257d576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b8260005b81811015611318576125b786868381811061259857fe5b905060200201358585848181106125ab57fe5b9050602002013561397c565b600101612581565b6125c833612043565b6126035760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c35761263283838381811061261d57fe5b905060200201356001600160a01b0316613468565b600101612606565b612642612387565b612681576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6110e58161309d565b612692612387565b6126d1576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b609a829055609b8190556040805183815260208101839052815133927f351bf262cacaf0ec30f703f14f08fe31647e71580fb5b0d950ba3c274144b5ae928290030190a25050565b612721612387565b612760576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b60005b8381101561283c57600085858381811061277957fe5b905060200201359050600084848481811061279057fe5b90506020020135905060a46000838152602001908152602001600020548110156127eb5760405162461bcd60e51b815260040180806020018281038252602d815260200180613ebe602d913960400191505060405180910390fd5b600082815260a360209081526040918290208390558151838152915184927fcb42e429db87b4956833278b16a22707c23658595f90ec0bd507b10591ef845e92908290030190a25050600101612763565b5050505050565b60a15481565b60a56020526000908152604090205460ff1681565b61286733613a1b565b61286f613b0c565b609980546001600160a01b0319166001600160a01b0392909216919091179055565b61289a33612043565b6128d55760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b6001600160a01b0382166000908152609e602052604090208054612932576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b8060020154821161297d576040805162461bcd60e51b815260206004820152601060248201526f1053149150511657d5539313d0d2d15160821b604482015290519081900360640190fd5b6002810154820360005b8181101561283c5761299b838660016135e6565b156129a55761283c565b600101612987565b60a66020526000908152604090205481565b6001600160a01b038084166000908152609d6020526040808220548584168352908220549192908116911681158015612a0057506001600160a01b03861615155b80612a2557506001600160a01b038116158015612a2557506001600160a01b03851615155b15612a3557600392505050612ad0565b806001600160a01b0316826001600160a01b031614612ac9576001600160a01b038083166000908152609e6020526040808220549284168252902054612a7a826135c5565b80612a895750612a89816135c5565b15612a9b576004945050505050612ad0565b6000828152609c60209081526040808320848452909152902054612ac6576001945050505050612ad0565b50505b6000925050505b9392505050565b6000918252609c6020908152604080842092845291905290205490565b609b5481565b6000612b04613cbe565b50506001600160a01b0381166000908152609e6020908152604091829020825160808101845281548152600182015492810183905260028201549381018490526003909101546060820181905291929091905b81811015612bc357612b67613ca4565b506001600160a01b0385166000908152609f602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152421015612bb35750612bc3565b6020015190930392600101612b57565b505050919050565b612bd433612043565b612c0f5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b60005b818110156115c3576099546001600160a01b03166370a08231848484818110612c3757fe5b905060200201356001600160a01b03166040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612c8d57600080fd5b505afa158015612ca1573d6000803e3d6000fd5b505050506040513d6020811015612cb757600080fd5b505115612cf55760405162461bcd60e51b8152600401808060200182810382526029815260200180613dfa6029913960400191505060405180910390fd5b612d19838383818110612d0457fe5b905060200201356001600160a01b0316612f4a565b600101612c12565b600080600080612d2f613cbe565b505050506001600160a01b03919091166000908152609e602090815260409182902082516080810184528154808252600183015493820184905260028301549482018590526003909201546060909101819052909491935090565b612d92612387565b612dd1576040805162461bcd60e51b81526020600482018190526024820152600080516020613e23833981519152604482015290519081900360640190fd5b6110e581613b15565b612de333612043565b612e1e5760405162461bcd60e51b8152600401808060200182810382526034815260200180613d0d6034913960400191505060405180910390fd5b8060005b81811015611ba2576000848483818110612e3857fe5b6001600160a01b036020918202939093013583166000818152609d90925260409091205490935090911615159050612eaa576040805162461bcd60e51b815260206004820152601060248201526f15d05313115517d393d517d193d5539160821b604482015290519081900360640190fd5b6001600160a01b038116600090815260a7602052604090205460ff1615612ed457612ed481612f4a565b6001600160a01b038181166000818152609d60208181526040808420805460a884528286208054919098166001600160a01b0319918216179097559290915281549094169055915133927f2007443167b0169b3aa7607d3d8b1c34e46c921c9ced575762b2f22d737a3d0991a350600101612e22565b6001600160a01b038082166000908152609d60205260409020541680612fa6576040805162461bcd60e51b815260206004820152600c60248201526b2aa9a2a92faaa725a727aba760a11b604482015290519081900360640190fd5b6001600160a01b038216600090815260a7602052604090205460ff16613013576040805162461bcd60e51b815260206004820152601a60248201527f414c52454144595f44454143544956415445445f57414c4c4554000000000000604482015290519081900360640190fd5b6001600160a01b03808216600081815260a660209081526040808320805460001901905593861680835260a7909152838220805460ff1916905592517f2ef811d7254e0de6fde78feafe4df7645aaa65aede0c7633fe618aa95980af389190a36001600160a01b038116600090815260a660205260409020546130995761309981613777565b5050565b6130ae60668263ffffffff613bb616565b6040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b8015806130f25750428211155b156130fc576115c3565b6040805183815260208101839052815133926001600160a01b038716927f0c2a6928dd0ff2711056b955763131ec1585c1913f3b5f543edbee23b95c2bf6929081900390910190a36001600160a01b0383166000908152609e6020526040902080546131a1576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b60018101546131b6908363ffffffff6136b616565b600182015560038101541561320d576001600160a01b0384166000908152609f6020908152604080832060038501546000190184529091529020609b54815401841161320b57600101805483019055506115c3565b505b60408051808201825293845260208085019384526001600160a01b03959095166000908152609f8652818120600393909301805482529290955290932091518255516001918201558154019055565b6001600160a01b0381166000908152609e60205260409020546132b8576040805162461bcd60e51b815260206004820152600f60248201526e2aa9a2a92fa4a22faaa725a727aba760891b604482015290519081900360640190fd5b6001600160a01b038116600090815260a5602052604090205460ff161561331e576040805162461bcd60e51b815260206004820152601560248201527420a62922a0a22cafa2a72624a9aa22a22faaa9a2a960591b604482015290519081900360640190fd5b6001600160a01b038116600090815260a560209081526040808320805460ff19166001908117909155609e9092529091205460a280549092019182905560a154909190158061336f575060a1548111155b6133c0576040805162461bcd60e51b815260206004820152601760248201527f455843454544494e475f4d41585f494e564553544f5253000000000000000000604482015290519081900360640190fd5b600082815260a46020908152604080832080546001019081905560a3909252909120548015806133f05750808211155b61342b5760405162461bcd60e51b8152600401808060200182810382526024815260200180613d8c6024913960400191505060405180910390fd5b60405184906001600160a01b038716907f5b8bebd237f018217c7f57d8199d046879cd48f23153a9d97881339c9194472390600090a35050505050565b6001600160a01b038082166000908152609d602052604090205416806134c4576040805162461bcd60e51b815260206004820152600c60248201526b2aa9a2a92faaa725a727aba760a11b604482015290519081900360640190fd5b6001600160a01b038216600090815260a7602052604090205460ff1615613532576040805162461bcd60e51b815260206004820152601860248201527f414c52454144595f4143544956415445445f57414c4c45540000000000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260a5602052604090205460ff1661355b5761355b8161325c565b6001600160a01b03808216600081815260a6602090815260408083208054600190810190915594871680845260a7909252808320805460ff191690951790945592517f969805c5ca0bb66e202be05f2030c51ed429dd2abb9f38f7a2cbf70cba437ac19190a35050565b600081815260a060205260408120548015801590612ad05750421092915050565b600083600301548460020154106135ff57506001612ad0565b6001600160a01b0383166000908152609f60209081526040808320600288015484529091529020805442108015613634575082155b15613643576001915050612ad0565b6001810154604080519182525133916001600160a01b038716917f899c46f518cbddf4064d807f68b89d253cbd3a60590c1cfda1ebc7be1bd4f85a9181900360200190a3600181810180548783018054919091039055600290960180549091019055600094859055849055509192915050565b600082820183811015612ad0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b0382166137575760405162461bcd60e51b8152600401808060200182810382526022815260200180613e436022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038116600090815260a5602052604090205460ff166137dc576040805162461bcd60e51b815260206004820152601560248201527420a62922a0a22cafa222a624a9aa22a22faaa9a2a960591b604482015290519081900360640190fd5b6001600160a01b038116600090815260a66020526040902054156138315760405162461bcd60e51b8152600401808060200182810382526029815260200180613db06029913960400191505060405180910390fd5b6001600160a01b038116600081815260a560209081526040808320805460ff19169055609e82528083205460a2805460001990810190915581855260a49093528184208054909301909255519092839290917f77ae7d1d213b9a372071750d0c47b21fa40ee406e3f90ee0f8dfd58e420daae69190a35050565b3390565b6138c060668263ffffffff613c1d16565b6040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b600081815260a060205260409020546139415760405162461bcd60e51b815260040180806020018281038252602b815260200180613e93602b913960400191505060405180910390fd5b600081815260a060205260408082208290555182917fba4c77222d39a691cd2dc2b3e6e8d9e36d8ae9d00f5900eb3255ad07814d723791a250565b4281116139d0576040805162461bcd60e51b815260206004820152601960248201527f48414c545f4455455f53484f554c445f42455f46555455524500000000000000604482015290519081900360640190fd5b600082815260a060209081526040918290208390558151838152915184927feec889a379fc3ebfbe08af4bca4f829c13d084525662d500400841a34f22b50e92908290030190a25050565b600054610100900460ff1680613a345750613a34613c9e565b80613a42575060005460ff16155b613a7d5760405162461bcd60e51b815260040180806020018281038252602e815260200180613e65602e913960400191505060405180910390fd5b600054610100900460ff16158015613aa8576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015613099576000805461ff00191690555050565b6114a4336138af565b6001600160a01b038116613b5a5760405162461bcd60e51b8152600401808060200182810382526026815260200180613ce76026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b613bc08282613710565b613bfb5760405162461bcd60e51b8152600401808060200182810382526021815260200180613dd96021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b613c278282613710565b15613c79576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b303b1590565b604051806040016040528060008152602001600081525090565b604051806080016040528060008152602001600081526020016000815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f70657261746f72526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204f70657261746f7220726f6c65415454454d50545f544f5f4144445f50524556494f55535f57414c4c45545f41535f4e45575f55534552494e53554646494349454e545f5452414e5346455241424c455f42414c414e4345455843454544494e475f4a5552495344494354494f4e5f4d41585f494e564553544f5253415454454d50545f544f5f44454c4953545f555345525f574954485f4143544956455f57414c4c4554526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65415454454d50545f544f5f444541435449564154455f57414c4c45545f574954485f42414c414e43454f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564415454454d50545f544f5f524553554d455f4e4f4e455f48414c5445445f4a555249534449434154494f4e4c494d49545f53484f554c445f42455f4c41524745525f5448414e5f43555252454e545f494e564553544f5253a265627a7a723158204d48730ce395ccfba909e1fcec01453029ac68f0a67b2421dec2a2e3d9a8640c64736f6c63430005110032",
  "sourceMap": "464:29635:3:-;;;;;;;;;",
  "deployedSourceMap": "464:29635:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;464:29635:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5418:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5418:51:3;;:::i;:::-;;;;;;;;;;;;;;;;24338:196;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24338:196:3;-1:-1:-1;;;;;24338:196:3;;:::i;:::-;;2775:21;;;:::i;12861:816::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12861:816:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12861:816:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12861:816:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12861:816:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12861:816:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12861:816:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;12861:816:3;;-1:-1:-1;12861:816:3;-1:-1:-1;12861:816:3;:::i;2612:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2612:29:3;;;;;;;;;;;;;;11989:723;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11989:723:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11989:723:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11989:723:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11989:723:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11989:723:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11989:723:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11989:723:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11989:723:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11989:723:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;11989:723:3;;-1:-1:-1;11989:723:3;-1:-1:-1;11989:723:3;:::i;1260:73:8:-;;;:::i;18036:370:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18036:370:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;18036:370:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18036:370:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18036:370:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;18036:370:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18036:370:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18036:370:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;18036:370:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18036:370:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;18036:370:3;;-1:-1:-1;18036:370:3;-1:-1:-1;18036:370:3;:::i;25267:168::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25267:168:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25267:168:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25267:168:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25267:168:3;;-1:-1:-1;25267:168:3;-1:-1:-1;25267:168:3;:::i;3917:59::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3917:59:3;-1:-1:-1;;;;;3917:59:3;;:::i;27156:2941::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;27156:2941:3;;;;;;;;;;;;;;;;;;;;;;;;:::i;13761:784::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13761:784:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13761:784:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13761:784:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13761:784:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13761:784:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13761:784:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;13761:784:3;;-1:-1:-1;13761:784:3;-1:-1:-1;13761:784:3;:::i;5683:28::-;;;:::i;5898:59::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5898:59:3;;:::i;6399:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6399:47:3;-1:-1:-1;;;;;6399:47:3;;:::i;:::-;;;;;;;;;;;;;;;;;;15490:932;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15490:932:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15490:932:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15490:932:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15490:932:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15490:932:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15490:932:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;15490:932:3;;-1:-1:-1;15490:932:3;-1:-1:-1;15490:932:3;:::i;7780:293::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7780:293:3;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;963:105:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;963:105:8;-1:-1:-1;;;;;963:105:8;;:::i;1746:137:19:-;;;:::i;19645:309:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19645:309:3;;;;;;;;:::i;6525:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6525:46:3;-1:-1:-1;;;;;6525:46:3;;:::i;5777:55::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5777:55:3;;:::i;10179:639::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10179:639:3;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10179:639:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26248:168;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26248:168:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26248:168:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26248:168:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;26248:168:3;;-1:-1:-1;26248:168:3;-1:-1:-1;26248:168:3;:::i;959:77:19:-;;;:::i;1310:92::-;;;:::i;22395:218:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22395:218:3;;:::i;1072:87:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1072:87:8;-1:-1:-1;;;;;1072:87:8;;:::i;21773:196:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21773:196:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21773:196:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21773:196:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;21773:196:3;;-1:-1:-1;21773:196:3;-1:-1:-1;21773:196:3;:::i;21134:256::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21134:256:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21134:256:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21134:256:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21134:256:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21134:256:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21134:256:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;21134:256:3;;-1:-1:-1;21134:256:3;-1:-1:-1;21134:256:3;:::i;23565:176::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23565:176:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;23565:176:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23565:176:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;23565:176:3;;-1:-1:-1;23565:176:3;-1:-1:-1;23565:176:3;:::i;1163:93:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1163:93:8;-1:-1:-1;;;;;1163:93:8;;:::i;11300:245:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11300:245:3;;;;;;;:::i;22862:511::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22862:511:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22862:511:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22862:511:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;22862:511:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22862:511:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22862:511:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;22862:511:3;;-1:-1:-1;22862:511:3;-1:-1:-1;22862:511:3;:::i;5545:24::-;;;:::i;6123:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6123:48:3;-1:-1:-1;;;;;6123:48:3;;:::i;11032:173::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11032:173:3;-1:-1:-1;;;;;11032:173:3;;:::i;20229:462::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20229:462:3;;;;;;;;:::i;6259:53::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6259:53:3;-1:-1:-1;;;;;6259:53:3;;:::i;9233:942::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9233:942:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6969:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6969:208:3;;;;;;;:::i;2966:29::-;;;:::i;8344:607::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8344:607:3;-1:-1:-1;;;;;8344:607:3;;:::i;24538:285::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24538:285:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24538:285:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24538:285:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;24538:285:3;;-1:-1:-1;24538:285:3;-1:-1:-1;24538:285:3;:::i;7241:377::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7241:377:3;-1:-1:-1;;;;;7241:377:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2032:107:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2032:107:19;-1:-1:-1;;;;;2032:107:19;;:::i;14730:654:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14730:654:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14730:654:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14730:654:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;14730:654:3;;-1:-1:-1;14730:654:3;-1:-1:-1;14730:654:3;:::i;5418:51::-;;;;;;;;;;;;;:::o;24338:196::-;24412:15;;:34;;;-1:-1:-1;;;24412:34:3;;-1:-1:-1;;;;;24412:34:3;;;;;;;;;:15;;;;;:25;;:34;;;;;;;;;;;;;;:15;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;24412:34:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24412:34:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24412:34:3;:39;24404:93;;;;-1:-1:-1;;;24404:93:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24503:26;24521:7;24503:17;:26::i;:::-;24338:196;:::o;2775:21::-;;;;:::o;12861:816::-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13005:8:3;12991:11;13026:647;13047:6;13043:1;:10;13026:647;;;13068:14;13085:8;;13094:1;13085:11;;;;;;;-1:-1:-1;;;;;13085:11:3;;;;;;;;;;;13165:1;13121:32;;;:24;:32;;;;;;;;13085:11;;-1:-1:-1;13121:32:3;;;:46;;-1:-1:-1;13104:108:3;;;;;-1:-1:-1;;;13104:108:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13237:19:3;;;13268:1;13237:19;;;:11;:19;;;;;;;:33;;:74;;-1:-1:-1;;;;;;13282:29:3;;;:19;;;;:11;:19;;;;;;;;;:29;13237:74;13220:153;;;;-1:-1:-1;;;13220:153:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13381:19;13403:16;;13420:1;13403:19;;;;;;;;;;;;;13381:41;;13438:14;13456:1;13438:19;;13430:55;;;;;-1:-1:-1;;;13430:55:3;;;;;;;;;;;;-1:-1:-1;;;13430:55:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;13494:32:3;;;;;;:24;:32;;;;;;;;:41;;-1:-1:-1;;;;;;13494:41:3;;;;;13543:20;:28;;;;;;:60;;;13616:50;13655:10;;13589:14;;13494:32;;13616:50;;13494:32;13616:50;-1:-1:-1;;13055:3:3;;13026:647;;;;953:1:8;12861:816:3;;;;:::o;2612:29::-;;;-1:-1:-1;;;;;2612:29:3;;:::o;11989:723::-;1163:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;12184:20:3;12171:10;12217:491;12238:5;12234:1;:9;12217:491;;;12258:23;12284:20;;12305:1;12284:23;;;;;;;;;;;;;12258:49;;12315:21;12339:18;;12358:1;12339:21;;;;;;;;;;;;;12315:45;;12406:1;12385:18;:22;:46;;;;;12430:1;12411:16;:20;12385:46;12368:106;;;;;-1:-1:-1;;;12368:106:3;;;;;;;;;;;;-1:-1:-1;;;12368:106:3;;;;;;;;;;;;;;;12540:14;;12555:1;12540:17;;;;;;;12482:37;;;;:17;12540;12482:37;;;;;;;:55;;;;;;;;12540:17;;;;;;;12482:75;;;-1:-1:-1;12683:10:3;12520:16;12500:18;12570:131;12656:14;;12671:1;12656:17;;;;;;;;;;;;;12570:131;;;;;;;;;;;;;;;;;;-1:-1:-1;;12245:3:3;;12217:491;;;;1219:1:19;11989:723:3;;;;;;:::o;1260:73:8:-;1301:27;1317:10;1301:15;:27::i;:::-;1260:73::o;18036:370:3:-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18224:8:3;18210:11;18245:157;18266:6;18262:1;:10;18245:157;;;18287:108;18307:8;;18316:1;18307:11;;;;;;;;;;;;;-1:-1:-1;;;;;18307:11:3;18328:22;;18351:1;18328:25;;;;;;;;;;;;;18363:21;;18385:1;18363:24;;;;;;;;;;;;;18287:10;:108::i;:::-;18274:3;;18245:157;;25267:168;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25357:6:3;25353:78;25369:17;;;25353:78;;;25400:24;25412:8;;25421:1;25412:11;;;;;;;;;;;;;-1:-1:-1;;;;;25412:11:3;25400;:24::i;:::-;25388:3;;25353:78;;;;25267:168;;:::o;3917:59::-;;;;;;;;;;;;-1:-1:-1;;;;;3917:59:3;;:::o;27156:2941::-;27289:15;;-1:-1:-1;;;;;27289:15:3;27309:10;27281:38;27273:73;;;;;-1:-1:-1;;;27273:73:3;;;;;;;;;;;;-1:-1:-1;;;27273:73:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;27357:17:3;;;:29;;;;;27379:7;27378:8;27357:29;27353:277;;;27617:7;;27353:277;-1:-1:-1;;;;;27656:31:3;;;27635:18;27656:31;;;:24;:31;;;;;;;27708:24;;;;:47;;-1:-1:-1;;;;;;27736:19:3;;;27708:47;27693:95;;;;;-1:-1:-1;;;27693:95:3;;;;;;;;;;;;-1:-1:-1;;;27693:95:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;27813:29:3;;;27794:16;27813:29;;;:24;:29;;;;;;;27856:22;;;;:43;;-1:-1:-1;;;;;;27882:17:3;;;27856:43;27848:71;;;;;-1:-1:-1;;;27848:71:3;;;;;;;;;;;;-1:-1:-1;;;27848:71:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;27929:22:3;;;;;;:15;:22;;;;;;;;27928:23;:46;;;;-1:-1:-1;;;;;;27955:19:3;;;;27928:46;27925:87;;;27983:22;27999:5;27983:15;:22::i;:::-;-1:-1:-1;;;;;28021:20:3;;;;;;:15;:20;;;;;;;;28020:21;:42;;;;-1:-1:-1;;;;;;28045:17:3;;;;28020:42;28017:81;;;28071:20;28087:3;28071:15;:20::i;:::-;28106:15;;:32;;;-1:-1:-1;;;28106:32:3;;-1:-1:-1;;;;;28106:32:3;;;;;;;;;28142:6;;28106:15;;;;;:25;;:32;;;;;;;;;;;;;;;:15;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;28106:32:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28106:32:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28106:32:3;:42;:65;;;;-1:-1:-1;;;;;;28152:19:3;;;;28106:65;28103:151;;;28223:24;28241:5;28223:17;:24::i;:::-;28363:8;-1:-1:-1;;;;;28349:22:3;:10;-1:-1:-1;;;;;28349:22:3;;28345:1748;;-1:-1:-1;;;;;28407:32:3;;;28381:23;28407:32;;;:20;:32;;;;;;:54;28493:30;;;;;;;:45;28556:41;28407:54;28556:21;:41::i;:::-;28555:42;28547:79;;;;;-1:-1:-1;;;28547:79:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;28643:39;28665:16;28643:21;:39::i;:::-;28642:40;28634:75;;;;;-1:-1:-1;;;28634:75:3;;;;;;;;;;;;-1:-1:-1;;;28634:75:3;;;;;;;;;;;;;;;28718:17;28738:37;;;:17;:37;;;;;;;;:55;;;;;;;;;28809:16;28801:54;;;;;-1:-1:-1;;;28801:54:3;;;;;;;;;;;;-1:-1:-1;;;28801:54:3;;;;;;;;;;;;;;;29066:1;29051:12;:16;:37;;;;-1:-1:-1;;;;;;29071:17:3;;;;29051:37;29047:268;;;29216:15;:30;;29256:50;29267:8;29216:30;29299:6;29256:10;:50::i;:::-;29047:268;;-1:-1:-1;;;;;29327:19:3;;29323:764;;29425:9;;29406:15;:28;;29398:60;;;;;-1:-1:-1;;;29398:60:3;;;;;;;;;;;;-1:-1:-1;;;29398:60:3;;;;;;;;;;;;;;;29323:764;;;-1:-1:-1;;;;;29547:32:3;;29523:21;29547:32;;;:20;:32;;;;;29589:112;29618:39;29633:4;29639:10;29651:5;29618:14;:39::i;:::-;29614:77;;;29673:5;;29614:77;29589:112;;;29725:15;;:32;;;-1:-1:-1;;;29725:32:3;;-1:-1:-1;;;;;29725:32:3;;;;;;;;;29710:12;;29725:15;;;;;:25;;:32;;;;;;;;;;;;;;;:15;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;29725:32:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29725:32:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29725:32:3;;-1:-1:-1;29883:17:3;;;;29875:50;;;;;-1:-1:-1;;;29875:50:3;;;;;;;;;;;;-1:-1:-1;;;29875:50:3;;;;;;;;;;;;;;;29954:7;:67;;;-1:-1:-1;29987:22:3;;;;:34;;30014:6;29987:34;:26;:34;:::i;:::-;29976:7;:45;;29954:67;29935:143;;;;-1:-1:-1;;;29935:143:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29323:764;;;28345:1748;;;27156:2941;;;;;;;:::o;13761:784::-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13910:8:3;13896:11;13931:610;13952:6;13948:1;:10;13931:610;;;13973:14;13990:8;;13999:1;13990:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13990:11:3;14026:28;;;;:20;:28;;;;;;;:43;13990:11;;-1:-1:-1;14009:100:3;;-1:-1:-1;14009:100:3;;;;-1:-1:-1;;;14009:100:3;;;;;;;;;;;;-1:-1:-1;;;14009:100:3;;;;;;;;;;;;;;;14117:17;14137:11;;14149:1;14137:14;;;;;;;-1:-1:-1;;;;;14137:14:3;;;;;;;;;;;14223:1;14176:35;;;:24;:35;;;;;;;;14137:14;;-1:-1:-1;14176:35:3;;;:49;;-1:-1:-1;14159:106:3;;;;;-1:-1:-1;;;14159:106:3;;;;;;;;;;;;-1:-1:-1;;;14159:106:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;14290:22:3;;;14324:1;14290:22;;;:11;:22;;;;;;;:36;;:80;;-1:-1:-1;;;;;;14338:22:3;;;;;;;:11;:22;;;;;;;;:32;;;;14290:80;14273:143;;;;;-1:-1:-1;;;14273:143:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14425:35:3;;;;;;;:24;:35;;;;;;:44;;-1:-1:-1;;;;;;14425:44:3;;;;;;;;;14482:52;14523:10;;14425:44;14482:52;;;-1:-1:-1;;13960:3:3;;13931:610;;5683:28;;;;:::o;5898:59::-;;;;;;;;;;;;;:::o;6399:47::-;;;;;;;;;;;;;;;:::o;15490:932::-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15648:8:3;15634:11;15669:749;15690:6;15686:1;:10;15669:749;;;15711:14;15728:8;;15737:1;15728:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15728:11:3;15764:28;;;;:20;:28;;;;;;;:43;15728:11;;-1:-1:-1;15747:100:3;;-1:-1:-1;15747:100:3;;;;-1:-1:-1;;;15747:100:3;;;;;;;;;;;;-1:-1:-1;;;15747:100:3;;;;;;;;;;;;;;;15855:19;15877:16;;15894:1;15877:19;;;;;;;;;;;;;15855:41;;15912:14;15930:1;15912:19;;15904:55;;;;;-1:-1:-1;;;15904:55:3;;;;;;;;;;;;-1:-1:-1;;;15904:55:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;15970:24:3;;;;;;:16;:24;;;;;;;;15967:301;;;-1:-1:-1;;;;;16096:28:3;;16065:75;16096:28;;;:20;:28;;;;;;;;:43;16065:75;;:30;:75;;;;;;:77;;-1:-1:-1;;16065:77:3;;;16211:46;;;;;:48;;16065:77;16211:48;;;15967:301;-1:-1:-1;;;;;16275:28:3;;;;;;:20;:28;;;;;;:60;;;16348:63;16400:10;;16321:14;;16275:28;;16348:63;;16275:28;16348:63;-1:-1:-1;;15698:3:3;;15669:749;;7780:293;7876:25;7903;7938:20;;:::i;:::-;-1:-1:-1;;;;;;;;7961:22:3;;;;;;;;:13;:22;;;;;;;;:36;;;;;;;;;;7938:59;;;;;;;;;;;;;;;;;;;;;;;;;;7780:293::o;963:105:8:-;1021:4;1040:23;:10;1055:7;1040:23;:14;:23;:::i;:::-;1033:30;;963:105;;;;:::o;1746:137:19:-;1163:9;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;1828:6;;1807:40;;1844:1;;-1:-1:-1;;;;;1828:6:19;;1807:40;;1844:1;;1807:40;1857:6;:19;;-1:-1:-1;;;;;;1857:19:19;;;1746:137::o;19645:309:3:-;-1:-1:-1;;;;;19741:29:3;;19717:21;19741:29;;;:20;:29;;;;;19784:19;;19776:51;;;;;-1:-1:-1;;;19776:51:3;;;;;;;;;;;;-1:-1:-1;;;19776:51:3;;;;;;;;;;;;;;;19838:6;19833:117;19854:9;19850:1;:13;19833:117;;;19882:36;19897:4;19903:7;19912:5;19882:14;:36::i;:::-;19878:66;;;19930:5;;19878:66;19865:3;;19833:117;;6525:46;;;;;;;;;;;;-1:-1:-1;;;;;6525:46:3;;:::o;5777:55::-;;;;;;;;;;;;;:::o;10179:639::-;10277:13;10304:34;;;10300:71;;-1:-1:-1;10348:16:3;;;;;;;;;;;;-1:-1:-1;;;10348:16:3;;;;;;10300:71;10380:50;;;711:1;10380:50;10376:105;;;-1:-1:-1;10440:34:3;;;;;;;;;;;;-1:-1:-1;;;10440:34:3;;;;;;10376:105;10490:39;;;761:1;10490:39;10486:83;;;-1:-1:-1;10539:23:3;;;;;;;;;;;;-1:-1:-1;;;10539:23:3;;;;;;10486:83;10578:45;;;817:1;10578:45;10574:95;;;-1:-1:-1;10633:29:3;;;;;;;;;;;;-1:-1:-1;;;10633:29:3;;;;;;10574:95;10678:50;;;878:1;10678:50;10674:104;;;-1:-1:-1;10737:34:3;;;;;;;;;;;;;;;;;;;10674:104;-1:-1:-1;;10783:30:3;;;;;;;;;;;;-1:-1:-1;;;10783:30:3;;;;;10179:639::o;26248:168::-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26338:6:3;26334:78;26350:17;;;26334:78;;;26381:24;26393:8;;26402:1;26393:11;;;;;;;;;;;;;-1:-1:-1;;;;;26393:11:3;26381;:24::i;:::-;26369:3;;26334:78;;959:77:19;1023:6;;-1:-1:-1;;;;;1023:6:19;959:77;:::o;1310:92::-;1389:6;;1350:4;;-1:-1:-1;;;;;1389:6:19;1373:12;:10;:12::i;:::-;-1:-1:-1;;;;;1373:22:19;;1366:29;;1310:92;:::o;22395:218:3:-;1163:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;22477:16:3;;22467:6;:26;;22459:84;;;;-1:-1:-1;;;22459:84:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22549:12;:21;;;22581:27;;;;;;;;;;;;;;;;;22395:218;:::o;1072:87:8:-;1163:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;1133:21:8;1146:7;1133:12;:21::i;21773:196:3:-;1163:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;21861:16:3;21847:11;21890:75;21910:6;21906:1;:10;21890:75;;;21930:28;21938:16;;21955:1;21938:19;;;;;;;;;;;;;21930:7;:28::i;:::-;21918:3;;21890:75;;21134:256;1163:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;21260:16:3;21246:11;21289:97;21307:6;21305:1;:8;21289:97;;;21327:52;21333:16;;21350:1;21333:19;;;;;;;;;;;;;21354:21;;21376:1;21354:24;;;;;;;;;;;;;21327:5;:52::i;:::-;21315:3;;21289:97;;23565:176;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23659:6:3;23655:82;23671:17;;;23655:82;;;23702:28;23718:8;;23727:1;23718:11;;;;;;;;;;;;;-1:-1:-1;;;;;23718:11:3;23702:15;:28::i;:::-;23690:3;;23655:82;;1163:93:8;:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;1227:24:8;1243:7;1227:15;:24::i;11300:245:3:-;1163:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;11404:9:3;:22;;;11432:17;:38;;;11481:59;;;;;;;;;;;;;;11529:10;;11481:59;;;;;;;;11300:245;;:::o;22862:511::-;1163:9:19;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;22991:6:3;22987:382;23003:25;;;22987:382;;;23042:19;23064:16;;23081:1;23064:19;;;;;;;;;;;;;23042:41;;23091:10;23104:7;;23112:1;23104:10;;;;;;;;;;;;;23091:23;;23139:30;:46;23170:14;23139:46;;;;;;;;;;;;23130:5;:55;;23122:113;;;;-1:-1:-1;;;23122:113:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23243:42;;;;:26;:42;;;;;;;;;:50;;;23306:56;;;;;;;23270:14;;23306:56;;;;;;;;;-1:-1:-1;;23030:3:3;;22987:382;;;;22862:511;;;;:::o;5545:24::-;;;;:::o;6123:48::-;;;;;;;;;;;;;;;:::o;11032:173::-;11091:30;11110:10;11091:18;:30::i;:::-;11127:25;:23;:25::i;:::-;11158:15;:42;;-1:-1:-1;;;;;;11158:42:3;-1:-1:-1;;;;;11158:42:3;;;;;;;;;;11032:173::o;20229:462::-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20357:29:3;;20333:21;20357:29;;;:20;:29;;;;;20400:19;;20392:51;;;;;-1:-1:-1;;;20392:51:3;;;;;;;;;;;;-1:-1:-1;;;20392:51:3;;;;;;;;;;;;;;;20475:4;:15;;;20457;:33;20449:62;;;;;-1:-1:-1;;;20449:62:3;;;;;;;;;;;;-1:-1:-1;;;20449:62:3;;;;;;;;;;;;;;;20551:15;;;;20533:33;;20517:13;20572:115;20593:8;20589:1;:12;20572:115;;;20620:35;20635:4;20641:7;20650:4;20620:14;:35::i;:::-;20616:65;;;20667:5;;20616:65;20603:3;;20572:115;;6259:53;;;;;;;;;;;;;:::o;9233:942::-;-1:-1:-1;;;;;9395:31:3;;;9354:12;9395:31;;;:24;:31;;;;;;;9451:29;;;;;;;;;9354:12;;9395:31;;;;9451:29;9498:24;;:47;;;;-1:-1:-1;;;;;;9526:19:3;;;;9498:47;9497:104;;;-1:-1:-1;;;;;;9557:22:3;;;:43;;;;-1:-1:-1;;;;;;9583:17:3;;;;9557:43;9486:169;;;817:1;9616:32;;;;;;9486:169;9678:8;-1:-1:-1;;;;;9664:22:3;:10;-1:-1:-1;;;;;9664:22:3;;9660:483;;-1:-1:-1;;;;;9722:32:3;;;9696:23;9722:32;;;:20;:32;;;;;;:56;9810:30;;;;;;;:45;9867:41;9722:56;9867:21;:41::i;:::-;:84;;;;9912:39;9934:16;9912:21;:39::i;:::-;9863:145;;;878:1;9962:37;;;;;;;;9863:145;10019:37;;;;:17;:37;;;;;;;;:55;;;;;;;;;10015:122;;711:1;10091:37;;;;;;;;10015:122;9660:483;;;650:1;10149:21;;;;9233:942;;;;;;:::o;6969:208::-;7083:17;7115:38;;;:17;:38;;;;;;;;:57;;;;;;;;;;6969:208::o;2966:29::-;;;;:::o;8344:607::-;8425:17;8452:20;;:::i;:::-;-1:-1:-1;;;;;;;8475:29:3;;;;;;:20;:29;;;;;;;;;8452:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8588:359;8623:8;8619:1;:12;8588:359;;;8646:20;;:::i;:::-;-1:-1:-1;;;;;;8669:22:3;;;;;;:13;:22;;;;;;;;:25;;;;;;;;;8646:48;;;;;;;;;;;;;;;;;;;;;;;;;8736:15;-1:-1:-1;8702:111:3;;;8799:5;;;8702:111;8913:27;;;8897:43;;;;8633:3;;8588:359;;;;8344:607;;;;;:::o;24538:285::-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24634:6:3;24630:189;24646:17;;;24630:189;;;24685:15;;-1:-1:-1;;;;;24685:15:3;:25;24711:8;;24720:1;24711:11;;;;;;;;;;;;;-1:-1:-1;;;;;24711:11:3;24685:38;;;;;;;;;;;;;-1:-1:-1;;;;;24685:38:3;-1:-1:-1;;;;;24685:38:3;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24685:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24685:38:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24685:38:3;:43;24677:97;;;;-1:-1:-1;;;24677:97:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24782:30;24800:8;;24809:1;24800:11;;;;;;;;;;;;;-1:-1:-1;;;;;24800:11:3;24782:17;:30::i;:::-;24665:3;;24630:189;;7241:377;7333:19;7360:22;7390:15;7413:13;7441:20;;:::i;:::-;-1:-1:-1;;;;;;;;;7464:29:3;;;;;;;;:20;:29;;;;;;;;;7441:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7441:52:3;7241:377::o;2032:107:19:-;1163:9;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;1155:54:19;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:19;;;;;;;;;;;;;;;2104:28;2123:8;2104:18;:28::i;14730:654:3:-;857:22:8;868:10;857;:22::i;:::-;842:105;;;;-1:-1:-1;;;842:105:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14840:8:3;14826:11;14861:519;14882:6;14878:1;:10;14861:519;;;14903:14;14920:8;;14929:1;14920:11;;;;;;;-1:-1:-1;;;;;14920:11:3;;;;;;;;;;;15000:1;14956:32;;;:24;:32;;;;;;;;14920:11;;-1:-1:-1;14956:32:3;;;:46;;;-1:-1:-1;14939:99:3;;;;;-1:-1:-1;;;14939:99:3;;;;;;;;;;;;-1:-1:-1;;;14939:99:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;15077:23:3;;;;;;:15;:23;;;;;;;;15074:71;;;15111:25;15129:6;15111:17;:25::i;:::-;-1:-1:-1;;;;;15238:32:3;;;;;;;:24;:32;;;;;;;;;;15216:11;:19;;;;;:54;;15238:32;;;;-1:-1:-1;;;;;;15216:54:3;;;;;;;15279:32;;;;:45;;;;;;;15337:36;;15362:10;;15337:36;;;-1:-1:-1;14890:3:3;;14861:519;;24827:436;-1:-1:-1;;;;;24911:33:3;;;24894:14;24911:33;;;:24;:33;;;;;;;24958:20;24950:45;;;;;-1:-1:-1;;;24950:45:3;;;;;;;;;;;;-1:-1:-1;;;24950:45:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;25009:24:3;;;;;;:15;:24;;;;;;;;25001:62;;;;;-1:-1:-1;;;25001:62:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25069:29:3;;;;;;;:21;:29;;;;;;;;:31;;-1:-1:-1;;25069:31:3;;;25106:24;;;;;;:15;:24;;;;;;:32;;-1:-1:-1;;25106:32:3;;;25149:34;;;;25069:29;25149:34;-1:-1:-1;;;;;25192:29:3;;;;;;:21;:29;;;;;;25189:70;;25233:19;25245:6;25233:11;:19::i;:::-;24827:436;;:::o;1456:123:8:-;1513:26;:10;1531:7;1513:26;:17;:26;:::i;:::-;1550:24;;-1:-1:-1;;;;;1550:24:8;;;;;;;;1456:123;:::o;16702:1159:3:-;16837:26;;;:70;;;16892:15;16867:21;:40;;16837:70;16826:134;;;16947:7;;16826:134;16970:106;;;;;;;;;;;;;;17060:10;;-1:-1:-1;;;;;16970:106:3;;;;;;;;;;;;;;-1:-1:-1;;;;;17106:29:3;;17082:21;17106:29;;;:20;:29;;;;;17149:19;;17141:52;;;;;-1:-1:-1;;;17141:52:3;;;;;;;;;;;;-1:-1:-1;;;17141:52:3;;;;;;;;;;;;;;;17224:22;;;;:49;;17251:21;17224:49;:26;:49;:::i;:::-;17199:22;;;:74;17283:13;;;;:17;17279:411;;-1:-1:-1;;;;;17334:22:3;;17310:21;17334:22;;;:13;:22;;;;;;;;17357:13;;;;-1:-1:-1;;17357:17:3;17334:41;;;;;;;17426:17;;17396:27;;:47;:72;-1:-1:-1;17383:301:3;;17607:27;;:52;;;;;;-1:-1:-1;17669:7:3;;17383:301;17279:411;;17765:70;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17725:22:3;;;;-1:-1:-1;17725:22:3;;;:13;:22;;;;;17748:13;;;;;;;17725:37;;;;;;;;;:110;;;;;;;;;;17841:15;;;;;16702:1159::o;25439:805::-;-1:-1:-1;;;;;25515:29:3;;;;;;:20;:29;;;;;:44;25500:95;;;;;-1:-1:-1;;;25500:95:3;;;;;;;;;;;;-1:-1:-1;;;25500:95:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;25610:25:3;;;;;;:16;:25;;;;;;;;25609:26;25601:59;;;;;-1:-1:-1;;;25601:59:3;;;;;;;;;;;;-1:-1:-1;;;25601:59:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;25666:25:3;;;;;;:16;:25;;;;;;;;:32;;-1:-1:-1;;25666:32:3;25694:4;25666:32;;;;;;25726:20;:29;;;;;;:51;25803:16;25801:18;;;;;;;;;25833:12;;25726:51;;25801:18;25833:17;;:47;;;25868:12;;25854:10;:26;;25833:47;25825:83;;;;;-1:-1:-1;;;25825:83:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;25914:22;25941:46;;;:30;:46;;;;;;;;25939:48;;;;;;;;26021:26;:42;;;;;;;26077:25;;;:70;;;26127:20;26106:17;:41;;26077:70;26069:118;;;;-1:-1:-1;;;26069:118:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26198:41;;26224:14;;-1:-1:-1;;;;;26198:41:3;;;;;;;;25439:805;;;;;:::o;23745:423::-;-1:-1:-1;;;;;23827:33:3;;;23810:14;23827:33;;;:24;:33;;;;;;;23874:20;23866:45;;;;;-1:-1:-1;;;23866:45:3;;;;;;;;;;;;-1:-1:-1;;;23866:45:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;23926:24:3;;;;;;:15;:24;;;;;;;;23925:25;23917:61;;;;;-1:-1:-1;;;23917:61:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23988:24:3;;;;;;:16;:24;;;;;;;;23984:63;;24021:19;24033:6;24021:11;:19::i;:::-;-1:-1:-1;;;;;24052:29:3;;;;;;;:21;:29;;;;;;;;:31;;;;;;;;;24089:24;;;;;;:15;:24;;;;;;:31;;-1:-1:-1;;24089:31:3;;;;;;;24131:32;;;;24052:29;24131:32;23745:423;;:::o;20695:181::-;20770:4;20794:39;;;:22;:39;;;;;;20846:10;;;;;:25;;-1:-1:-1;20868:3:3;-1:-1:-1;20860:11:3;20839:32;-1:-1:-1;;20695:181:3:o;18670:774::-;18792:11;18834:4;:13;;;18815:4;:15;;;:32;18811:98;;-1:-1:-1;18898:4:3;18891:11;;18811:98;-1:-1:-1;;;;;18938:22:3;;18914:21;18938:22;;;:13;:22;;;;;;;;18961:15;;;;18938:39;;;;;;;18987:27;;19017:15;-1:-1:-1;18987:67:3;;;;;19037:17;19036:18;18987:67;18983:133;;;19105:4;19098:11;;;;;18983:133;19148:27;;;;19126:62;;;;;;;19177:10;;-1:-1:-1;;;;;19126:62:3;;;;;;;;;;;;19220:27;;;;;;19194:22;;;:53;;;;;;;;19253:15;;;;:17;;;;;;;-1:-1:-1;19319:31:3;;;;19356;;;-1:-1:-1;;;18670:774:3;-1:-1:-1;;18670:774:3:o;834:176:18:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:18;;;;;;;;;;;;;;;;;;;;;;;;;;;779:200:16;851:4;-1:-1:-1;;;;;875:21:16;;867:68;;;;-1:-1:-1;;;867:68:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:16;:11;:20;;;;;;;;;;;;;;;779:200::o;26420:464:3:-;-1:-1:-1;;;;;26489:25:3;;;;;;:16;:25;;;;;;;;26481:58;;;;;-1:-1:-1;;;26481:58:3;;;;;;;;;;;;-1:-1:-1;;;26481:58:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;26553:30:3;;;;;;:21;:30;;;;;;:33;26545:86;;;;-1:-1:-1;;;26545:86:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26637:25:3;;26665:5;26637:25;;;:16;:25;;;;;;;;:33;;-1:-1:-1;;26637:33:3;;;26698:20;:29;;;;;:51;26757:16;26755:18;;-1:-1:-1;;26755:18:3;;;;;;26781:46;;;:30;:46;;;;;;26779:48;;;;;;;;26838:41;26698:51;;;;26637:25;;26838:41;;26665:5;26838:41;26420:464;;:::o;867:96:15:-;946:10;867:96;:::o;1337:115:8:-;1391:23;:10;1406:7;1391:23;:14;:23;:::i;:::-;1425:22;;-1:-1:-1;;;;;1425:22:8;;;;;;;;1337:115;:::o;21973:242:3:-;22035:39;;;;:22;:39;;;;;;22027:100;;;;-1:-1:-1;;;22027:100:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22175:1;22133:39;;;:22;:39;;;;;;:43;;;22187:23;22156:15;;22187:23;;;21973:242;:::o;21394:214::-;21476:3;21467:6;:12;21459:50;;;;;-1:-1:-1;;;21459:50:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;21515:39;;;;:22;:39;;;;;;;;;:48;;;21574:29;;;;;;;21538:15;;21574:29;;;;;;;;;21394:214;;:::o;741:142:19:-;1024:12:30;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:30;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:30;;;;;1225:18;1213:4;1225:18;;;1170:80;806:6:19;:15;;-1:-1:-1;;;;;;806:15:19;-1:-1:-1;;;;;806:15:19;;;;;;;;;;;836:40;;869:6;;;-1:-1:-1;;836:40:19;;-1:-1:-1;;836:40:19;1268:14:30;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:30;;;741:142:19;;:::o;729:79:8:-;779:24;792:10;779:12;:24::i;2240:225:19:-;-1:-1:-1;;;;;2313:22:19;;2305:73;;;;-1:-1:-1;;;2305:73:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2414:6;;2393:38;;-1:-1:-1;;;;;2393:38:19;;;;2414:6;;2393:38;;2414:6;;2393:38;2441:6;:17;;-1:-1:-1;;;;;;2441:17:19;-1:-1:-1;;;;;2441:17:19;;;;;;;;;;2240:225::o;510:180:16:-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;-1:-1:-1;;;581:64:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;655:20:16;678:5;655:20;;;;;;;;;;;:28;;-1:-1:-1;;655:28:16;;;510:180::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;-1:-1:-1;;;328:63:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:16;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:16;424:4;401:27;;;260:175::o;1409:498:30:-;1820:4;1864:17;1895:7;1409:498;:::o;464:29635:3:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity 0.5.17;\n\nimport \"./interfaces/IWhitelist.sol\";\nimport \"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\";\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\";\nimport \"./mixins/OperatorRole.sol\";\n\n/**\n * @notice whitelist which manages KYC approvals, token lockup, and transfer\n * restrictions for a DAT token.\n */\ncontract Whitelist is IWhitelist, Ownable, OperatorRole {\n  using SafeMath for uint;\n\n  // uint8 status codes as suggested by the ERC-1404 spec\n  uint8 private constant STATUS_SUCCESS = 0;\n  uint8 private constant STATUS_ERROR_JURISDICTION_FLOW = 1;\n  uint8 private constant STATUS_ERROR_LOCKUP = 2;\n  uint8 private constant STATUS_ERROR_USER_UNKNOWN = 3;\n  uint8 private constant STATUS_ERROR_JURISDICTION_HALT = 4;\n  uint8 private constant STATUS_ERROR_NON_LISTED_USER = 5;\n\n  event ConfigWhitelist(\n    uint _startDate,\n    uint _lockupGranularity,\n    address indexed _operator\n  );\n  event UpdateJurisdictionFlow(\n    uint indexed _fromJurisdictionId,\n    uint indexed _toJurisdictionId,\n    uint _lockupLength,\n    address indexed _operator\n  );\n  event ApproveNewUser(\n    address indexed _trader,\n    uint indexed _jurisdictionId,\n    address indexed _operator\n  );\n  event AddApprovedUserWallet(\n    address indexed _userId,\n    address indexed _newWallet,\n    address indexed _operator\n  );\n  event RevokeUserWallet(address indexed _wallet, address indexed _operator);\n  event UpdateJurisdictionForUserId(\n    address indexed _userId,\n    uint indexed _jurisdictionId,\n    address indexed _operator\n  );\n  event AddLockup(\n    address indexed _userId,\n    uint _lockupExpirationDate,\n    uint _numberOfTokensLocked,\n    address indexed _operator\n  );\n  event UnlockTokens(\n    address indexed _userId,\n    uint _tokensUnlocked,\n    address indexed _operator\n  );\n  event Halt(uint indexed _jurisdictionId, uint _until);\n  event Resume(uint indexed _jurisdictionId);\n  event MaxInvestorsChanged(uint _limit);\n  event MaxInvestorsByJurisdictionChanged(uint indexed _jurisdictionId, uint _limit);\n  event InvestorEnlisted(address indexed _userId, uint indexed _jurisdictionId);\n  event InvestorDelisted(address indexed _userId, uint indexed _jurisdictionId);\n  event WalletActivated(address indexed _userId, address indexed _wallet);\n  event WalletDeactivated(address indexed _userId, address indexed _wallet);\n\n  /**\n   * @notice the address of the contract this whitelist manages.\n   * @dev this cannot change after initialization\n   */\n  IERC20 public callingContract;\n\n  /**\n   * @notice blocks all new purchases until now >= startDate.\n   * @dev this can be changed by the owner at any time\n   */\n  uint public startDate;\n\n  /**\n   * @notice Merges lockup entries when the time delta between\n   * them is less than this value.\n   * @dev this can be changed by the owner at any time\n   */\n  uint public lockupGranularity;\n\n  /**\n   * @notice Maps the `from` jurisdiction to the `to` jurisdiction to determine if\n   * transfers between these entities are allowed and if a token lockup should apply:\n   * - 0 means transfers between these jurisdictions is blocked (the default)\n   * - 1 is supported with no token lockup required\n   * - >1 is supported and this value defines the lockup length in seconds\n   * @dev You can read data externally with `getJurisdictionFlow`.\n   * This configuration can be modified by the owner at any time\n   */\n  mapping(uint => mapping(uint => uint)) internal jurisdictionFlows;\n\n  /**\n   * @notice Maps a KYC'd user addresses to their userId.\n   * @dev The first entry for each user should set userId = user address.\n   * Future entries can use the same userId for shared accounts\n   * (e.g. a single user with multiple wallets).\n   *\n   * All wallets with the same userId share the same token lockup.\n   */\n  mapping(address => address) public authorizedWalletToUserId;\n\n  /**\n   * @notice info stored for each userId.\n   */\n  struct UserInfo {\n    // The user's current jurisdictionId or 0 for unknown (the default)\n    uint jurisdictionId;\n    // The number of tokens locked, with details tracked in userIdLockups\n    uint totalTokensLocked;\n    // The first applicable entry in userIdLockups\n    uint startIndex;\n    // The last applicable entry in userIdLockups + 1\n    uint endIndex;\n  }\n\n  /**\n   * @notice Maps the userId to UserInfo.\n   * @dev You can read data externally with `getAuthorizedUserIdInfo`.\n   */\n  mapping(address => UserInfo) internal authorizedUserIdInfo;\n\n  /**\n   * @notice info stored for each token lockup.\n   */\n  struct Lockup {\n    // The date/time that this lockup entry has expired and the tokens may be transferred\n    uint lockupExpirationDate;\n    // How many tokens locked until the given expiration date.\n    uint numberOfTokensLocked;\n  }\n\n  /**\n   * @notice Maps the userId -> lockup entry index -> a Lockup entry\n   * @dev Indexes are tracked by the UserInfo entries.\n   * You can read data externally with `getUserIdLockup`.\n   * We assume lockups are always added in order of expiration date -\n   * if that assumption does not hold, some tokens may remain locked\n   * until older lockup entries from that user have expired.\n   */\n  mapping(address => mapping(uint => Lockup)) internal userIdLockups;\n\n  /**\n   * @notice Maps Jurisdiction Id to it's halt due\n   */\n  mapping(uint => uint) public jurisdictionHaltsUntil;\n\n  /**\n   * @notice maximum investors that this contract can hold\n   */\n  uint public maxInvestors;\n\n  /**\n   * @notice number of users enlisted in the contract. Should be less or equal to `maxInvestors`\n   */\n  uint public currentInvestors;\n\n  /**\n   * @notice maximum investors for jurisdictions\n   */\n  mapping(uint => uint) public maxInvestorsByJurisdiction;\n\n  /**\n   * @notice current investors for jurisdictions\n   */\n  mapping(uint => uint) public currentInvestorsByJurisdiction;\n\n  /**\n   * @notice mapping to check if user is in `currenctInvestors` for both contract and jurisdiction\n   * should be true to interact with the contract\n   */\n  mapping(address => bool) public investorEnlisted;\n\n  /**\n   * @notice count of user wallet to check investor should be enlisted\n   */\n  mapping(address => uint) public userActiveWalletCount;\n\n  /**\n   * @notice mapping to check if wallet is in `userActiveWalletCount`\n   */\n  mapping(address => bool) public walletActivated;\n\n\n  /**\n   * @notice mapping to check wallet's previous owner userId\n   */\n  mapping(address => address) public revokedFrom;\n\n  /**\n   * @notice checks for transfer restrictions between jurisdictions.\n   * @return if transfers between these jurisdictions are allowed and if a\n   * token lockup should apply:\n   * - 0 means transfers between these jurisdictions is blocked (the default)\n   * - 1 is supported with no token lockup required\n   * - >1 is supported and this value defines the lockup length in seconds\n   */\n  function getJurisdictionFlow(\n    uint _fromJurisdictionId,\n    uint _toJurisdictionId\n  ) external view returns (uint lockupLength) {\n    return jurisdictionFlows[_fromJurisdictionId][_toJurisdictionId];\n  }\n\n  /**\n   * @notice checks details for a given userId.\n   */\n  function getAuthorizedUserIdInfo(address _userId)\n    external\n    view\n    returns (\n      uint jurisdictionId,\n      uint totalTokensLocked,\n      uint startIndex,\n      uint endIndex\n    )\n  {\n    UserInfo memory info = authorizedUserIdInfo[_userId];\n    return (\n      info.jurisdictionId,\n      info.totalTokensLocked,\n      info.startIndex,\n      info.endIndex\n    );\n  }\n\n  /**\n   * @notice gets a specific lockup entry for a userId.\n   * @dev use `getAuthorizedUserIdInfo` to determine the range of applicable lockupIndex.\n   */\n  function getUserIdLockup(address _userId, uint _lockupIndex)\n    external\n    view\n    returns (uint lockupExpirationDate, uint numberOfTokensLocked)\n  {\n    Lockup memory lockup = userIdLockups[_userId][_lockupIndex];\n    return (lockup.lockupExpirationDate, lockup.numberOfTokensLocked);\n  }\n\n  /**\n   * @notice Returns the number of unlocked tokens a given userId has available.\n   * @dev this is a `view`-only way to determine how many tokens are still locked\n   * (info.totalTokensLocked is only accurate after processing lockups which changes state)\n   */\n  function getLockedTokenCount(address _userId)\n    external\n    view\n    returns (uint lockedTokens)\n  {\n    UserInfo memory info = authorizedUserIdInfo[_userId];\n    lockedTokens = info.totalTokensLocked;\n    uint endIndex = info.endIndex;\n    for (uint i = info.startIndex; i < endIndex; i++) {\n      Lockup memory lockup = userIdLockups[_userId][i];\n      if (lockup.lockupExpirationDate > block.timestamp) {\n        // no more eligible entries\n        break;\n      }\n      // this lockup entry has expired and would be processed on the next tx\n      lockedTokens -= lockup.numberOfTokensLocked;\n    }\n  }\n\n  /**\n   * @notice Checks if there is a transfer restriction for the given addresses.\n   * Does not consider tokenLockup. Use `getLockedTokenCount` for that.\n   * @dev this function is from the erc-1404 standard and currently in use by the DAT\n   * for the `pay` feature.\n   */\n  function detectTransferRestriction(\n    address _from,\n    address _to,\n    uint /* _value */\n  ) external view returns (uint8 status) {\n    address fromUserId = authorizedWalletToUserId[_from];\n    address toUserId = authorizedWalletToUserId[_to];\n    if (\n      (fromUserId == address(0) && _from != address(0)) ||\n      (toUserId == address(0) && _to != address(0))\n    ) {\n      return STATUS_ERROR_USER_UNKNOWN;\n    }\n    if (fromUserId != toUserId) {\n      uint fromJurisdictionId = authorizedUserIdInfo[fromUserId]\n        .jurisdictionId;\n      uint toJurisdictionId = authorizedUserIdInfo[toUserId].jurisdictionId;\n      if (_isJurisdictionHalted(fromJurisdictionId) || _isJurisdictionHalted(toJurisdictionId)){\n        return STATUS_ERROR_JURISDICTION_HALT;\n      }\n      if (jurisdictionFlows[fromJurisdictionId][toJurisdictionId] == 0) {\n        return STATUS_ERROR_JURISDICTION_FLOW;\n      }\n    }\n\n    return STATUS_SUCCESS;\n  }\n\n  function messageForTransferRestriction(uint8 _restrictionCode)\n    external\n    pure\n    returns (string memory)\n  {\n    if (_restrictionCode == STATUS_SUCCESS) {\n      return \"SUCCESS\";\n    }\n    if (_restrictionCode == STATUS_ERROR_JURISDICTION_FLOW) {\n      return \"DENIED: JURISDICTION_FLOW\";\n    }\n    if (_restrictionCode == STATUS_ERROR_LOCKUP) {\n      return \"DENIED: LOCKUP\";\n    }\n    if (_restrictionCode == STATUS_ERROR_USER_UNKNOWN) {\n      return \"DENIED: USER_UNKNOWN\";\n    }\n    if (_restrictionCode == STATUS_ERROR_JURISDICTION_HALT){\n      return \"DENIED: JURISDICTION_HALT\";\n    }\n    return \"DENIED: UNKNOWN_ERROR\";\n  }\n\n  /**\n   * @notice Called once to complete configuration for this contract.\n   * @dev Done with `initialize` instead of a constructor in order to support\n   * using this contract via an Upgradable Proxy.\n   */\n  function initialize(address _callingContract) public {\n    Ownable.initialize(msg.sender);\n    _initializeOperatorRole();\n    callingContract = IERC20(_callingContract);\n  }\n\n  /**\n   * @notice Called by the owner to update the startDate or lockupGranularity.\n   */\n  function configWhitelist(uint _startDate, uint _lockupGranularity)\n    external\n    onlyOwner()\n  {\n    startDate = _startDate;\n    lockupGranularity = _lockupGranularity;\n    emit ConfigWhitelist(_startDate, _lockupGranularity, msg.sender);\n  }\n\n  /**\n   * @notice Called by the owner to define or update jurisdiction flows.\n   * @param _lockupLengths defines transfer restrictions where:\n   * - 0 is not supported (the default)\n   * - 1 is supported with no token lockup required\n   * - >1 is supported and this value defines the lockup length in seconds.\n   * @dev note that this can be called with a partial list, only including entries\n   * to be added or which have changed.\n   */\n  function updateJurisdictionFlows(\n    uint[] calldata _fromJurisdictionIds,\n    uint[] calldata _toJurisdictionIds,\n    uint[] calldata _lockupLengths\n  ) external onlyOwner() {\n    uint count = _fromJurisdictionIds.length;\n    for (uint i = 0; i < count; i++) {\n      uint fromJurisdictionId = _fromJurisdictionIds[i];\n      uint toJurisdictionId = _toJurisdictionIds[i];\n      require(\n        fromJurisdictionId > 0 && toJurisdictionId > 0,\n        \"INVALID_JURISDICTION_ID\"\n      );\n      jurisdictionFlows[fromJurisdictionId][toJurisdictionId] = _lockupLengths[i];\n      emit UpdateJurisdictionFlow(\n        fromJurisdictionId,\n        toJurisdictionId,\n        _lockupLengths[i],\n        msg.sender\n      );\n    }\n  }\n\n  /**\n   * @notice Called by an operator to add new traders.\n   * @dev The trader will be assigned a userId equal to their wallet address.\n   */\n  function approveNewUsers(\n    address[] calldata _traders,\n    uint[] calldata _jurisdictionIds\n  ) external onlyOperator() {\n    uint length = _traders.length;\n    for (uint i = 0; i < length; i++) {\n      address trader = _traders[i];\n      require(\n        authorizedWalletToUserId[trader] == address(0),\n        \"USER_WALLET_ALREADY_ADDED\"\n      );\n      require(\n        revokedFrom[trader] == address(0) ||\n        revokedFrom[trader] == trader,\n        \"ATTEMPT_TO_ADD_PREVIOUS_WALLET_AS_NEW_USER\"\n      );\n      uint jurisdictionId = _jurisdictionIds[i];\n      require(jurisdictionId != 0, \"INVALID_JURISDICTION_ID\");\n\n      authorizedWalletToUserId[trader] = trader;\n      authorizedUserIdInfo[trader].jurisdictionId = jurisdictionId;\n      emit ApproveNewUser(trader, jurisdictionId, msg.sender);\n    }\n  }\n\n  /**\n   * @notice Called by an operator to add wallets to known userIds.\n   */\n  function addApprovedUserWallets(\n    address[] calldata _userIds,\n    address[] calldata _newWallets\n  ) external onlyOperator() {\n    uint length = _userIds.length;\n    for (uint i = 0; i < length; i++) {\n      address userId = _userIds[i];\n      require(\n        authorizedUserIdInfo[userId].jurisdictionId != 0,\n        \"USER_ID_UNKNOWN\"\n      );\n      address newWallet = _newWallets[i];\n      require(\n        authorizedWalletToUserId[newWallet] == address(0),\n        \"WALLET_ALREADY_ADDED\"\n      );\n      require(\n        revokedFrom[newWallet] == address(0) ||\n        revokedFrom[newWallet] == userId,\n        \"ATTEMPT_TO_EXCHANGE_WALLET\"\n      );\n\n      authorizedWalletToUserId[newWallet] = userId;\n      emit AddApprovedUserWallet(userId, newWallet, msg.sender);\n    }\n  }\n\n  /**\n   * @notice Called by an operator to revoke approval for the given wallets.\n   * @dev If this is called in error, you can restore access with `addApprovedUserWallets`.\n   */\n  function revokeUserWallets(address[] calldata _wallets)\n    external\n    onlyOperator()\n  {\n    uint length = _wallets.length;\n    for (uint i = 0; i < length; i++) {\n      address wallet = _wallets[i];\n      require(\n        authorizedWalletToUserId[wallet] != address(0),\n        \"WALLET_NOT_FOUND\"\n      );\n\n      // deactivate wallet\n      if(walletActivated[wallet]){\n        _deactivateWallet(wallet);\n      }\n\n      // save previous userId to prevent offchain wallet trade\n      revokedFrom[wallet] = authorizedWalletToUserId[wallet];\n\n      authorizedWalletToUserId[wallet] = address(0);\n      emit RevokeUserWallet(wallet, msg.sender);\n    }\n  }\n\n  /**\n   * @notice Called by an operator to change the jurisdiction\n   * for the given userIds.\n   */\n  function updateJurisdictionsForUserIds(\n    address[] calldata _userIds,\n    uint[] calldata _jurisdictionIds\n  ) external onlyOperator() {\n    uint length = _userIds.length;\n    for (uint i = 0; i < length; i++) {\n      address userId = _userIds[i];\n      require(\n        authorizedUserIdInfo[userId].jurisdictionId != 0,\n        \"USER_ID_UNKNOWN\"\n      );\n      uint jurisdictionId = _jurisdictionIds[i];\n      require(jurisdictionId != 0, \"INVALID_JURISDICTION_ID\");\n      if(investorEnlisted[userId]){\n        //decrease current user count from old jurisdiction\n        currentInvestorsByJurisdiction[authorizedUserIdInfo[userId].jurisdictionId]--;\n        //increase current user count for new jurisdiction\n        currentInvestorsByJurisdiction[jurisdictionId]++;\n      }\n      authorizedUserIdInfo[userId].jurisdictionId = jurisdictionId;\n      emit UpdateJurisdictionForUserId(userId, jurisdictionId, msg.sender);\n    }\n  }\n\n  /**\n   * @notice Adds a tokenLockup for the userId.\n   * @dev A no-op if lockup is not required for this transfer.\n   * The lockup entry is merged with the most recent lockup for that user\n   * if the expiration date is <= `lockupGranularity` from the previous entry.\n   */\n  function _addLockup(\n    address _userId,\n    uint _lockupExpirationDate,\n    uint _numberOfTokensLocked\n  ) internal {\n    if (\n      _numberOfTokensLocked == 0 || _lockupExpirationDate <= block.timestamp\n    ) {\n      // This is a no-op\n      return;\n    }\n    emit AddLockup(\n      _userId,\n      _lockupExpirationDate,\n      _numberOfTokensLocked,\n      msg.sender\n    );\n    UserInfo storage info = authorizedUserIdInfo[_userId];\n    require(info.jurisdictionId != 0, \"USER_ID_UNKNOWN\");\n    info.totalTokensLocked = info.totalTokensLocked.add(_numberOfTokensLocked);\n    if (info.endIndex > 0) {\n      Lockup storage lockup = userIdLockups[_userId][info.endIndex - 1];\n      if (\n        lockup.lockupExpirationDate + lockupGranularity >= _lockupExpirationDate\n      ) {\n        // Merge with the previous entry\n        // if totalTokensLocked can't overflow then this value will not either\n        lockup.numberOfTokensLocked += _numberOfTokensLocked;\n        return;\n      }\n    }\n    // Add a new lockup entry\n    userIdLockups[_userId][info.endIndex] = Lockup(\n      _lockupExpirationDate,\n      _numberOfTokensLocked\n    );\n    info.endIndex++;\n  }\n\n  /**\n   * @notice Operators can manually add lockups for userIds.\n   * This may be used by the organization before transfering tokens\n   * from the initial supply.\n   */\n  function addLockups(\n    address[] calldata _userIds,\n    uint[] calldata _lockupExpirationDates,\n    uint[] calldata _numberOfTokensLocked\n  ) external onlyOperator() {\n    uint length = _userIds.length;\n    for (uint i = 0; i < length; i++) {\n      _addLockup(\n        _userIds[i],\n        _lockupExpirationDates[i],\n        _numberOfTokensLocked[i]\n      );\n    }\n  }\n\n  /**\n   * @notice Checks the next lockup entry for a given user and unlocks\n   * those tokens if applicable.\n   * @param _ignoreExpiration bypasses the recorded expiration date and\n   * removes the lockup entry if there are any remaining for this user.\n   */\n  function _processLockup(\n    UserInfo storage info,\n    address _userId,\n    bool _ignoreExpiration\n  ) internal returns (bool isDone) {\n    if (info.startIndex >= info.endIndex) {\n      // no lockups for this user\n      return true;\n    }\n    Lockup storage lockup = userIdLockups[_userId][info.startIndex];\n    if (lockup.lockupExpirationDate > block.timestamp && !_ignoreExpiration) {\n      // no more eligable entries\n      return true;\n    }\n    emit UnlockTokens(_userId, lockup.numberOfTokensLocked, msg.sender);\n    info.totalTokensLocked -= lockup.numberOfTokensLocked;\n    info.startIndex++;\n    // Free up space we don't need anymore\n    lockup.numberOfTokensLocked = 0;\n    lockup.lockupExpirationDate = 0;\n    // There may be another entry\n    return false;\n  }\n\n  /**\n   * @notice Anyone can process lockups for a userId.\n   * This is generally unused but may be required if a given userId\n   * has a lot of individual lockup entries which are expired.\n   */\n  function processLockups(address _userId, uint _maxCount) external {\n    UserInfo storage info = authorizedUserIdInfo[_userId];\n    require(info.jurisdictionId > 0, \"USER_ID_UNKNOWN\");\n    for (uint i = 0; i < _maxCount; i++) {\n      if (_processLockup(info, _userId, false)) {\n        break;\n      }\n    }\n  }\n\n  /**\n   * @notice Allows operators to remove lockup entries, bypassing the\n   * recorded expiration date.\n   * @dev This should generally remain unused. It could be used in combination with\n   * `addLockups` to fix an incorrect lockup expiration date or quantity.\n   */\n  function forceUnlockUpTo(address _userId, uint _maxLockupIndex)\n    external\n    onlyOperator()\n  {\n    UserInfo storage info = authorizedUserIdInfo[_userId];\n    require(info.jurisdictionId > 0, \"USER_ID_UNKNOWN\");\n    require(_maxLockupIndex > info.startIndex, \"ALREADY_UNLOCKED\");\n    uint maxCount = _maxLockupIndex - info.startIndex;\n    for (uint i = 0; i < maxCount; i++) {\n      if (_processLockup(info, _userId, true)) {\n        break;\n      }\n    }\n  }\n\n  function _isJurisdictionHalted(uint _jurisdictionId) internal view returns(bool){\n    uint until = jurisdictionHaltsUntil[_jurisdictionId];\n    return until != 0 && until > now;\n  }\n\n  /**\n   * @notice halts jurisdictions of id `_jurisdictionIds` for `_duration` seconds\n   * @dev only owner can call this function\n   * @param _jurisdictionIds ids of the jurisdictions to halt\n   * @param _expirationTimestamps due when halt ends\n   **/\n  function halt(uint[] calldata _jurisdictionIds, uint[] calldata _expirationTimestamps) external onlyOwner {\n    uint length = _jurisdictionIds.length;\n    for(uint i = 0; i<length; i++){\n      _halt(_jurisdictionIds[i], _expirationTimestamps[i]);\n    }\n  }\n\n  function _halt(uint _jurisdictionId, uint _until) internal {\n    require(_until > now, \"HALT_DUE_SHOULD_BE_FUTURE\");\n    jurisdictionHaltsUntil[_jurisdictionId] = _until;\n    emit Halt(_jurisdictionId, _until);\n  }\n\n  /**\n   * @notice resume halted jurisdiction\n   * @dev only owner can call this function\n   * @param _jurisdictionIds list of jurisdiction ids to resume\n   **/\n  function resume(uint[] calldata _jurisdictionIds) external onlyOwner{\n    uint length = _jurisdictionIds.length;\n    for(uint i = 0; i < length; i++){\n      _resume(_jurisdictionIds[i]);\n    }\n  }\n\n  function _resume(uint _jurisdictionId) internal {\n    require(jurisdictionHaltsUntil[_jurisdictionId] != 0, \"ATTEMPT_TO_RESUME_NONE_HALTED_JURISDICATION\");\n    jurisdictionHaltsUntil[_jurisdictionId] = 0;\n    emit Resume(_jurisdictionId);\n  }\n\n  /**\n   * @notice changes max investors limit of the contract to `_limit`\n   * @dev only owner can call this function\n   * @param _limit new investor limit for contract\n   */\n  function setInvestorLimit(uint _limit) external onlyOwner {\n    require(_limit >= currentInvestors, \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\");\n    maxInvestors = _limit;\n    emit MaxInvestorsChanged(_limit);\n  }\n\n  /**\n   * @notice changes max investors limit of the `_jurisdcitionId` to `_limit`\n   * @dev only owner can call this function\n   * @param _jurisdictionIds jurisdiction id to update\n   * @param _limits new investor limit for jurisdiction\n   */\n  function setInvestorLimitForJurisdiction(uint[] calldata _jurisdictionIds, uint[] calldata _limits) external onlyOwner {\n    for(uint i = 0; i<_jurisdictionIds.length; i++){\n      uint jurisdictionId = _jurisdictionIds[i];\n      uint limit = _limits[i];\n      require(limit >= currentInvestorsByJurisdiction[jurisdictionId], \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\");\n      maxInvestorsByJurisdiction[jurisdictionId] = limit;\n      emit MaxInvestorsByJurisdictionChanged(jurisdictionId, limit);\n    }\n  }\n\n  /**\n   * @notice activate wallet enlist user when user is not enlisted\n   * @dev This function can be called even user does not have balance\n   * only owner can call this function\n   */\n  function activateWallets(\n    address[] calldata _wallets\n  ) external onlyOperator {\n    for(uint i = 0; i<_wallets.length; i++){\n      _activateWallet(_wallets[i]);\n    }\n  }\n\n  function _activateWallet(\n    address _wallet\n  ) internal {\n    address userId = authorizedWalletToUserId[_wallet];\n    require(userId != address(0), \"USER_UNKNOWN\");\n    require(!walletActivated[_wallet],\"ALREADY_ACTIVATED_WALLET\");\n    if(!investorEnlisted[userId]){\n      _enlistUser(userId);\n    }\n    userActiveWalletCount[userId]++;\n    walletActivated[_wallet] = true;\n    emit WalletActivated(userId, _wallet);\n  }\n\n  /**\n   * @notice deactivate wallet delist user if user does not have any wallet left\n   * @dev This function can only be called when _wallet has zero balance\n   */\n  function deactivateWallet(\n    address _wallet\n  ) external {\n    require(callingContract.balanceOf(_wallet) == 0, \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\");\n    _deactivateWallet(_wallet);\n  }\n\n  function deactivateWallets(\n    address[] calldata _wallets\n  ) external onlyOperator {\n    for(uint i = 0; i<_wallets.length; i++){\n      require(callingContract.balanceOf(_wallets[i]) == 0, \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\");\n      _deactivateWallet(_wallets[i]);\n    }\n  }\n\n  function _deactivateWallet(\n    address _wallet\n  ) internal {\n    address userId = authorizedWalletToUserId[_wallet];\n    require(userId != address(0), \"USER_UNKNOWN\");\n    require(walletActivated[_wallet],\"ALREADY_DEACTIVATED_WALLET\");\n    userActiveWalletCount[userId]--;\n    walletActivated[_wallet] = false;\n    emit WalletDeactivated(userId, _wallet);\n    if(userActiveWalletCount[userId]==0){\n      _delistUser(userId);\n    }\n  }\n\n  function enlistUsers(\n    address[] calldata _userIds\n  ) external onlyOperator {\n    for(uint i = 0; i<_userIds.length; i++){\n      _enlistUser(_userIds[i]);\n    }\n  }\n\n  function _enlistUser(\n    address _userId\n  ) internal {\n    require(\n      authorizedUserIdInfo[_userId].jurisdictionId != 0,\n      \"USER_ID_UNKNOWN\"\n    );\n    require(!investorEnlisted[_userId],\"ALREADY_ENLISTED_USER\");\n    investorEnlisted[_userId] = true;\n    uint jurisdictionId = authorizedUserIdInfo[_userId]\n      .jurisdictionId;\n    uint totalCount = ++currentInvestors;\n    require(maxInvestors == 0 || totalCount <= maxInvestors, \"EXCEEDING_MAX_INVESTORS\");\n    uint jurisdictionCount = ++currentInvestorsByJurisdiction[jurisdictionId];\n    uint maxJurisdictionLimit = maxInvestorsByJurisdiction[jurisdictionId];\n    require(maxJurisdictionLimit == 0 || jurisdictionCount <= maxJurisdictionLimit,\"EXCEEDING_JURISDICTION_MAX_INVESTORS\");\n    emit InvestorEnlisted(_userId, jurisdictionId);\n  }\n\n  function delistUsers(\n    address[] calldata _userIds\n  ) external onlyOperator {\n    for(uint i = 0; i<_userIds.length; i++){\n      _delistUser(_userIds[i]);\n    }\n  }\n\n  function _delistUser(\n    address _userId\n  ) internal {\n    require(investorEnlisted[_userId],\"ALREADY_DELISTED_USER\");\n    require(userActiveWalletCount[_userId]==0,\"ATTEMPT_TO_DELIST_USER_WITH_ACTIVE_WALLET\");\n    investorEnlisted[_userId] = false;\n    uint jurisdictionId = authorizedUserIdInfo[_userId]\n      .jurisdictionId;\n    --currentInvestors;\n    --currentInvestorsByJurisdiction[jurisdictionId];\n    emit InvestorDelisted(_userId, jurisdictionId);\n  }\n  /**\n   * @notice Called by the callingContract before a transfer occurs.\n   * @dev This call will revert when the transfer is not authorized.\n   * This is a mutable call to allow additional data to be recorded,\n   * such as when the user aquired their tokens.\n   **/\n  function authorizeTransfer(\n    address _from,\n    address _to,\n    uint _value,\n    bool _isSell\n  ) external {\n    require(address(callingContract) == msg.sender, \"CALL_VIA_CONTRACT_ONLY\");\n\n    if (_to == address(0) && !_isSell) {\n      // This is a burn, no authorization required\n      // You can burn locked tokens. Burning will effectively burn unlocked tokens,\n      // and then burn locked tokens starting with those that will be unlocked first.\n      return;\n    }\n    address fromUserId = authorizedWalletToUserId[_from];\n    require(\n      fromUserId != address(0) || _from == address(0),\n      \"FROM_USER_UNKNOWN\"\n    );\n    address toUserId = authorizedWalletToUserId[_to];\n    require(toUserId != address(0) || _to == address(0), \"TO_USER_UNKNOWN\");\n    if(!walletActivated[_from] && _from != address(0)){\n      _activateWallet(_from);\n    }\n    if(!walletActivated[_to] && _to != address(0)){\n      _activateWallet(_to);\n    }\n    if(callingContract.balanceOf(_from) == _value && _from != address(0)){\n      //deactivate wallets without balance\n      _deactivateWallet(_from);\n    }\n\n    // A single user can move funds between wallets they control without restriction\n    if (fromUserId != toUserId) {\n      uint fromJurisdictionId = authorizedUserIdInfo[fromUserId]\n      .jurisdictionId;\n      uint toJurisdictionId = authorizedUserIdInfo[toUserId].jurisdictionId;\n\n      require(!_isJurisdictionHalted(fromJurisdictionId), \"FROM_JURISDICTION_HALTED\");\n      require(!_isJurisdictionHalted(toJurisdictionId), \"TO_JURISDICTION_HALTED\");\n\n      uint lockupLength = jurisdictionFlows[fromJurisdictionId][toJurisdictionId];\n      require(lockupLength > 0, \"DENIED: JURISDICTION_FLOW\");\n\n      // If the lockupLength is 1 then we interpret this as approved without any lockup\n      // This means any token lockup period must be at least 2 seconds long in order to apply.\n      if (lockupLength > 1 && _to != address(0)) {\n        // Lockup may apply for any action other than burn/sell (e.g. buy/pay/transfer)\n        uint lockupExpirationDate = block.timestamp + lockupLength;\n        _addLockup(toUserId, lockupExpirationDate, _value);\n      }\n\n      if (_from == address(0)) {\n        // This is minting (buy or pay)\n        require(block.timestamp >= startDate, \"WAIT_FOR_START_DATE\");\n      } else {\n        // This is a transfer (or sell)\n        UserInfo storage info = authorizedUserIdInfo[fromUserId];\n        while (true) {\n          if (_processLockup(info, fromUserId, false)) {\n            break;\n          }\n        }\n        uint balance = callingContract.balanceOf(_from);\n        // This first require is redundant, but allows us to provide\n        // a more clear error message.\n        require(balance >= _value, \"INSUFFICIENT_BALANCE\");\n        require(\n          _isSell || \n          balance >= info.totalTokensLocked.add(_value),\n          \"INSUFFICIENT_TRANSFERABLE_BALANCE\"\n        );\n      }\n    }\n  }\n}\n",
  "sourcePath": "/home/circleci/repo/contracts/Whitelist.sol",
  "ast": {
    "absolutePath": "/home/circleci/repo/contracts/Whitelist.sol",
    "exportedSymbols": {
      "Whitelist": [
        4398
      ]
    },
    "id": 4399,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2249,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "absolutePath": "/home/circleci/repo/contracts/interfaces/IWhitelist.sol",
        "file": "./interfaces/IWhitelist.sol",
        "id": 2250,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 4446,
        "src": "25:37:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
        "id": 2251,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 6070,
        "src": "63:78:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol",
        "id": 2252,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 6194,
        "src": "142:82:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
        "id": 2253,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 6742,
        "src": "225:83:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/circleci/repo/contracts/mixins/OperatorRole.sol",
        "file": "./mixins/OperatorRole.sol",
        "id": 2254,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 5188,
        "src": "309:35:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2255,
              "name": "IWhitelist",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4445,
              "src": "486:10:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IWhitelist_$4445",
                "typeString": "contract IWhitelist"
              }
            },
            "id": 2256,
            "nodeType": "InheritanceSpecifier",
            "src": "486:10:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2257,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6193,
              "src": "498:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$6193",
                "typeString": "contract Ownable"
              }
            },
            "id": 2258,
            "nodeType": "InheritanceSpecifier",
            "src": "498:7:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2259,
              "name": "OperatorRole",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5187,
              "src": "507:12:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OperatorRole_$5187",
                "typeString": "contract OperatorRole"
              }
            },
            "id": 2260,
            "nodeType": "InheritanceSpecifier",
            "src": "507:12:3"
          }
        ],
        "contractDependencies": [
          4445,
          5187,
          5407,
          6193,
          7851
        ],
        "contractKind": "contract",
        "documentation": "@notice whitelist which manages KYC approvals, token lockup, and transfer\nrestrictions for a DAT token.",
        "fullyImplemented": true,
        "id": 4398,
        "linearizedBaseContracts": [
          4398,
          5187,
          6193,
          5407,
          7851,
          4445
        ],
        "name": "Whitelist",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2263,
            "libraryName": {
              "contractScope": null,
              "id": 2261,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6069,
              "src": "530:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$6069",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "524:24:3",
            "typeName": {
              "id": 2262,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "543:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2266,
            "name": "STATUS_SUCCESS",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "610:41:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2264,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "610:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 2265,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "650:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2269,
            "name": "STATUS_ERROR_JURISDICTION_FLOW",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "655:57:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2267,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "655:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 2268,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "711:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2272,
            "name": "STATUS_ERROR_LOCKUP",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "716:46:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2270,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "716:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 2271,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "761:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2275,
            "name": "STATUS_ERROR_USER_UNKNOWN",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "766:52:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2273,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "766:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "33",
              "id": 2274,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "817:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2278,
            "name": "STATUS_ERROR_JURISDICTION_HALT",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "822:57:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2276,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "822:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 2277,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "878:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2281,
            "name": "STATUS_ERROR_NON_LISTED_USER",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "883:55:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2279,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "883:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "35",
              "id": 2280,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "937:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5_by_1",
                "typeString": "int_const 5"
              },
              "value": "5"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2289,
            "name": "ConfigWhitelist",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2283,
                  "indexed": false,
                  "name": "_startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2289,
                  "src": "970:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2282,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "970:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2285,
                  "indexed": false,
                  "name": "_lockupGranularity",
                  "nodeType": "VariableDeclaration",
                  "scope": 2289,
                  "src": "991:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2284,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "991:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2287,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2289,
                  "src": "1020:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2286,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1020:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "964:85:3"
            },
            "src": "943:107:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2299,
            "name": "UpdateJurisdictionFlow",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2291,
                  "indexed": true,
                  "name": "_fromJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1087:32:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2290,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1087:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2293,
                  "indexed": true,
                  "name": "_toJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1125:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2292,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1125:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2295,
                  "indexed": false,
                  "name": "_lockupLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1161:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2294,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1161:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2297,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1185:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2296,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1081:133:3"
            },
            "src": "1053:162:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2307,
            "name": "ApproveNewUser",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2306,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2301,
                  "indexed": true,
                  "name": "_trader",
                  "nodeType": "VariableDeclaration",
                  "scope": 2307,
                  "src": "1244:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2300,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1244:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2303,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2307,
                  "src": "1273:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2302,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1273:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2305,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2307,
                  "src": "1307:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2304,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1307:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1238:98:3"
            },
            "src": "1218:119:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2315,
            "name": "AddApprovedUserWallet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2309,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2315,
                  "src": "1373:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2308,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1373:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2311,
                  "indexed": true,
                  "name": "_newWallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2315,
                  "src": "1402:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2310,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1402:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2313,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2315,
                  "src": "1434:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1434:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1367:96:3"
            },
            "src": "1340:124:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2321,
            "name": "RevokeUserWallet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2317,
                  "indexed": true,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2321,
                  "src": "1490:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2316,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1490:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2319,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2321,
                  "src": "1515:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2318,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1515:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1489:52:3"
            },
            "src": "1467:75:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2329,
            "name": "UpdateJurisdictionForUserId",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2323,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2329,
                  "src": "1584:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1584:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2325,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2329,
                  "src": "1613:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2324,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1613:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2327,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2329,
                  "src": "1647:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2326,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1647:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1578:98:3"
            },
            "src": "1545:132:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2339,
            "name": "AddLockup",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2331,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1701:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2330,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1701:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2333,
                  "indexed": false,
                  "name": "_lockupExpirationDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1730:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2332,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1730:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2335,
                  "indexed": false,
                  "name": "_numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1762:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2334,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1762:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2337,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1794:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2336,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1794:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1695:128:3"
            },
            "src": "1680:144:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2347,
            "name": "UnlockTokens",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2346,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2341,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "1851:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1851:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2343,
                  "indexed": false,
                  "name": "_tokensUnlocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "1880:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2342,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1880:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2345,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "1906:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2344,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1906:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1845:90:3"
            },
            "src": "1827:109:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2353,
            "name": "Halt",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2349,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2353,
                  "src": "1950:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2348,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1950:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2351,
                  "indexed": false,
                  "name": "_until",
                  "nodeType": "VariableDeclaration",
                  "scope": 2353,
                  "src": "1980:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2350,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1980:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1949:43:3"
            },
            "src": "1939:54:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2357,
            "name": "Resume",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2355,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2357,
                  "src": "2009:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2354,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2009:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2008:30:3"
            },
            "src": "1996:43:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2361,
            "name": "MaxInvestorsChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2359,
                  "indexed": false,
                  "name": "_limit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2361,
                  "src": "2068:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2358,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2068:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2067:13:3"
            },
            "src": "2042:39:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2367,
            "name": "MaxInvestorsByJurisdictionChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2363,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "2124:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2362,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2124:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2365,
                  "indexed": false,
                  "name": "_limit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "2154:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2364,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2154:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2123:43:3"
            },
            "src": "2084:83:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2373,
            "name": "InvestorEnlisted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2369,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "2193:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2368,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2193:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2371,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "2218:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2370,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2218:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2192:55:3"
            },
            "src": "2170:78:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2379,
            "name": "InvestorDelisted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2375,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "2274:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2374,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2274:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2377,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "2299:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2376,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2299:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2273:55:3"
            },
            "src": "2251:78:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2385,
            "name": "WalletActivated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2381,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "2354:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2354:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2383,
                  "indexed": true,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "2379:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2379:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2353:50:3"
            },
            "src": "2332:72:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2391,
            "name": "WalletDeactivated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2390,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2387,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2391,
                  "src": "2431:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2431:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2389,
                  "indexed": true,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2391,
                  "src": "2456:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2388,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2456:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2430:50:3"
            },
            "src": "2407:74:3"
          },
          {
            "constant": false,
            "id": 2393,
            "name": "callingContract",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "2612:29:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20_$6741",
              "typeString": "contract IERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 2392,
              "name": "IERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6741,
              "src": "2612:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$6741",
                "typeString": "contract IERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2395,
            "name": "startDate",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "2775:21:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2394,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2775:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2397,
            "name": "lockupGranularity",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "2966:29:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2396,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2966:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2403,
            "name": "jurisdictionFlows",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "3518:65:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
              "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
            },
            "typeName": {
              "id": 2402,
              "keyType": {
                "id": 2398,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "3526:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "3518:38:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
              },
              "valueType": {
                "id": 2401,
                "keyType": {
                  "id": 2399,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "3542:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "3534:21:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "valueType": {
                  "id": 2400,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "3550:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2407,
            "name": "authorizedWalletToUserId",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "3917:59:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2406,
              "keyType": {
                "id": 2404,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "3925:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "3917:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2405,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "3936:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "Whitelist.UserInfo",
            "id": 2416,
            "members": [
              {
                "constant": false,
                "id": 2409,
                "name": "jurisdictionId",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4129:19:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2408,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4129:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2411,
                "name": "totalTokensLocked",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4228:22:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2410,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4228:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2413,
                "name": "startIndex",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4307:15:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2412,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4307:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2415,
                "name": "endIndex",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4382:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2414,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4382:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UserInfo",
            "nodeType": "StructDefinition",
            "scope": 4398,
            "src": "4035:365:3",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2420,
            "name": "authorizedUserIdInfo",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "4529:58:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
              "typeString": "mapping(address => struct Whitelist.UserInfo)"
            },
            "typeName": {
              "id": 2419,
              "keyType": {
                "id": 2417,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "4537:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "4529:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                "typeString": "mapping(address => struct Whitelist.UserInfo)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2418,
                "name": "UserInfo",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2416,
                "src": "4548:8:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                  "typeString": "struct Whitelist.UserInfo"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "canonicalName": "Whitelist.Lockup",
            "id": 2425,
            "members": [
              {
                "constant": false,
                "id": 2422,
                "name": "lockupExpirationDate",
                "nodeType": "VariableDeclaration",
                "scope": 2425,
                "src": "4762:25:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2421,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4762:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2424,
                "name": "numberOfTokensLocked",
                "nodeType": "VariableDeclaration",
                "scope": 2425,
                "src": "4856:25:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2423,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4856:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Lockup",
            "nodeType": "StructDefinition",
            "scope": 4398,
            "src": "4652:234:3",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2431,
            "name": "userIdLockups",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5284:66:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
              "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup))"
            },
            "typeName": {
              "id": 2430,
              "keyType": {
                "id": 2426,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5292:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "5284:43:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup))"
              },
              "valueType": {
                "id": 2429,
                "keyType": {
                  "id": 2427,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "5311:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "5303:23:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                  "typeString": "mapping(uint256 => struct Whitelist.Lockup)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 2428,
                  "name": "Lockup",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2425,
                  "src": "5319:6:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                    "typeString": "struct Whitelist.Lockup"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2435,
            "name": "jurisdictionHaltsUntil",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5418:51:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2434,
              "keyType": {
                "id": 2432,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5426:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "5418:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2433,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5434:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2437,
            "name": "maxInvestors",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5545:24:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2436,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5545:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2439,
            "name": "currentInvestors",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5683:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2438,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5683:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2443,
            "name": "maxInvestorsByJurisdiction",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5777:55:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2442,
              "keyType": {
                "id": 2440,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5785:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "5777:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2441,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5793:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2447,
            "name": "currentInvestorsByJurisdiction",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5898:59:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2446,
              "keyType": {
                "id": 2444,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5906:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "5898:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2445,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5914:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2451,
            "name": "investorEnlisted",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6123:48:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2450,
              "keyType": {
                "id": 2448,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6131:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6123:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2449,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "6142:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2455,
            "name": "userActiveWalletCount",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6259:53:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 2454,
              "keyType": {
                "id": 2452,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6267:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6259:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 2453,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "6278:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2459,
            "name": "walletActivated",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6399:47:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2458,
              "keyType": {
                "id": 2456,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6407:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6399:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2457,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "6418:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2463,
            "name": "revokedFrom",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6525:46:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2462,
              "keyType": {
                "id": 2460,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6533:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6525:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2461,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6544:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2478,
              "nodeType": "Block",
              "src": "7102:75:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2472,
                        "name": "jurisdictionFlows",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2403,
                        "src": "7115:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                          "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                        }
                      },
                      "id": 2474,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2473,
                        "name": "_fromJurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "7133:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7115:38:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 2476,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2475,
                      "name": "_toJurisdictionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2467,
                      "src": "7154:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7115:57:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2471,
                  "id": 2477,
                  "nodeType": "Return",
                  "src": "7108:64:3"
                }
              ]
            },
            "documentation": "@notice checks for transfer restrictions between jurisdictions.\n@return if transfers between these jurisdictions are allowed and if a\ntoken lockup should apply:\n- 0 means transfers between these jurisdictions is blocked (the default)\n- 1 is supported with no token lockup required\n- >1 is supported and this value defines the lockup length in seconds",
            "id": 2479,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getJurisdictionFlow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2465,
                  "name": "_fromJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2479,
                  "src": "7003:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2464,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7003:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2467,
                  "name": "_toJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2479,
                  "src": "7033:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2466,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7033:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6997:62:3"
            },
            "returnParameters": {
              "id": 2471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2470,
                  "name": "lockupLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 2479,
                  "src": "7083:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2469,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7083:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7082:19:3"
            },
            "scope": 4398,
            "src": "6969:208:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2508,
              "nodeType": "Block",
              "src": "7435:183:3",
              "statements": [
                {
                  "assignments": [
                    2493
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2493,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 2508,
                      "src": "7441:20:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2492,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "7441:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2497,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2494,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "7464:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 2496,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2495,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2481,
                      "src": "7485:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7464:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7441:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2498,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7514:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2499,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "jurisdictionId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2409,
                        "src": "7514:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2500,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7541:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2501,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalTokensLocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2411,
                        "src": "7541:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2502,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7571:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2503,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2413,
                        "src": "7571:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2504,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7594:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2505,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "endIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2415,
                        "src": "7594:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2506,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7506:107:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2491,
                  "id": 2507,
                  "nodeType": "Return",
                  "src": "7499:114:3"
                }
              ]
            },
            "documentation": "@notice checks details for a given userId.",
            "id": 2509,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAuthorizedUserIdInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2481,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7274:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2480,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7274:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7273:17:3"
            },
            "returnParameters": {
              "id": 2491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2484,
                  "name": "jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7333:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2483,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7333:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2486,
                  "name": "totalTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7360:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2485,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7360:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2488,
                  "name": "startIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7390:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2487,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7390:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2490,
                  "name": "endIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7413:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2489,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7413:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7325:107:3"
            },
            "scope": 4398,
            "src": "7241:377:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2534,
              "nodeType": "Block",
              "src": "7932:141:3",
              "statements": [
                {
                  "assignments": [
                    2521
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2521,
                      "name": "lockup",
                      "nodeType": "VariableDeclaration",
                      "scope": 2534,
                      "src": "7938:20:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                        "typeString": "struct Whitelist.Lockup"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2520,
                        "name": "Lockup",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2425,
                        "src": "7938:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2527,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2522,
                        "name": "userIdLockups",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2431,
                        "src": "7961:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                        }
                      },
                      "id": 2524,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2523,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2511,
                        "src": "7975:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7961:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                        "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                      }
                    },
                    "id": 2526,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2525,
                      "name": "_lockupIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2513,
                      "src": "7984:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7961:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                      "typeString": "struct Whitelist.Lockup storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7938:59:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2528,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2521,
                          "src": "8011:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                            "typeString": "struct Whitelist.Lockup memory"
                          }
                        },
                        "id": 2529,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lockupExpirationDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2422,
                        "src": "8011:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2530,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2521,
                          "src": "8040:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                            "typeString": "struct Whitelist.Lockup memory"
                          }
                        },
                        "id": 2531,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numberOfTokensLocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "8040:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2532,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8010:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2519,
                  "id": 2533,
                  "nodeType": "Return",
                  "src": "8003:65:3"
                }
              ]
            },
            "documentation": "@notice gets a specific lockup entry for a userId.\n@dev use `getAuthorizedUserIdInfo` to determine the range of applicable lockupIndex.",
            "id": 2535,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUserIdLockup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2511,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7805:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2510,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7805:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2513,
                  "name": "_lockupIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7822:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2512,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7822:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7804:36:3"
            },
            "returnParameters": {
              "id": 2519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2516,
                  "name": "lockupExpirationDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7876:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2515,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7876:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2518,
                  "name": "numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7903:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2517,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7903:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7875:54:3"
            },
            "scope": 4398,
            "src": "7780:293:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2592,
              "nodeType": "Block",
              "src": "8446:505:3",
              "statements": [
                {
                  "assignments": [
                    2543
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2543,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 2592,
                      "src": "8452:20:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2542,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "8452:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2547,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2544,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "8475:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 2546,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2545,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2537,
                      "src": "8496:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8475:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8452:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2548,
                      "name": "lockedTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2540,
                      "src": "8510:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2549,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "8525:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                          "typeString": "struct Whitelist.UserInfo memory"
                        }
                      },
                      "id": 2550,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2411,
                      "src": "8525:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8510:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2552,
                  "nodeType": "ExpressionStatement",
                  "src": "8510:37:3"
                },
                {
                  "assignments": [
                    2554
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2554,
                      "name": "endIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2592,
                      "src": "8553:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2553,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8553:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2557,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2555,
                      "name": "info",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2543,
                      "src": "8569:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                        "typeString": "struct Whitelist.UserInfo memory"
                      }
                    },
                    "id": 2556,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "endIndex",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2415,
                    "src": "8569:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8553:29:3"
                },
                {
                  "body": {
                    "id": 2590,
                    "nodeType": "Block",
                    "src": "8638:309:3",
                    "statements": [
                      {
                        "assignments": [
                          2570
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2570,
                            "name": "lockup",
                            "nodeType": "VariableDeclaration",
                            "scope": 2590,
                            "src": "8646:20:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                              "typeString": "struct Whitelist.Lockup"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2569,
                              "name": "Lockup",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2425,
                              "src": "8646:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                "typeString": "struct Whitelist.Lockup"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2576,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2571,
                              "name": "userIdLockups",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2431,
                              "src": "8669:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                              }
                            },
                            "id": 2573,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2572,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2537,
                              "src": "8683:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8669:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                              "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                            }
                          },
                          "id": 2575,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2574,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2559,
                            "src": "8692:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8669:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                            "typeString": "struct Whitelist.Lockup storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8646:48:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2577,
                              "name": "lockup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2570,
                              "src": "8706:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                                "typeString": "struct Whitelist.Lockup memory"
                              }
                            },
                            "id": 2578,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lockupExpirationDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2422,
                            "src": "8706:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2579,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8524,
                              "src": "8736:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8736:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8706:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2584,
                        "nodeType": "IfStatement",
                        "src": "8702:111:3",
                        "trueBody": {
                          "id": 2583,
                          "nodeType": "Block",
                          "src": "8753:60:3",
                          "statements": [
                            {
                              "id": 2582,
                              "nodeType": "Break",
                              "src": "8799:5:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2585,
                            "name": "lockedTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2540,
                            "src": "8897:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2586,
                              "name": "lockup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2570,
                              "src": "8913:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                                "typeString": "struct Whitelist.Lockup memory"
                              }
                            },
                            "id": 2587,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numberOfTokensLocked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2424,
                            "src": "8913:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8897:43:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2589,
                        "nodeType": "ExpressionStatement",
                        "src": "8897:43:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2563,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2559,
                      "src": "8619:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2564,
                      "name": "endIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2554,
                      "src": "8623:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8619:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2591,
                  "initializationExpression": {
                    "assignments": [
                      2559
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2559,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2591,
                        "src": "8593:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2558,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8593:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2562,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2560,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "8602:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                          "typeString": "struct Whitelist.UserInfo memory"
                        }
                      },
                      "id": 2561,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "8602:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8593:24:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8633:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2559,
                        "src": "8633:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2568,
                    "nodeType": "ExpressionStatement",
                    "src": "8633:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "8588:359:3"
                }
              ]
            },
            "documentation": "@notice Returns the number of unlocked tokens a given userId has available.\n@dev this is a `view`-only way to determine how many tokens are still locked\n(info.totalTokensLocked is only accurate after processing lockups which changes state)",
            "id": 2593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLockedTokenCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2537,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2593,
                  "src": "8373:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2536,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8373:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8372:17:3"
            },
            "returnParameters": {
              "id": 2541,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2540,
                  "name": "lockedTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 2593,
                  "src": "8425:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2539,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8425:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8424:19:3"
            },
            "scope": 4398,
            "src": "8344:607:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2688,
              "nodeType": "Block",
              "src": "9368:807:3",
              "statements": [
                {
                  "assignments": [
                    2605
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2605,
                      "name": "fromUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2688,
                      "src": "9374:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2604,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9374:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2609,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2606,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "9395:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2608,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2607,
                      "name": "_from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2595,
                      "src": "9420:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9395:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9374:52:3"
                },
                {
                  "assignments": [
                    2611
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2611,
                      "name": "toUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2688,
                      "src": "9432:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2610,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9432:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2615,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2612,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "9451:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2614,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2613,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2597,
                      "src": "9476:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9451:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9432:48:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2616,
                              "name": "fromUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2605,
                              "src": "9498:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9520:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9512:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9512:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9498:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2621,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2595,
                              "src": "9526:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9543:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9535:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9535:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9526:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9498:47:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2627,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9497:49:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2628,
                              "name": "toUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "9557:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2630,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9577:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9569:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9569:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9557:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2633,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2597,
                              "src": "9583:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2635,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9598:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9590:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9590:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9583:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9557:43:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2639,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9556:45:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9497:104:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2644,
                  "nodeType": "IfStatement",
                  "src": "9486:169:3",
                  "trueBody": {
                    "id": 2643,
                    "nodeType": "Block",
                    "src": "9608:47:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2641,
                          "name": "STATUS_ERROR_USER_UNKNOWN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2275,
                          "src": "9623:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 2603,
                        "id": 2642,
                        "nodeType": "Return",
                        "src": "9616:32:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2645,
                      "name": "fromUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2605,
                      "src": "9664:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2646,
                      "name": "toUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2611,
                      "src": "9678:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9664:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2685,
                  "nodeType": "IfStatement",
                  "src": "9660:483:3",
                  "trueBody": {
                    "id": 2684,
                    "nodeType": "Block",
                    "src": "9688:455:3",
                    "statements": [
                      {
                        "assignments": [
                          2649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2649,
                            "name": "fromJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2684,
                            "src": "9696:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2648,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9696:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2654,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2650,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "9722:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 2652,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2651,
                              "name": "fromUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2605,
                              "src": "9743:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9722:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 2653,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "9722:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9696:82:3"
                      },
                      {
                        "assignments": [
                          2656
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2656,
                            "name": "toJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2684,
                            "src": "9786:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2655,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9786:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2661,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2657,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "9810:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 2659,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2658,
                              "name": "toUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "9831:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9810:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 2660,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "9810:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9786:69:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2663,
                                "name": "fromJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2649,
                                "src": "9889:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2662,
                              "name": "_isJurisdictionHalted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "9867:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256) view returns (bool)"
                              }
                            },
                            "id": 2664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9867:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2666,
                                "name": "toJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2656,
                                "src": "9934:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2665,
                              "name": "_isJurisdictionHalted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "9912:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256) view returns (bool)"
                              }
                            },
                            "id": 2667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9912:39:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9867:84:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2672,
                        "nodeType": "IfStatement",
                        "src": "9863:145:3",
                        "trueBody": {
                          "id": 2671,
                          "nodeType": "Block",
                          "src": "9952:56:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2669,
                                "name": "STATUS_ERROR_JURISDICTION_HALT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2278,
                                "src": "9969:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 2603,
                              "id": 2670,
                              "nodeType": "Return",
                              "src": "9962:37:3"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2673,
                                "name": "jurisdictionFlows",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2403,
                                "src": "10019:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 2675,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2674,
                                "name": "fromJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2649,
                                "src": "10037:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10019:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2677,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2676,
                              "name": "toJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2656,
                              "src": "10057:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10019:55:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10078:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10019:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2683,
                        "nodeType": "IfStatement",
                        "src": "10015:122:3",
                        "trueBody": {
                          "id": 2682,
                          "nodeType": "Block",
                          "src": "10081:56:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2680,
                                "name": "STATUS_ERROR_JURISDICTION_FLOW",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2269,
                                "src": "10098:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 2603,
                              "id": 2681,
                              "nodeType": "Return",
                              "src": "10091:37:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2686,
                    "name": "STATUS_SUCCESS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2266,
                    "src": "10156:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 2603,
                  "id": 2687,
                  "nodeType": "Return",
                  "src": "10149:21:3"
                }
              ]
            },
            "documentation": "@notice Checks if there is a transfer restriction for the given addresses.\nDoes not consider tokenLockup. Use `getLockedTokenCount` for that.\n@dev this function is from the erc-1404 standard and currently in use by the DAT\nfor the `pay` feature.",
            "id": 2689,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "detectTransferRestriction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2595,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9273:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9273:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2597,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9292:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9292:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2599,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9309:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2598,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9309:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9267:63:3"
            },
            "returnParameters": {
              "id": 2603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2602,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9354:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2601,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "9354:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9353:14:3"
            },
            "scope": 4398,
            "src": "9233:942:3",
            "stateMutability": "view",
            "superFunction": 4419,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2733,
              "nodeType": "Block",
              "src": "10294:524:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2696,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10304:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2697,
                      "name": "STATUS_SUCCESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "10324:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10304:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2702,
                  "nodeType": "IfStatement",
                  "src": "10300:71:3",
                  "trueBody": {
                    "id": 2701,
                    "nodeType": "Block",
                    "src": "10340:31:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "53554343455353",
                          "id": 2699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10355:9:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_39bf027dd97f3bae0cf8cfb909695ec63313a9bd61ad52fc7f52cf565b141da8",
                            "typeString": "literal_string \"SUCCESS\""
                          },
                          "value": "SUCCESS"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2700,
                        "nodeType": "Return",
                        "src": "10348:16:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2703,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10380:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2704,
                      "name": "STATUS_ERROR_JURISDICTION_FLOW",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2269,
                      "src": "10400:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10380:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2709,
                  "nodeType": "IfStatement",
                  "src": "10376:105:3",
                  "trueBody": {
                    "id": 2708,
                    "nodeType": "Block",
                    "src": "10432:49:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a204a5552495344494354494f4e5f464c4f57",
                          "id": 2706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10447:27:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_4ca982dd8018432375d833cfab27f3df4acfa3a1cb868cabf9fe78fa5c321994",
                            "typeString": "literal_string \"DENIED: JURISDICTION_FLOW\""
                          },
                          "value": "DENIED: JURISDICTION_FLOW"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2707,
                        "nodeType": "Return",
                        "src": "10440:34:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2710,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10490:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2711,
                      "name": "STATUS_ERROR_LOCKUP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2272,
                      "src": "10510:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10490:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2716,
                  "nodeType": "IfStatement",
                  "src": "10486:83:3",
                  "trueBody": {
                    "id": 2715,
                    "nodeType": "Block",
                    "src": "10531:38:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a204c4f434b5550",
                          "id": 2713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10546:16:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_02d514b9ecae2184d7406f1e5175560c07728c8d5e26db7937cef006861cc5a5",
                            "typeString": "literal_string \"DENIED: LOCKUP\""
                          },
                          "value": "DENIED: LOCKUP"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2714,
                        "nodeType": "Return",
                        "src": "10539:23:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2717,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10578:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2718,
                      "name": "STATUS_ERROR_USER_UNKNOWN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2275,
                      "src": "10598:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10578:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2723,
                  "nodeType": "IfStatement",
                  "src": "10574:95:3",
                  "trueBody": {
                    "id": 2722,
                    "nodeType": "Block",
                    "src": "10625:44:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a20555345525f554e4b4e4f574e",
                          "id": 2720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10640:22:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_92bd36c8270459c815e0844c87c890e680a9d18d1558156305703fe25150d815",
                            "typeString": "literal_string \"DENIED: USER_UNKNOWN\""
                          },
                          "value": "DENIED: USER_UNKNOWN"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2721,
                        "nodeType": "Return",
                        "src": "10633:29:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2724,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10678:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2725,
                      "name": "STATUS_ERROR_JURISDICTION_HALT",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2278,
                      "src": "10698:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10678:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2730,
                  "nodeType": "IfStatement",
                  "src": "10674:104:3",
                  "trueBody": {
                    "id": 2729,
                    "nodeType": "Block",
                    "src": "10729:49:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a204a5552495344494354494f4e5f48414c54",
                          "id": 2727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10744:27:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_ec0449ac2fc9983782978aa766db06e61d76e25322b121e6da120ec1ec1622e7",
                            "typeString": "literal_string \"DENIED: JURISDICTION_HALT\""
                          },
                          "value": "DENIED: JURISDICTION_HALT"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2728,
                        "nodeType": "Return",
                        "src": "10737:34:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44454e4945443a20554e4b4e4f574e5f4552524f52",
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10790:23:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_13cb86725c4e5bc279251d8e76d50095ff22b7caf0f0f68b0e768bf0acd52122",
                      "typeString": "literal_string \"DENIED: UNKNOWN_ERROR\""
                    },
                    "value": "DENIED: UNKNOWN_ERROR"
                  },
                  "functionReturnParameters": 2695,
                  "id": 2732,
                  "nodeType": "Return",
                  "src": "10783:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 2734,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "messageForTransferRestriction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2692,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2691,
                  "name": "_restrictionCode",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "10218:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2690,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "10218:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10217:24:3"
            },
            "returnParameters": {
              "id": 2695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2694,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "10277:13:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2693,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10277:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10276:15:3"
            },
            "scope": 4398,
            "src": "10179:639:3",
            "stateMutability": "pure",
            "superFunction": 4426,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2755,
              "nodeType": "Block",
              "src": "11085:120:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2742,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "11110:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11110:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2739,
                        "name": "Ownable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6193,
                        "src": "11091:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Ownable_$6193_$",
                          "typeString": "type(contract Ownable)"
                        }
                      },
                      "id": 2741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6104,
                      "src": "11091:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 2744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11091:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2745,
                  "nodeType": "ExpressionStatement",
                  "src": "11091:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2746,
                      "name": "_initializeOperatorRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5092,
                      "src": "11127:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11127:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2748,
                  "nodeType": "ExpressionStatement",
                  "src": "11127:25:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2749,
                      "name": "callingContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2393,
                      "src": "11158:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$6741",
                        "typeString": "contract IERC20"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2751,
                          "name": "_callingContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2736,
                          "src": "11183:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2750,
                        "name": "IERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6741,
                        "src": "11176:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IERC20_$6741_$",
                          "typeString": "type(contract IERC20)"
                        }
                      },
                      "id": 2752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11176:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$6741",
                        "typeString": "contract IERC20"
                      }
                    },
                    "src": "11158:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$6741",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 2754,
                  "nodeType": "ExpressionStatement",
                  "src": "11158:42:3"
                }
              ]
            },
            "documentation": "@notice Called once to complete configuration for this contract.\n@dev Done with `initialize` instead of a constructor in order to support\nusing this contract via an Upgradable Proxy.",
            "id": 2756,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2736,
                  "name": "_callingContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 2756,
                  "src": "11052:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11052:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11051:26:3"
            },
            "returnParameters": {
              "id": 2738,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11085:0:3"
            },
            "scope": 4398,
            "src": "11032:173:3",
            "stateMutability": "nonpayable",
            "superFunction": 6104,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2780,
              "nodeType": "Block",
              "src": "11398:147:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2765,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2395,
                      "src": "11404:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2766,
                      "name": "_startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2758,
                      "src": "11416:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11404:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2768,
                  "nodeType": "ExpressionStatement",
                  "src": "11404:22:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2769,
                      "name": "lockupGranularity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2397,
                      "src": "11432:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2770,
                      "name": "_lockupGranularity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2760,
                      "src": "11452:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11432:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2772,
                  "nodeType": "ExpressionStatement",
                  "src": "11432:38:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2774,
                        "name": "_startDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2758,
                        "src": "11497:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2775,
                        "name": "_lockupGranularity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2760,
                        "src": "11509:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2776,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "11529:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11529:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 2773,
                      "name": "ConfigWhitelist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2289,
                      "src": "11481:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,uint256,address)"
                      }
                    },
                    "id": 2778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11481:59:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2779,
                  "nodeType": "EmitStatement",
                  "src": "11476:64:3"
                }
              ]
            },
            "documentation": "@notice Called by the owner to update the startDate or lockupGranularity.",
            "id": 2781,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2763,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2762,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "11384:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11384:11:3"
              }
            ],
            "name": "configWhitelist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2758,
                  "name": "_startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2781,
                  "src": "11325:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2757,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11325:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2760,
                  "name": "_lockupGranularity",
                  "nodeType": "VariableDeclaration",
                  "scope": 2781,
                  "src": "11342:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2759,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11342:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11324:42:3"
            },
            "returnParameters": {
              "id": 2764,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11398:0:3"
            },
            "scope": 4398,
            "src": "11300:245:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2855,
              "nodeType": "Block",
              "src": "12165:547:3",
              "statements": [
                {
                  "assignments": [
                    2796
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2796,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 2855,
                      "src": "12171:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2795,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12171:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2799,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2797,
                      "name": "_fromJurisdictionIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2784,
                      "src": "12184:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 2798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "12184:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12171:40:3"
                },
                {
                  "body": {
                    "id": 2853,
                    "nodeType": "Block",
                    "src": "12250:458:3",
                    "statements": [
                      {
                        "assignments": [
                          2811
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2811,
                            "name": "fromJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2853,
                            "src": "12258:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2810,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12258:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2815,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2812,
                            "name": "_fromJurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2784,
                            "src": "12284:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2814,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2813,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2801,
                            "src": "12305:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12284:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12258:49:3"
                      },
                      {
                        "assignments": [
                          2817
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2817,
                            "name": "toJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2853,
                            "src": "12315:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2816,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12315:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2821,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2818,
                            "name": "_toJurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2787,
                            "src": "12339:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2820,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2819,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2801,
                            "src": "12358:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12339:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12315:45:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2823,
                                  "name": "fromJurisdictionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2811,
                                  "src": "12385:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2824,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12406:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12385:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2826,
                                  "name": "toJurisdictionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2817,
                                  "src": "12411:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12430:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12411:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "12385:46:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4a5552495344494354494f4e5f4944",
                              "id": 2830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12441:25:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              },
                              "value": "INVALID_JURISDICTION_ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              }
                            ],
                            "id": 2822,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "12368:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12368:106:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2832,
                        "nodeType": "ExpressionStatement",
                        "src": "12368:106:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2833,
                                "name": "jurisdictionFlows",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2403,
                                "src": "12482:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 2836,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2834,
                                "name": "fromJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2811,
                                "src": "12500:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12482:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2837,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2835,
                              "name": "toJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2817,
                              "src": "12520:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12482:55:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2838,
                              "name": "_lockupLengths",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2790,
                              "src": "12540:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 2840,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2839,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2801,
                              "src": "12555:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12540:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12482:75:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2842,
                        "nodeType": "ExpressionStatement",
                        "src": "12482:75:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2844,
                              "name": "fromJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2811,
                              "src": "12602:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2845,
                              "name": "toJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2817,
                              "src": "12630:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2846,
                                "name": "_lockupLengths",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2790,
                                "src": "12656:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 2848,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2847,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2801,
                                "src": "12671:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12656:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2849,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "12683:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12683:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2843,
                            "name": "UpdateJurisdictionFlow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2299,
                            "src": "12570:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,address)"
                            }
                          },
                          "id": 2851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12570:131:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2852,
                        "nodeType": "EmitStatement",
                        "src": "12565:136:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2804,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2801,
                      "src": "12234:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2805,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2796,
                      "src": "12238:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12234:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2854,
                  "initializationExpression": {
                    "assignments": [
                      2801
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2801,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2854,
                        "src": "12222:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2800,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12222:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2803,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12231:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12222:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "12245:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2807,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2801,
                        "src": "12245:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2809,
                    "nodeType": "ExpressionStatement",
                    "src": "12245:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "12217:491:3"
                }
              ]
            },
            "documentation": "@notice Called by the owner to define or update jurisdiction flows.\n@param _lockupLengths defines transfer restrictions where:\n- 0 is not supported (the default)\n- 1 is supported with no token lockup required\n- >1 is supported and this value defines the lockup length in seconds.\n@dev note that this can be called with a partial list, only including entries\nto be added or which have changed.",
            "id": 2856,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2793,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2792,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "12153:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12153:11:3"
              }
            ],
            "name": "updateJurisdictionFlows",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2784,
                  "name": "_fromJurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2856,
                  "src": "12027:36:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2782,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12027:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2783,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12027:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2787,
                  "name": "_toJurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2856,
                  "src": "12069:34:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2785,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12069:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2786,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12069:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2790,
                  "name": "_lockupLengths",
                  "nodeType": "VariableDeclaration",
                  "scope": 2856,
                  "src": "12109:30:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2788,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12109:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2789,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12109:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12021:122:3"
            },
            "returnParameters": {
              "id": 2794,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12165:0:3"
            },
            "scope": 4398,
            "src": "11989:723:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2951,
              "nodeType": "Block",
              "src": "12985:692:3",
              "statements": [
                {
                  "assignments": [
                    2868
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2868,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 2951,
                      "src": "12991:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2867,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12991:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2871,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2869,
                      "name": "_traders",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2859,
                      "src": "13005:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 2870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "13005:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12991:29:3"
                },
                {
                  "body": {
                    "id": 2949,
                    "nodeType": "Block",
                    "src": "13060:613:3",
                    "statements": [
                      {
                        "assignments": [
                          2883
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2883,
                            "name": "trader",
                            "nodeType": "VariableDeclaration",
                            "scope": 2949,
                            "src": "13068:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2882,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13068:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2887,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2884,
                            "name": "_traders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2859,
                            "src": "13085:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2886,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2885,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "13094:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13085:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13068:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2889,
                                  "name": "authorizedWalletToUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2407,
                                  "src": "13121:24:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 2891,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2890,
                                  "name": "trader",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2883,
                                  "src": "13146:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13121:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13165:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13157:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13157:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13121:46:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "555345525f57414c4c45545f414c52454144595f4144444544",
                              "id": 2896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13177:27:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_62b1bd42f2861d6eae0ebf52f376598c50948c16b784d845246d974a34b1286d",
                                "typeString": "literal_string \"USER_WALLET_ALREADY_ADDED\""
                              },
                              "value": "USER_WALLET_ALREADY_ADDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_62b1bd42f2861d6eae0ebf52f376598c50948c16b784d845246d974a34b1286d",
                                "typeString": "literal_string \"USER_WALLET_ALREADY_ADDED\""
                              }
                            ],
                            "id": 2888,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "13104:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13104:108:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2898,
                        "nodeType": "ExpressionStatement",
                        "src": "13104:108:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2900,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "13237:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 2902,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2901,
                                    "name": "trader",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2883,
                                    "src": "13249:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13237:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2904,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13268:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13260:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13260:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "13237:33:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2907,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "13282:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 2909,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2908,
                                    "name": "trader",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2883,
                                    "src": "13294:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13282:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2910,
                                  "name": "trader",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2883,
                                  "src": "13305:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "13282:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13237:74:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "415454454d50545f544f5f4144445f50524556494f55535f57414c4c45545f41535f4e45575f55534552",
                              "id": 2913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13321:44:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4ac2fdedebf10bda5aba1bec8bf4645765b92552e4505ca674be7edac7c05163",
                                "typeString": "literal_string \"ATTEMPT_TO_ADD_PREVIOUS_WALLET_AS_NEW_USER\""
                              },
                              "value": "ATTEMPT_TO_ADD_PREVIOUS_WALLET_AS_NEW_USER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4ac2fdedebf10bda5aba1bec8bf4645765b92552e4505ca674be7edac7c05163",
                                "typeString": "literal_string \"ATTEMPT_TO_ADD_PREVIOUS_WALLET_AS_NEW_USER\""
                              }
                            ],
                            "id": 2899,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "13220:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13220:153:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2915,
                        "nodeType": "ExpressionStatement",
                        "src": "13220:153:3"
                      },
                      {
                        "assignments": [
                          2917
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2917,
                            "name": "jurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2949,
                            "src": "13381:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2916,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "13381:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2921,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2918,
                            "name": "_jurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2862,
                            "src": "13403:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2920,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2919,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "13420:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13403:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13381:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2923,
                                "name": "jurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2917,
                                "src": "13438:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13456:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13438:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4a5552495344494354494f4e5f4944",
                              "id": 2926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13459:25:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              },
                              "value": "INVALID_JURISDICTION_ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              }
                            ],
                            "id": 2922,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "13430:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13430:55:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2928,
                        "nodeType": "ExpressionStatement",
                        "src": "13430:55:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2929,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "13494:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2931,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2930,
                              "name": "trader",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2883,
                              "src": "13519:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13494:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2932,
                            "name": "trader",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2883,
                            "src": "13529:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13494:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2934,
                        "nodeType": "ExpressionStatement",
                        "src": "13494:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2935,
                                "name": "authorizedUserIdInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2420,
                                "src": "13543:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                  "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                }
                              },
                              "id": 2937,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2936,
                                "name": "trader",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2883,
                                "src": "13564:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13543:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                "typeString": "struct Whitelist.UserInfo storage ref"
                              }
                            },
                            "id": 2938,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "jurisdictionId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2409,
                            "src": "13543:43:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2939,
                            "name": "jurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2917,
                            "src": "13589:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13543:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2941,
                        "nodeType": "ExpressionStatement",
                        "src": "13543:60:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2943,
                              "name": "trader",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2883,
                              "src": "13631:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2944,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2917,
                              "src": "13639:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2945,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "13655:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13655:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2942,
                            "name": "ApproveNewUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2307,
                            "src": "13616:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,address)"
                            }
                          },
                          "id": 2947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13616:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2948,
                        "nodeType": "EmitStatement",
                        "src": "13611:55:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2876,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2873,
                      "src": "13043:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2877,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2868,
                      "src": "13047:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13043:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2950,
                  "initializationExpression": {
                    "assignments": [
                      2873
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2873,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2950,
                        "src": "13031:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2872,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13031:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2875,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13040:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13031:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13055:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2879,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2873,
                        "src": "13055:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2881,
                    "nodeType": "ExpressionStatement",
                    "src": "13055:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "13026:647:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to add new traders.\n@dev The trader will be assigned a userId equal to their wallet address.",
            "id": 2952,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2865,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2864,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "12970:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12970:14:3"
              }
            ],
            "name": "approveNewUsers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2859,
                  "name": "_traders",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "12891:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2857,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "12891:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2858,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12891:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2862,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "12924:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2860,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12924:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2861,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12924:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12885:75:3"
            },
            "returnParameters": {
              "id": 2866,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12985:0:3"
            },
            "scope": 4398,
            "src": "12861:816:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3043,
              "nodeType": "Block",
              "src": "13890:655:3",
              "statements": [
                {
                  "assignments": [
                    2964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2964,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3043,
                      "src": "13896:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2963,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13896:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2967,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2965,
                      "name": "_userIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2955,
                      "src": "13910:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 2966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "13910:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13896:29:3"
                },
                {
                  "body": {
                    "id": 3041,
                    "nodeType": "Block",
                    "src": "13965:576:3",
                    "statements": [
                      {
                        "assignments": [
                          2979
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2979,
                            "name": "userId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3041,
                            "src": "13973:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2978,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13973:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2983,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2980,
                            "name": "_userIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2955,
                            "src": "13990:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2982,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2981,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2969,
                            "src": "13999:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13990:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13973:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2985,
                                    "name": "authorizedUserIdInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2420,
                                    "src": "14026:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                      "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                    }
                                  },
                                  "id": 2987,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2986,
                                    "name": "userId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2979,
                                    "src": "14047:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14026:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                    "typeString": "struct Whitelist.UserInfo storage ref"
                                  }
                                },
                                "id": 2988,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "jurisdictionId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2409,
                                "src": "14026:43:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14073:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "14026:48:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "555345525f49445f554e4b4e4f574e",
                              "id": 2991,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14084:17:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              },
                              "value": "USER_ID_UNKNOWN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              }
                            ],
                            "id": 2984,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14009:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14009:100:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2993,
                        "nodeType": "ExpressionStatement",
                        "src": "14009:100:3"
                      },
                      {
                        "assignments": [
                          2995
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2995,
                            "name": "newWallet",
                            "nodeType": "VariableDeclaration",
                            "scope": 3041,
                            "src": "14117:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2994,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14117:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2999,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2996,
                            "name": "_newWallets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2958,
                            "src": "14137:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2998,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2997,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2969,
                            "src": "14149:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14137:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14117:34:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3001,
                                  "name": "authorizedWalletToUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2407,
                                  "src": "14176:24:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 3003,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3002,
                                  "name": "newWallet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2995,
                                  "src": "14201:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14176:35:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3005,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14223:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14215:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14215:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14176:49:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57414c4c45545f414c52454144595f4144444544",
                              "id": 3008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14235:22:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_921684a96fcafd87841288bd090084b0e2e445efac7de72622e6086238b0f9ba",
                                "typeString": "literal_string \"WALLET_ALREADY_ADDED\""
                              },
                              "value": "WALLET_ALREADY_ADDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_921684a96fcafd87841288bd090084b0e2e445efac7de72622e6086238b0f9ba",
                                "typeString": "literal_string \"WALLET_ALREADY_ADDED\""
                              }
                            ],
                            "id": 3000,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14159:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14159:106:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3010,
                        "nodeType": "ExpressionStatement",
                        "src": "14159:106:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3012,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "14290:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 3014,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3013,
                                    "name": "newWallet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2995,
                                    "src": "14302:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14290:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3016,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14324:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14316:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 3017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14316:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "14290:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3019,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "14338:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 3021,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3020,
                                    "name": "newWallet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2995,
                                    "src": "14350:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14338:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3022,
                                  "name": "userId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2979,
                                  "src": "14364:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "14338:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "14290:80:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "415454454d50545f544f5f45584348414e47455f57414c4c4554",
                              "id": 3025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14380:28:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fb0072beb425993245464a2b790ff11edef3ed2e5a9cca62ede35c8dcdd92bc0",
                                "typeString": "literal_string \"ATTEMPT_TO_EXCHANGE_WALLET\""
                              },
                              "value": "ATTEMPT_TO_EXCHANGE_WALLET"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fb0072beb425993245464a2b790ff11edef3ed2e5a9cca62ede35c8dcdd92bc0",
                                "typeString": "literal_string \"ATTEMPT_TO_EXCHANGE_WALLET\""
                              }
                            ],
                            "id": 3011,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14273:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14273:143:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3027,
                        "nodeType": "ExpressionStatement",
                        "src": "14273:143:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3028,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "14425:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3030,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3029,
                              "name": "newWallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2995,
                              "src": "14450:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14425:35:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3031,
                            "name": "userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2979,
                            "src": "14463:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14425:44:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3033,
                        "nodeType": "ExpressionStatement",
                        "src": "14425:44:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3035,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2979,
                              "src": "14504:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3036,
                              "name": "newWallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2995,
                              "src": "14512:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3037,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "14523:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14523:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3034,
                            "name": "AddApprovedUserWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2315,
                            "src": "14482:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 3039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14482:52:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3040,
                        "nodeType": "EmitStatement",
                        "src": "14477:57:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2972,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2969,
                      "src": "13948:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2973,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "13952:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13948:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3042,
                  "initializationExpression": {
                    "assignments": [
                      2969
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2969,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3042,
                        "src": "13936:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2968,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13936:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2971,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2970,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13945:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13936:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2976,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13960:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2975,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2969,
                        "src": "13960:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2977,
                    "nodeType": "ExpressionStatement",
                    "src": "13960:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "13931:610:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to add wallets to known userIds.",
            "id": 3044,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2961,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2960,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "13875:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13875:14:3"
              }
            ],
            "name": "addApprovedUserWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2955,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3044,
                  "src": "13798:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2953,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13798:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2954,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13798:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2958,
                  "name": "_newWallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3044,
                  "src": "13831:30:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2956,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13831:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2957,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13831:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13792:73:3"
            },
            "returnParameters": {
              "id": 2962,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13890:0:3"
            },
            "scope": 4398,
            "src": "13761:784:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3117,
              "nodeType": "Block",
              "src": "14820:564:3",
              "statements": [
                {
                  "assignments": [
                    3053
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3053,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3117,
                      "src": "14826:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3052,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14826:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3056,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3054,
                      "name": "_wallets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3047,
                      "src": "14840:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 3055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "14840:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14826:29:3"
                },
                {
                  "body": {
                    "id": 3115,
                    "nodeType": "Block",
                    "src": "14895:485:3",
                    "statements": [
                      {
                        "assignments": [
                          3068
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3068,
                            "name": "wallet",
                            "nodeType": "VariableDeclaration",
                            "scope": 3115,
                            "src": "14903:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3067,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14903:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3072,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3069,
                            "name": "_wallets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3047,
                            "src": "14920:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3071,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3070,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3058,
                            "src": "14929:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14920:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14903:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3074,
                                  "name": "authorizedWalletToUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2407,
                                  "src": "14956:24:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 3076,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3075,
                                  "name": "wallet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3068,
                                  "src": "14981:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14956:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3078,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15000:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3077,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14992:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14992:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14956:46:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57414c4c45545f4e4f545f464f554e44",
                              "id": 3081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15012:18:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad8c83175d00e23e7f83f43ca03fd52d8f5eb109ca626ccdd837b3c53c970674",
                                "typeString": "literal_string \"WALLET_NOT_FOUND\""
                              },
                              "value": "WALLET_NOT_FOUND"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ad8c83175d00e23e7f83f43ca03fd52d8f5eb109ca626ccdd837b3c53c970674",
                                "typeString": "literal_string \"WALLET_NOT_FOUND\""
                              }
                            ],
                            "id": 3073,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14939:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14939:99:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3083,
                        "nodeType": "ExpressionStatement",
                        "src": "14939:99:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3084,
                            "name": "walletActivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2459,
                            "src": "15077:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3086,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3085,
                            "name": "wallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3068,
                            "src": "15093:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15077:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3092,
                        "nodeType": "IfStatement",
                        "src": "15074:71:3",
                        "trueBody": {
                          "id": 3091,
                          "nodeType": "Block",
                          "src": "15101:44:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3088,
                                    "name": "wallet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3068,
                                    "src": "15129:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3087,
                                  "name": "_deactivateWallet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3952,
                                  "src": "15111:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 3089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15111:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3090,
                              "nodeType": "ExpressionStatement",
                              "src": "15111:25:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3093,
                              "name": "revokedFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2463,
                              "src": "15216:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3095,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3094,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15228:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15216:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3096,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "15238:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3098,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3097,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15263:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15238:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "15216:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3100,
                        "nodeType": "ExpressionStatement",
                        "src": "15216:54:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3101,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "15279:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3103,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3102,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15304:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15279:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15322:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15314:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 3106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15314:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "15279:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3108,
                        "nodeType": "ExpressionStatement",
                        "src": "15279:45:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3110,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15354:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3111,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "15362:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15362:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3109,
                            "name": "RevokeUserWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2321,
                            "src": "15337:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 3113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15337:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3114,
                        "nodeType": "EmitStatement",
                        "src": "15332:41:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3061,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3058,
                      "src": "14878:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3062,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3053,
                      "src": "14882:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14878:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3116,
                  "initializationExpression": {
                    "assignments": [
                      3058
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3058,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3116,
                        "src": "14866:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3057,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14866:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3060,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14875:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "14866:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "14890:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3064,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3058,
                        "src": "14890:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3066,
                    "nodeType": "ExpressionStatement",
                    "src": "14890:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "14861:519:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to revoke approval for the given wallets.\n@dev If this is called in error, you can restore access with `addApprovedUserWallets`.",
            "id": 3118,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3050,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3049,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "14803:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14803:14:3"
              }
            ],
            "name": "revokeUserWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3048,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3047,
                  "name": "_wallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3118,
                  "src": "14757:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3045,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "14757:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3046,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14757:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14756:29:3"
            },
            "returnParameters": {
              "id": 3051,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14820:0:3"
            },
            "scope": 4398,
            "src": "14730:654:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3207,
              "nodeType": "Block",
              "src": "15628:794:3",
              "statements": [
                {
                  "assignments": [
                    3130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3130,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3207,
                      "src": "15634:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3129,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15634:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3133,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3131,
                      "name": "_userIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3121,
                      "src": "15648:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 3132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "15648:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15634:29:3"
                },
                {
                  "body": {
                    "id": 3205,
                    "nodeType": "Block",
                    "src": "15703:715:3",
                    "statements": [
                      {
                        "assignments": [
                          3145
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3145,
                            "name": "userId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3205,
                            "src": "15711:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3144,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15711:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3149,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3146,
                            "name": "_userIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3121,
                            "src": "15728:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3148,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3147,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3135,
                            "src": "15737:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15728:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15711:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3151,
                                    "name": "authorizedUserIdInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2420,
                                    "src": "15764:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                      "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                    }
                                  },
                                  "id": 3153,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3152,
                                    "name": "userId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3145,
                                    "src": "15785:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15764:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                    "typeString": "struct Whitelist.UserInfo storage ref"
                                  }
                                },
                                "id": 3154,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "jurisdictionId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2409,
                                "src": "15764:43:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15811:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "15764:48:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "555345525f49445f554e4b4e4f574e",
                              "id": 3157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15822:17:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              },
                              "value": "USER_ID_UNKNOWN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              }
                            ],
                            "id": 3150,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "15747:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15747:100:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3159,
                        "nodeType": "ExpressionStatement",
                        "src": "15747:100:3"
                      },
                      {
                        "assignments": [
                          3161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3161,
                            "name": "jurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3205,
                            "src": "15855:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3160,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "15855:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3165,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3162,
                            "name": "_jurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3124,
                            "src": "15877:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3164,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3163,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3135,
                            "src": "15894:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15877:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15855:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3167,
                                "name": "jurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3161,
                                "src": "15912:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15930:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "15912:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4a5552495344494354494f4e5f4944",
                              "id": 3170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15933:25:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              },
                              "value": "INVALID_JURISDICTION_ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              }
                            ],
                            "id": 3166,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "15904:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15904:55:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3172,
                        "nodeType": "ExpressionStatement",
                        "src": "15904:55:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3173,
                            "name": "investorEnlisted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2451,
                            "src": "15970:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3175,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3174,
                            "name": "userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3145,
                            "src": "15987:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15970:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3190,
                        "nodeType": "IfStatement",
                        "src": "15967:301:3",
                        "trueBody": {
                          "id": 3189,
                          "nodeType": "Block",
                          "src": "15995:273:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "16065:77:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3176,
                                    "name": "currentInvestorsByJurisdiction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2447,
                                    "src": "16065:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3181,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3177,
                                        "name": "authorizedUserIdInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2420,
                                        "src": "16096:20:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                          "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                        }
                                      },
                                      "id": 3179,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3178,
                                        "name": "userId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3145,
                                        "src": "16117:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "16096:28:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                        "typeString": "struct Whitelist.UserInfo storage ref"
                                      }
                                    },
                                    "id": 3180,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "jurisdictionId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2409,
                                    "src": "16096:43:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16065:75:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3183,
                              "nodeType": "ExpressionStatement",
                              "src": "16065:77:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "16211:48:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3184,
                                    "name": "currentInvestorsByJurisdiction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2447,
                                    "src": "16211:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3186,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3185,
                                    "name": "jurisdictionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3161,
                                    "src": "16242:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16211:46:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3188,
                              "nodeType": "ExpressionStatement",
                              "src": "16211:48:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3191,
                                "name": "authorizedUserIdInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2420,
                                "src": "16275:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                  "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                }
                              },
                              "id": 3193,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3192,
                                "name": "userId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3145,
                                "src": "16296:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16275:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                "typeString": "struct Whitelist.UserInfo storage ref"
                              }
                            },
                            "id": 3194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "jurisdictionId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2409,
                            "src": "16275:43:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3195,
                            "name": "jurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3161,
                            "src": "16321:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16275:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3197,
                        "nodeType": "ExpressionStatement",
                        "src": "16275:60:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3199,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3145,
                              "src": "16376:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3200,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3161,
                              "src": "16384:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3201,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "16400:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16400:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3198,
                            "name": "UpdateJurisdictionForUserId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2329,
                            "src": "16348:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,address)"
                            }
                          },
                          "id": 3203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16348:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3204,
                        "nodeType": "EmitStatement",
                        "src": "16343:68:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3138,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "15686:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3139,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3130,
                      "src": "15690:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15686:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3206,
                  "initializationExpression": {
                    "assignments": [
                      3135
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3135,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3206,
                        "src": "15674:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3134,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15674:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3137,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15683:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15674:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "15698:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3141,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3135,
                        "src": "15698:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3143,
                    "nodeType": "ExpressionStatement",
                    "src": "15698:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "15669:749:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to change the jurisdiction\nfor the given userIds.",
            "id": 3208,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3127,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3126,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "15613:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "15613:14:3"
              }
            ],
            "name": "updateJurisdictionsForUserIds",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3125,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3121,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3208,
                  "src": "15534:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3119,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15534:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3120,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15534:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3124,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3208,
                  "src": "15567:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3122,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "15567:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3123,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15567:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15528:75:3"
            },
            "returnParameters": {
              "id": 3128,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15628:0:3"
            },
            "scope": 4398,
            "src": "15490:932:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3309,
              "nodeType": "Block",
              "src": "16820:1041:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3219,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3217,
                        "name": "_numberOfTokensLocked",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3214,
                        "src": "16837:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16862:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "16837:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3220,
                        "name": "_lockupExpirationDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3212,
                        "src": "16867:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3221,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8524,
                          "src": "16892:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 3222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "16892:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16867:40:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16837:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3227,
                  "nodeType": "IfStatement",
                  "src": "16826:134:3",
                  "trueBody": {
                    "id": 3226,
                    "nodeType": "Block",
                    "src": "16914:46:3",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 3216,
                        "id": 3225,
                        "nodeType": "Return",
                        "src": "16947:7:3"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3229,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3210,
                        "src": "16987:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3230,
                        "name": "_lockupExpirationDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3212,
                        "src": "17002:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3231,
                        "name": "_numberOfTokensLocked",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3214,
                        "src": "17031:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3232,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "17060:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "17060:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 3228,
                      "name": "AddLockup",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2339,
                      "src": "16970:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,uint256,uint256,address)"
                      }
                    },
                    "id": 3234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16970:106:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3235,
                  "nodeType": "EmitStatement",
                  "src": "16965:111:3"
                },
                {
                  "assignments": [
                    3237
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3237,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 3309,
                      "src": "17082:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3236,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "17082:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3241,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3238,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "17106:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 3240,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3239,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3210,
                      "src": "17127:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17106:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17082:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3243,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3237,
                            "src": "17149:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3244,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "17149:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17172:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "17149:24:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17175:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3242,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "17141:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17141:52:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3249,
                  "nodeType": "ExpressionStatement",
                  "src": "17141:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3250,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3237,
                        "src": "17199:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3252,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2411,
                      "src": "17199:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3256,
                          "name": "_numberOfTokensLocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3214,
                          "src": "17251:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3253,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3237,
                            "src": "17224:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3254,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalTokensLocked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2411,
                          "src": "17224:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5909,
                        "src": "17224:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17224:49:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17199:74:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3259,
                  "nodeType": "ExpressionStatement",
                  "src": "17199:74:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3260,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3237,
                        "src": "17283:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3261,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "endIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2415,
                      "src": "17283:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17299:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17283:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3291,
                  "nodeType": "IfStatement",
                  "src": "17279:411:3",
                  "trueBody": {
                    "id": 3290,
                    "nodeType": "Block",
                    "src": "17302:388:3",
                    "statements": [
                      {
                        "assignments": [
                          3265
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3265,
                            "name": "lockup",
                            "nodeType": "VariableDeclaration",
                            "scope": 3290,
                            "src": "17310:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                              "typeString": "struct Whitelist.Lockup"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3264,
                              "name": "Lockup",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2425,
                              "src": "17310:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                "typeString": "struct Whitelist.Lockup"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3274,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3266,
                              "name": "userIdLockups",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2431,
                              "src": "17334:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                              }
                            },
                            "id": 3268,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3267,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3210,
                              "src": "17348:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17334:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                              "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                            }
                          },
                          "id": 3273,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3269,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3237,
                                "src": "17357:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                  "typeString": "struct Whitelist.UserInfo storage pointer"
                                }
                              },
                              "id": 3270,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2415,
                              "src": "17357:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17373:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "17357:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17334:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                            "typeString": "struct Whitelist.Lockup storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17310:65:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3275,
                                "name": "lockup",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3265,
                                "src": "17396:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                  "typeString": "struct Whitelist.Lockup storage pointer"
                                }
                              },
                              "id": 3276,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lockupExpirationDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2422,
                              "src": "17396:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3277,
                              "name": "lockupGranularity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2397,
                              "src": "17426:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17396:47:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3279,
                            "name": "_lockupExpirationDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3212,
                            "src": "17447:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17396:72:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3289,
                        "nodeType": "IfStatement",
                        "src": "17383:301:3",
                        "trueBody": {
                          "id": 3288,
                          "nodeType": "Block",
                          "src": "17477:207:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3281,
                                    "name": "lockup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3265,
                                    "src": "17607:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                      "typeString": "struct Whitelist.Lockup storage pointer"
                                    }
                                  },
                                  "id": 3283,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "numberOfTokensLocked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2424,
                                  "src": "17607:27:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3284,
                                  "name": "_numberOfTokensLocked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3214,
                                  "src": "17638:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17607:52:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3286,
                              "nodeType": "ExpressionStatement",
                              "src": "17607:52:3"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 3216,
                              "id": 3287,
                              "nodeType": "Return",
                              "src": "17669:7:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3292,
                          "name": "userIdLockups",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2431,
                          "src": "17725:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                            "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                          }
                        },
                        "id": 3296,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3293,
                          "name": "_userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3210,
                          "src": "17739:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "17725:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                          "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                        }
                      },
                      "id": 3297,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3294,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3237,
                          "src": "17748:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                            "typeString": "struct Whitelist.UserInfo storage pointer"
                          }
                        },
                        "id": 3295,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "endIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2415,
                        "src": "17748:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "17725:37:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                        "typeString": "struct Whitelist.Lockup storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3299,
                          "name": "_lockupExpirationDate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3212,
                          "src": "17779:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3300,
                          "name": "_numberOfTokensLocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3214,
                          "src": "17808:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3298,
                        "name": "Lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2425,
                        "src": "17765:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Lockup_$2425_storage_ptr_$",
                          "typeString": "type(struct Whitelist.Lockup storage pointer)"
                        }
                      },
                      "id": 3301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17765:70:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_memory",
                        "typeString": "struct Whitelist.Lockup memory"
                      }
                    },
                    "src": "17725:110:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                      "typeString": "struct Whitelist.Lockup storage ref"
                    }
                  },
                  "id": 3303,
                  "nodeType": "ExpressionStatement",
                  "src": "17725:110:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "17841:15:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3304,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3237,
                        "src": "17841:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "endIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2415,
                      "src": "17841:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3308,
                  "nodeType": "ExpressionStatement",
                  "src": "17841:15:3"
                }
              ]
            },
            "documentation": "@notice Adds a tokenLockup for the userId.\n@dev A no-op if lockup is not required for this transfer.\nThe lockup entry is merged with the most recent lockup for that user\nif the expiration date is <= `lockupGranularity` from the previous entry.",
            "id": 3310,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addLockup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3210,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3310,
                  "src": "16727:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16727:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3212,
                  "name": "_lockupExpirationDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3310,
                  "src": "16748:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3211,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16748:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3214,
                  "name": "_numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 3310,
                  "src": "16780:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3213,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16780:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16721:89:3"
            },
            "returnParameters": {
              "id": 3216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16820:0:3"
            },
            "scope": 4398,
            "src": "16702:1159:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3353,
              "nodeType": "Block",
              "src": "18204:202:3",
              "statements": [
                {
                  "assignments": [
                    3325
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3325,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3353,
                      "src": "18210:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3324,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18210:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3328,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3326,
                      "name": "_userIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3313,
                      "src": "18224:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 3327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "18224:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18210:29:3"
                },
                {
                  "body": {
                    "id": 3351,
                    "nodeType": "Block",
                    "src": "18279:123:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3340,
                                "name": "_userIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3313,
                                "src": "18307:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3342,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3341,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3330,
                                "src": "18316:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18307:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3343,
                                "name": "_lockupExpirationDates",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3316,
                                "src": "18328:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3345,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3344,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3330,
                                "src": "18351:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18328:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3346,
                                "name": "_numberOfTokensLocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3319,
                                "src": "18363:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3348,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3347,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3330,
                                "src": "18385:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18363:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3339,
                            "name": "_addLockup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "18287:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18287:108:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3350,
                        "nodeType": "ExpressionStatement",
                        "src": "18287:108:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3333,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3330,
                      "src": "18262:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3334,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3325,
                      "src": "18266:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18262:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3352,
                  "initializationExpression": {
                    "assignments": [
                      3330
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3330,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3352,
                        "src": "18250:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3329,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18250:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3332,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18259:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "18250:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "18274:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3336,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3330,
                        "src": "18274:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3338,
                    "nodeType": "ExpressionStatement",
                    "src": "18274:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "18245:157:3"
                }
              ]
            },
            "documentation": "@notice Operators can manually add lockups for userIds.\nThis may be used by the organization before transfering tokens\nfrom the initial supply.",
            "id": 3354,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3322,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3321,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "18189:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "18189:14:3"
              }
            ],
            "name": "addLockups",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3313,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3354,
                  "src": "18061:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3311,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "18061:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3312,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "18061:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3316,
                  "name": "_lockupExpirationDates",
                  "nodeType": "VariableDeclaration",
                  "scope": 3354,
                  "src": "18094:38:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3314,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "18094:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3315,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "18094:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3319,
                  "name": "_numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 3354,
                  "src": "18138:37:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3317,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "18138:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3318,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "18138:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18055:124:3"
            },
            "returnParameters": {
              "id": 3323,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18204:0:3"
            },
            "scope": 4398,
            "src": "18036:370:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3429,
              "nodeType": "Block",
              "src": "18805:639:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3365,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "18815:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3366,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "18815:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3367,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "18834:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3368,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "endIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2415,
                      "src": "18834:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18815:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3373,
                  "nodeType": "IfStatement",
                  "src": "18811:98:3",
                  "trueBody": {
                    "id": 3372,
                    "nodeType": "Block",
                    "src": "18849:60:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18898:4:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3364,
                        "id": 3371,
                        "nodeType": "Return",
                        "src": "18891:11:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3375
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3375,
                      "name": "lockup",
                      "nodeType": "VariableDeclaration",
                      "scope": 3429,
                      "src": "18914:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                        "typeString": "struct Whitelist.Lockup"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3374,
                        "name": "Lockup",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2425,
                        "src": "18914:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3382,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3376,
                        "name": "userIdLockups",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2431,
                        "src": "18938:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                        }
                      },
                      "id": 3378,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3377,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3358,
                        "src": "18952:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "18938:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                        "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                      }
                    },
                    "id": 3381,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3379,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "18961:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3380,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "18961:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18938:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                      "typeString": "struct Whitelist.Lockup storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18914:63:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3383,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3375,
                          "src": "18987:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                            "typeString": "struct Whitelist.Lockup storage pointer"
                          }
                        },
                        "id": 3384,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lockupExpirationDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2422,
                        "src": "18987:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3385,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8524,
                          "src": "19017:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 3386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "19017:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "18987:45:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "19036:18:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3388,
                        "name": "_ignoreExpiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3360,
                        "src": "19037:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18987:67:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3394,
                  "nodeType": "IfStatement",
                  "src": "18983:133:3",
                  "trueBody": {
                    "id": 3393,
                    "nodeType": "Block",
                    "src": "19056:60:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19105:4:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3364,
                        "id": 3392,
                        "nodeType": "Return",
                        "src": "19098:11:3"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3396,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3358,
                        "src": "19139:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3397,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3375,
                          "src": "19148:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                            "typeString": "struct Whitelist.Lockup storage pointer"
                          }
                        },
                        "id": 3398,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numberOfTokensLocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "19148:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3399,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "19177:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "19177:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 3395,
                      "name": "UnlockTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2347,
                      "src": "19126:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,uint256,address)"
                      }
                    },
                    "id": 3401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19126:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3402,
                  "nodeType": "EmitStatement",
                  "src": "19121:67:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3403,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "19194:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3405,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2411,
                      "src": "19194:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3406,
                        "name": "lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "19220:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup storage pointer"
                        }
                      },
                      "id": 3407,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numberOfTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "19220:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19194:53:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3409,
                  "nodeType": "ExpressionStatement",
                  "src": "19194:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "19253:17:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3410,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "19253:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3412,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "19253:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3414,
                  "nodeType": "ExpressionStatement",
                  "src": "19253:17:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3415,
                        "name": "lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "19319:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup storage pointer"
                        }
                      },
                      "id": 3417,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numberOfTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "19319:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19349:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "19319:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3420,
                  "nodeType": "ExpressionStatement",
                  "src": "19319:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3421,
                        "name": "lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "19356:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup storage pointer"
                        }
                      },
                      "id": 3423,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "lockupExpirationDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2422,
                      "src": "19356:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19386:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "19356:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3426,
                  "nodeType": "ExpressionStatement",
                  "src": "19356:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 3427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "19434:5:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 3364,
                  "id": 3428,
                  "nodeType": "Return",
                  "src": "19427:12:3"
                }
              ]
            },
            "documentation": "@notice Checks the next lockup entry for a given user and unlocks\nthose tokens if applicable.\n@param _ignoreExpiration bypasses the recorded expiration date and\nremoves the lockup entry if there are any remaining for this user.",
            "id": 3430,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_processLockup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3356,
                  "name": "info",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18699:21:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                    "typeString": "struct Whitelist.UserInfo"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3355,
                    "name": "UserInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2416,
                    "src": "18699:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                      "typeString": "struct Whitelist.UserInfo"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3358,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18726:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3357,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18726:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3360,
                  "name": "_ignoreExpiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18747:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3359,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18747:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18693:80:3"
            },
            "returnParameters": {
              "id": 3364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3363,
                  "name": "isDone",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18792:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3362,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18792:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18791:13:3"
            },
            "scope": 4398,
            "src": "18670:774:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3471,
              "nodeType": "Block",
              "src": "19711:243:3",
              "statements": [
                {
                  "assignments": [
                    3438
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3438,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 3471,
                      "src": "19717:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3437,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "19717:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3442,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3439,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "19741:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 3441,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3440,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3432,
                      "src": "19762:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19741:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19717:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3444,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3438,
                            "src": "19784:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3445,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "19784:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19806:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "19784:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19809:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3443,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "19776:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19776:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3450,
                  "nodeType": "ExpressionStatement",
                  "src": "19776:51:3"
                },
                {
                  "body": {
                    "id": 3469,
                    "nodeType": "Block",
                    "src": "19870:80:3",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3462,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3438,
                              "src": "19897:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3463,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3432,
                              "src": "19903:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 3464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19912:5:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3461,
                            "name": "_processLockup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "19882:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserInfo_$2416_storage_ptr_$_t_address_$_t_bool_$returns$_t_bool_$",
                              "typeString": "function (struct Whitelist.UserInfo storage pointer,address,bool) returns (bool)"
                            }
                          },
                          "id": 3465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19882:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3468,
                        "nodeType": "IfStatement",
                        "src": "19878:66:3",
                        "trueBody": {
                          "id": 3467,
                          "nodeType": "Block",
                          "src": "19920:24:3",
                          "statements": [
                            {
                              "id": 3466,
                              "nodeType": "Break",
                              "src": "19930:5:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3455,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3452,
                      "src": "19850:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3456,
                      "name": "_maxCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3434,
                      "src": "19854:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19850:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3470,
                  "initializationExpression": {
                    "assignments": [
                      3452
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3452,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3470,
                        "src": "19838:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3451,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19838:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3454,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19847:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19838:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "19865:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3458,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3452,
                        "src": "19865:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3460,
                    "nodeType": "ExpressionStatement",
                    "src": "19865:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "19833:117:3"
                }
              ]
            },
            "documentation": "@notice Anyone can process lockups for a userId.\nThis is generally unused but may be required if a given userId\nhas a lot of individual lockup entries which are expired.",
            "id": 3472,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "processLockups",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3432,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "19669:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3431,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19669:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3434,
                  "name": "_maxCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "19686:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3433,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19686:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19668:33:3"
            },
            "returnParameters": {
              "id": 3436,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19711:0:3"
            },
            "scope": 4398,
            "src": "19645:309:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3530,
              "nodeType": "Block",
              "src": "20327:364:3",
              "statements": [
                {
                  "assignments": [
                    3482
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3482,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 3530,
                      "src": "20333:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3481,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "20333:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3486,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3483,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "20357:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 3485,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3484,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3474,
                      "src": "20378:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20357:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20333:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3488,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3482,
                            "src": "20400:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3489,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "20400:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20422:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "20400:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20425:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3487,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "20392:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20392:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3494,
                  "nodeType": "ExpressionStatement",
                  "src": "20392:51:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3496,
                          "name": "_maxLockupIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3476,
                          "src": "20457:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3497,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3482,
                            "src": "20475:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3498,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2413,
                          "src": "20475:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20457:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f554e4c4f434b4544",
                        "id": 3500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20492:18:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_764b6d311a483d0295561dc527d844c7967dad615b87eae453c0fba5b2579678",
                          "typeString": "literal_string \"ALREADY_UNLOCKED\""
                        },
                        "value": "ALREADY_UNLOCKED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_764b6d311a483d0295561dc527d844c7967dad615b87eae453c0fba5b2579678",
                          "typeString": "literal_string \"ALREADY_UNLOCKED\""
                        }
                      ],
                      "id": 3495,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "20449:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20449:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3502,
                  "nodeType": "ExpressionStatement",
                  "src": "20449:62:3"
                },
                {
                  "assignments": [
                    3504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3504,
                      "name": "maxCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3530,
                      "src": "20517:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3503,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20517:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3509,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3505,
                      "name": "_maxLockupIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3476,
                      "src": "20533:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3506,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3482,
                        "src": "20551:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3507,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "20551:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20533:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20517:49:3"
                },
                {
                  "body": {
                    "id": 3528,
                    "nodeType": "Block",
                    "src": "20608:79:3",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3521,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3482,
                              "src": "20635:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3522,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3474,
                              "src": "20641:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 3523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20650:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3520,
                            "name": "_processLockup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "20620:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserInfo_$2416_storage_ptr_$_t_address_$_t_bool_$returns$_t_bool_$",
                              "typeString": "function (struct Whitelist.UserInfo storage pointer,address,bool) returns (bool)"
                            }
                          },
                          "id": 3524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20620:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3527,
                        "nodeType": "IfStatement",
                        "src": "20616:65:3",
                        "trueBody": {
                          "id": 3526,
                          "nodeType": "Block",
                          "src": "20657:24:3",
                          "statements": [
                            {
                              "id": 3525,
                              "nodeType": "Break",
                              "src": "20667:5:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3514,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3511,
                      "src": "20589:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3515,
                      "name": "maxCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3504,
                      "src": "20593:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20589:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3529,
                  "initializationExpression": {
                    "assignments": [
                      3511
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3511,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3529,
                        "src": "20577:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3510,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20577:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3513,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20586:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20577:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3518,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "20603:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3517,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3511,
                        "src": "20603:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3519,
                    "nodeType": "ExpressionStatement",
                    "src": "20603:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "20572:115:3"
                }
              ]
            },
            "documentation": "@notice Allows operators to remove lockup entries, bypassing the\nrecorded expiration date.\n@dev This should generally remain unused. It could be used in combination with\n`addLockups` to fix an incorrect lockup expiration date or quantity.",
            "id": 3531,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3479,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3478,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "20310:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "20310:14:3"
              }
            ],
            "name": "forceUnlockUpTo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3477,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3474,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3531,
                  "src": "20254:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3473,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20254:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3476,
                  "name": "_maxLockupIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3531,
                  "src": "20271:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3475,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20271:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20253:39:3"
            },
            "returnParameters": {
              "id": 3480,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20327:0:3"
            },
            "scope": 4398,
            "src": "20229:462:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3552,
              "nodeType": "Block",
              "src": "20775:101:3",
              "statements": [
                {
                  "assignments": [
                    3539
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3539,
                      "name": "until",
                      "nodeType": "VariableDeclaration",
                      "scope": 3552,
                      "src": "20781:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3538,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20781:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3543,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3540,
                      "name": "jurisdictionHaltsUntil",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2435,
                      "src": "20794:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 3542,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3541,
                      "name": "_jurisdictionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3533,
                      "src": "20817:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20794:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20781:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3544,
                        "name": "until",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3539,
                        "src": "20846:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20855:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20846:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3547,
                        "name": "until",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3539,
                        "src": "20860:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3548,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8536,
                        "src": "20868:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20860:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "20846:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3537,
                  "id": 3551,
                  "nodeType": "Return",
                  "src": "20839:32:3"
                }
              ]
            },
            "documentation": null,
            "id": 3553,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isJurisdictionHalted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3533,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "20726:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3532,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20726:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20725:22:3"
            },
            "returnParameters": {
              "id": 3537,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3536,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "20770:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3535,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20770:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20769:6:3"
            },
            "scope": 4398,
            "src": "20695:181:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3590,
              "nodeType": "Block",
              "src": "21240:150:3",
              "statements": [
                {
                  "assignments": [
                    3565
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3565,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3590,
                      "src": "21246:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3564,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21246:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3568,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3566,
                      "name": "_jurisdictionIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3556,
                      "src": "21260:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 3567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "21260:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21246:37:3"
                },
                {
                  "body": {
                    "id": 3588,
                    "nodeType": "Block",
                    "src": "21319:67:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3580,
                                "name": "_jurisdictionIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3556,
                                "src": "21333:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3582,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3581,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3570,
                                "src": "21350:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21333:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3583,
                                "name": "_expirationTimestamps",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3559,
                                "src": "21354:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3585,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3584,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3570,
                                "src": "21376:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21354:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3579,
                            "name": "_halt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3617,
                            "src": "21327:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21327:52:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3587,
                        "nodeType": "ExpressionStatement",
                        "src": "21327:52:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3573,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3570,
                      "src": "21305:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3574,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3565,
                      "src": "21307:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21305:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3589,
                  "initializationExpression": {
                    "assignments": [
                      3570
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3570,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "21293:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3569,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21293:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3572,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21302:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21293:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21315:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3576,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3570,
                        "src": "21315:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3578,
                    "nodeType": "ExpressionStatement",
                    "src": "21315:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "21289:97:3"
                }
              ]
            },
            "documentation": "@notice halts jurisdictions of id `_jurisdictionIds` for `_duration` seconds\n@dev only owner can call this function\n@param _jurisdictionIds ids of the jurisdictions to halt\n@param _expirationTimestamps due when halt ends*",
            "id": 3591,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3562,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3561,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "21230:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "21230:9:3"
              }
            ],
            "name": "halt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3560,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3556,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3591,
                  "src": "21148:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3554,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21148:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3555,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21148:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3559,
                  "name": "_expirationTimestamps",
                  "nodeType": "VariableDeclaration",
                  "scope": 3591,
                  "src": "21182:37:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3557,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21182:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3558,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21182:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21147:73:3"
            },
            "returnParameters": {
              "id": 3563,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21240:0:3"
            },
            "scope": 4398,
            "src": "21134:256:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3616,
              "nodeType": "Block",
              "src": "21453:155:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3599,
                          "name": "_until",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3595,
                          "src": "21467:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3600,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8536,
                          "src": "21476:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "21467:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "48414c545f4455455f53484f554c445f42455f465554555245",
                        "id": 3602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "21481:27:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_60d5f7968595e6a74d425a97cff89979b6d2777513329e6802d41595dfd606fb",
                          "typeString": "literal_string \"HALT_DUE_SHOULD_BE_FUTURE\""
                        },
                        "value": "HALT_DUE_SHOULD_BE_FUTURE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_60d5f7968595e6a74d425a97cff89979b6d2777513329e6802d41595dfd606fb",
                          "typeString": "literal_string \"HALT_DUE_SHOULD_BE_FUTURE\""
                        }
                      ],
                      "id": 3598,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "21459:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21459:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3604,
                  "nodeType": "ExpressionStatement",
                  "src": "21459:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3605,
                        "name": "jurisdictionHaltsUntil",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2435,
                        "src": "21515:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3607,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3606,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3593,
                        "src": "21538:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "21515:39:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3608,
                      "name": "_until",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3595,
                      "src": "21557:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21515:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3610,
                  "nodeType": "ExpressionStatement",
                  "src": "21515:48:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3612,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3593,
                        "src": "21579:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3613,
                        "name": "_until",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3595,
                        "src": "21596:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3611,
                      "name": "Halt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2353,
                      "src": "21574:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 3614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21574:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3615,
                  "nodeType": "EmitStatement",
                  "src": "21569:34:3"
                }
              ]
            },
            "documentation": null,
            "id": 3617,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_halt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3593,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3617,
                  "src": "21409:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3592,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21409:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3595,
                  "name": "_until",
                  "nodeType": "VariableDeclaration",
                  "scope": 3617,
                  "src": "21431:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3594,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21431:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21408:35:3"
            },
            "returnParameters": {
              "id": 3597,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21453:0:3"
            },
            "scope": 4398,
            "src": "21394:214:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3648,
              "nodeType": "Block",
              "src": "21841:128:3",
              "statements": [
                {
                  "assignments": [
                    3626
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3626,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3648,
                      "src": "21847:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3625,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21847:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3629,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3627,
                      "name": "_jurisdictionIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3620,
                      "src": "21861:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 3628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "21861:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21847:37:3"
                },
                {
                  "body": {
                    "id": 3646,
                    "nodeType": "Block",
                    "src": "21922:43:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3641,
                                "name": "_jurisdictionIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3620,
                                "src": "21938:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3643,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3642,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3631,
                                "src": "21955:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21938:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3640,
                            "name": "_resume",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3674,
                            "src": "21930:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 3644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21930:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3645,
                        "nodeType": "ExpressionStatement",
                        "src": "21930:28:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3634,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3631,
                      "src": "21906:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3635,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3626,
                      "src": "21910:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21906:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3647,
                  "initializationExpression": {
                    "assignments": [
                      3631
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3631,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3647,
                        "src": "21894:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3630,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21894:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3633,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21903:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21894:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21918:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3637,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3631,
                        "src": "21918:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3639,
                    "nodeType": "ExpressionStatement",
                    "src": "21918:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "21890:75:3"
                }
              ]
            },
            "documentation": "@notice resume halted jurisdiction\n@dev only owner can call this function\n@param _jurisdictionIds list of jurisdiction ids to resume*",
            "id": 3649,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3623,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3622,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "21832:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "21832:9:3"
              }
            ],
            "name": "resume",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3620,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3649,
                  "src": "21789:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3618,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21789:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3619,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21789:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21788:34:3"
            },
            "returnParameters": {
              "id": 3624,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21841:0:3"
            },
            "scope": 4398,
            "src": "21773:196:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3673,
              "nodeType": "Block",
              "src": "22021:194:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3655,
                            "name": "jurisdictionHaltsUntil",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2435,
                            "src": "22035:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3657,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3656,
                            "name": "_jurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3651,
                            "src": "22058:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22035:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22078:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "22035:44:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "415454454d50545f544f5f524553554d455f4e4f4e455f48414c5445445f4a555249534449434154494f4e",
                        "id": 3660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22081:45:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d0524525de7ed87a31453401f293ecbe30ecbabdb144d2293848d3917e42f6f3",
                          "typeString": "literal_string \"ATTEMPT_TO_RESUME_NONE_HALTED_JURISDICATION\""
                        },
                        "value": "ATTEMPT_TO_RESUME_NONE_HALTED_JURISDICATION"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d0524525de7ed87a31453401f293ecbe30ecbabdb144d2293848d3917e42f6f3",
                          "typeString": "literal_string \"ATTEMPT_TO_RESUME_NONE_HALTED_JURISDICATION\""
                        }
                      ],
                      "id": 3654,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "22027:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22027:100:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3662,
                  "nodeType": "ExpressionStatement",
                  "src": "22027:100:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3663,
                        "name": "jurisdictionHaltsUntil",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2435,
                        "src": "22133:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3665,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3664,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3651,
                        "src": "22156:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22133:39:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3666,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22175:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "22133:43:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3668,
                  "nodeType": "ExpressionStatement",
                  "src": "22133:43:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3670,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3651,
                        "src": "22194:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3669,
                      "name": "Resume",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2357,
                      "src": "22187:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22187:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3672,
                  "nodeType": "EmitStatement",
                  "src": "22182:28:3"
                }
              ]
            },
            "documentation": null,
            "id": 3674,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_resume",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3651,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3674,
                  "src": "21990:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3650,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21990:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21989:22:3"
            },
            "returnParameters": {
              "id": 3653,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22021:0:3"
            },
            "scope": 4398,
            "src": "21973:242:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3696,
              "nodeType": "Block",
              "src": "22453:160:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3682,
                          "name": "_limit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3676,
                          "src": "22467:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3683,
                          "name": "currentInvestors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2439,
                          "src": "22477:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "22467:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c494d49545f53484f554c445f42455f4c41524745525f5448414e5f43555252454e545f494e564553544f5253",
                        "id": 3685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22495:47:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                          "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                        },
                        "value": "LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                          "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                        }
                      ],
                      "id": 3681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "22459:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22459:84:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3687,
                  "nodeType": "ExpressionStatement",
                  "src": "22459:84:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3688,
                      "name": "maxInvestors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2437,
                      "src": "22549:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3689,
                      "name": "_limit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3676,
                      "src": "22564:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22549:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3691,
                  "nodeType": "ExpressionStatement",
                  "src": "22549:21:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3693,
                        "name": "_limit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3676,
                        "src": "22601:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3692,
                      "name": "MaxInvestorsChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2361,
                      "src": "22581:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22581:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3695,
                  "nodeType": "EmitStatement",
                  "src": "22576:32:3"
                }
              ]
            },
            "documentation": "@notice changes max investors limit of the contract to `_limit`\n@dev only owner can call this function\n@param _limit new investor limit for contract",
            "id": 3697,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3679,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3678,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "22443:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22443:9:3"
              }
            ],
            "name": "setInvestorLimit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3676,
                  "name": "_limit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3697,
                  "src": "22421:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3675,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22421:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22420:13:3"
            },
            "returnParameters": {
              "id": 3680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22453:0:3"
            },
            "scope": 4398,
            "src": "22395:218:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3753,
              "nodeType": "Block",
              "src": "22981:392:3",
              "statements": [
                {
                  "body": {
                    "id": 3751,
                    "nodeType": "Block",
                    "src": "23034:335:3",
                    "statements": [
                      {
                        "assignments": [
                          3720
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3720,
                            "name": "jurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3751,
                            "src": "23042:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3719,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "23042:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3724,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3721,
                            "name": "_jurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3700,
                            "src": "23064:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3723,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3722,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3709,
                            "src": "23081:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23064:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23042:41:3"
                      },
                      {
                        "assignments": [
                          3726
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3726,
                            "name": "limit",
                            "nodeType": "VariableDeclaration",
                            "scope": 3751,
                            "src": "23091:10:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3725,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "23091:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3730,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3727,
                            "name": "_limits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3703,
                            "src": "23104:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3729,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3728,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3709,
                            "src": "23112:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23104:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23091:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3732,
                                "name": "limit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3726,
                                "src": "23130:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3733,
                                  "name": "currentInvestorsByJurisdiction",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2447,
                                  "src": "23139:30:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 3735,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3734,
                                  "name": "jurisdictionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3720,
                                  "src": "23170:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "23139:46:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23130:55:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c494d49545f53484f554c445f42455f4c41524745525f5448414e5f43555252454e545f494e564553544f5253",
                              "id": 3737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23187:47:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                                "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                              },
                              "value": "LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                                "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                              }
                            ],
                            "id": 3731,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "23122:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23122:113:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3739,
                        "nodeType": "ExpressionStatement",
                        "src": "23122:113:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3740,
                              "name": "maxInvestorsByJurisdiction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "23243:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3742,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3741,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3720,
                              "src": "23270:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "23243:42:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3743,
                            "name": "limit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3726,
                            "src": "23288:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23243:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3745,
                        "nodeType": "ExpressionStatement",
                        "src": "23243:50:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3747,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3720,
                              "src": "23340:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3748,
                              "name": "limit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3726,
                              "src": "23356:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3746,
                            "name": "MaxInvestorsByJurisdictionChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2367,
                            "src": "23306:33:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23306:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3750,
                        "nodeType": "EmitStatement",
                        "src": "23301:61:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3712,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3709,
                      "src": "23003:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3713,
                        "name": "_jurisdictionIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3700,
                        "src": "23005:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 3714,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "23005:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23003:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3752,
                  "initializationExpression": {
                    "assignments": [
                      3709
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3709,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3752,
                        "src": "22991:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3708,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22991:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3711,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3710,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23000:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22991:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "23030:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3716,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3709,
                        "src": "23030:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3718,
                    "nodeType": "ExpressionStatement",
                    "src": "23030:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "22987:382:3"
                }
              ]
            },
            "documentation": "@notice changes max investors limit of the `_jurisdcitionId` to `_limit`\n@dev only owner can call this function\n@param _jurisdictionIds jurisdiction id to update\n@param _limits new investor limit for jurisdiction",
            "id": 3754,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3706,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3705,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "22971:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22971:9:3"
              }
            ],
            "name": "setInvestorLimitForJurisdiction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3700,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3754,
                  "src": "22903:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3698,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "22903:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3699,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "22903:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3703,
                  "name": "_limits",
                  "nodeType": "VariableDeclaration",
                  "scope": 3754,
                  "src": "22937:23:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3701,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "22937:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3702,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "22937:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22902:59:3"
            },
            "returnParameters": {
              "id": 3707,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22981:0:3"
            },
            "scope": 4398,
            "src": "22862:511:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3781,
              "nodeType": "Block",
              "src": "23649:92:3",
              "statements": [
                {
                  "body": {
                    "id": 3779,
                    "nodeType": "Block",
                    "src": "23694:43:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3774,
                                "name": "_wallets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3757,
                                "src": "23718:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3776,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3775,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3763,
                                "src": "23727:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23718:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3773,
                            "name": "_activateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "23702:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23702:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3778,
                        "nodeType": "ExpressionStatement",
                        "src": "23702:28:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3766,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3763,
                      "src": "23671:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3767,
                        "name": "_wallets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3757,
                        "src": "23673:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3768,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "23673:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23671:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3780,
                  "initializationExpression": {
                    "assignments": [
                      3763
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3763,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3780,
                        "src": "23659:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3762,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23659:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3765,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23668:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "23659:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "23690:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3770,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3763,
                        "src": "23690:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3772,
                    "nodeType": "ExpressionStatement",
                    "src": "23690:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "23655:82:3"
                }
              ]
            },
            "documentation": "@notice activate wallet enlist user when user is not enlisted\n@dev This function can be called even user does not have balance\nonly owner can call this function",
            "id": 3782,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3760,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3759,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "23636:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "23636:12:3"
              }
            ],
            "name": "activateWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3757,
                  "name": "_wallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3782,
                  "src": "23595:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3755,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "23595:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3756,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "23595:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23589:37:3"
            },
            "returnParameters": {
              "id": 3761,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23649:0:3"
            },
            "scope": 4398,
            "src": "23565:176:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3836,
              "nodeType": "Block",
              "src": "23804:364:3",
              "statements": [
                {
                  "assignments": [
                    3788
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3788,
                      "name": "userId",
                      "nodeType": "VariableDeclaration",
                      "scope": 3836,
                      "src": "23810:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3787,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "23810:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3792,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3789,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "23827:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 3791,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3790,
                      "name": "_wallet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3784,
                      "src": "23852:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "23827:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23810:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3794,
                          "name": "userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3788,
                          "src": "23874:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23892:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "23884:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23884:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "23874:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f554e4b4e4f574e",
                        "id": 3799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23896:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        },
                        "value": "USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        }
                      ],
                      "id": 3793,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "23866:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23866:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3801,
                  "nodeType": "ExpressionStatement",
                  "src": "23866:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "23925:25:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3803,
                            "name": "walletActivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2459,
                            "src": "23926:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3805,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3804,
                            "name": "_wallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3784,
                            "src": "23942:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23926:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f4143544956415445445f57414c4c4554",
                        "id": 3807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23951:26:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5330c5badc145963cdb5ff9f0568edf2ed7ee7ee3c1aed425debd1b79e84d14b",
                          "typeString": "literal_string \"ALREADY_ACTIVATED_WALLET\""
                        },
                        "value": "ALREADY_ACTIVATED_WALLET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5330c5badc145963cdb5ff9f0568edf2ed7ee7ee3c1aed425debd1b79e84d14b",
                          "typeString": "literal_string \"ALREADY_ACTIVATED_WALLET\""
                        }
                      ],
                      "id": 3802,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "23917:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23917:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3809,
                  "nodeType": "ExpressionStatement",
                  "src": "23917:61:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23987:25:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3810,
                        "name": "investorEnlisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "23988:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3812,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3811,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3788,
                        "src": "24005:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23988:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3819,
                  "nodeType": "IfStatement",
                  "src": "23984:63:3",
                  "trueBody": {
                    "id": 3818,
                    "nodeType": "Block",
                    "src": "24013:34:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3815,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3788,
                              "src": "24033:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3814,
                            "name": "_enlistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4062,
                            "src": "24021:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24021:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3817,
                        "nodeType": "ExpressionStatement",
                        "src": "24021:19:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "24052:31:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3820,
                        "name": "userActiveWalletCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2455,
                        "src": "24052:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3822,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3821,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3788,
                        "src": "24074:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "24052:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3824,
                  "nodeType": "ExpressionStatement",
                  "src": "24052:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3825,
                        "name": "walletActivated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2459,
                        "src": "24089:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3827,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3826,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3784,
                        "src": "24105:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "24089:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24116:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "24089:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3830,
                  "nodeType": "ExpressionStatement",
                  "src": "24089:31:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3832,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3788,
                        "src": "24147:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3833,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3784,
                        "src": "24155:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3831,
                      "name": "WalletActivated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2385,
                      "src": "24131:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 3834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24131:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3835,
                  "nodeType": "EmitStatement",
                  "src": "24126:37:3"
                }
              ]
            },
            "documentation": null,
            "id": 3837,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_activateWallet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3784,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 3837,
                  "src": "23775:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23775:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23769:25:3"
            },
            "returnParameters": {
              "id": 3786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23804:0:3"
            },
            "scope": 4398,
            "src": "23745:423:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3856,
              "nodeType": "Block",
              "src": "24398:136:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3848,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3845,
                              "name": "_wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3839,
                              "src": "24438:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3843,
                              "name": "callingContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "24412:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6741",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6686,
                            "src": "24412:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24412:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24450:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "24412:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "415454454d50545f544f5f444541435449564154455f57414c4c45545f574954485f42414c414e4345",
                        "id": 3849,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24453:43:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                          "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                        },
                        "value": "ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                          "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                        }
                      ],
                      "id": 3842,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "24404:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24404:93:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3851,
                  "nodeType": "ExpressionStatement",
                  "src": "24404:93:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3853,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3839,
                        "src": "24521:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3852,
                      "name": "_deactivateWallet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3952,
                      "src": "24503:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 3854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24503:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3855,
                  "nodeType": "ExpressionStatement",
                  "src": "24503:26:3"
                }
              ]
            },
            "documentation": "@notice deactivate wallet delist user if user does not have any wallet left\n@dev This function can only be called when _wallet has zero balance",
            "id": 3857,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deactivateWallet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3839,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 3857,
                  "src": "24369:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24369:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24363:25:3"
            },
            "returnParameters": {
              "id": 3841,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24398:0:3"
            },
            "scope": 4398,
            "src": "24338:196:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3896,
              "nodeType": "Block",
              "src": "24624:199:3",
              "statements": [
                {
                  "body": {
                    "id": 3894,
                    "nodeType": "Block",
                    "src": "24669:150:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3879,
                                      "name": "_wallets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3860,
                                      "src": "24711:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 3881,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3880,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3866,
                                      "src": "24720:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24711:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3877,
                                    "name": "callingContract",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2393,
                                    "src": "24685:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$6741",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3878,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6686,
                                  "src": "24685:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 3882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24685:38:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24727:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "24685:43:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "415454454d50545f544f5f444541435449564154455f57414c4c45545f574954485f42414c414e4345",
                              "id": 3885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24730:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                                "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                              },
                              "value": "ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                                "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                              }
                            ],
                            "id": 3876,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "24677:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24677:97:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3887,
                        "nodeType": "ExpressionStatement",
                        "src": "24677:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3889,
                                "name": "_wallets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3860,
                                "src": "24800:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3891,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3890,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3866,
                                "src": "24809:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24800:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3888,
                            "name": "_deactivateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3952,
                            "src": "24782:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24782:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3893,
                        "nodeType": "ExpressionStatement",
                        "src": "24782:30:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3869,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3866,
                      "src": "24646:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3870,
                        "name": "_wallets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3860,
                        "src": "24648:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3871,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "24648:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24646:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3895,
                  "initializationExpression": {
                    "assignments": [
                      3866
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3866,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3895,
                        "src": "24634:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3865,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24634:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3868,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3867,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24643:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24634:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "24665:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3873,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3866,
                        "src": "24665:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3875,
                    "nodeType": "ExpressionStatement",
                    "src": "24665:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "24630:189:3"
                }
              ]
            },
            "documentation": null,
            "id": 3897,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3863,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3862,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "24611:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "24611:12:3"
              }
            ],
            "name": "deactivateWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3860,
                  "name": "_wallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3897,
                  "src": "24570:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3858,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "24570:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3859,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "24570:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24564:37:3"
            },
            "returnParameters": {
              "id": 3864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24624:0:3"
            },
            "scope": 4398,
            "src": "24538:285:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3951,
              "nodeType": "Block",
              "src": "24888:375:3",
              "statements": [
                {
                  "assignments": [
                    3903
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3903,
                      "name": "userId",
                      "nodeType": "VariableDeclaration",
                      "scope": 3951,
                      "src": "24894:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3902,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "24894:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3907,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3904,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "24911:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 3906,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3905,
                      "name": "_wallet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3899,
                      "src": "24936:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "24911:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24894:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3909,
                          "name": "userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3903,
                          "src": "24958:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24976:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "24968:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24968:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "24958:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f554e4b4e4f574e",
                        "id": 3914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24980:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        },
                        "value": "USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        }
                      ],
                      "id": 3908,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "24950:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24950:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3916,
                  "nodeType": "ExpressionStatement",
                  "src": "24950:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3918,
                          "name": "walletActivated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "25009:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 3920,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3919,
                          "name": "_wallet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3899,
                          "src": "25025:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25009:24:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f44454143544956415445445f57414c4c4554",
                        "id": 3921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25034:28:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8c7f0194c54174ba8ff3842d60e961bb8febe97efc730a35a1f823ddd2b616cf",
                          "typeString": "literal_string \"ALREADY_DEACTIVATED_WALLET\""
                        },
                        "value": "ALREADY_DEACTIVATED_WALLET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8c7f0194c54174ba8ff3842d60e961bb8febe97efc730a35a1f823ddd2b616cf",
                          "typeString": "literal_string \"ALREADY_DEACTIVATED_WALLET\""
                        }
                      ],
                      "id": 3917,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25001:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25001:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3923,
                  "nodeType": "ExpressionStatement",
                  "src": "25001:62:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "25069:31:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3924,
                        "name": "userActiveWalletCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2455,
                        "src": "25069:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3926,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3925,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3903,
                        "src": "25091:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25069:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3928,
                  "nodeType": "ExpressionStatement",
                  "src": "25069:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3929,
                        "name": "walletActivated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2459,
                        "src": "25106:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3931,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3930,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3899,
                        "src": "25122:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25106:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 3932,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25133:5:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "25106:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3934,
                  "nodeType": "ExpressionStatement",
                  "src": "25106:32:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3936,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3903,
                        "src": "25167:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3937,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3899,
                        "src": "25175:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3935,
                      "name": "WalletDeactivated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2391,
                      "src": "25149:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 3938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25149:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3939,
                  "nodeType": "EmitStatement",
                  "src": "25144:39:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3940,
                        "name": "userActiveWalletCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2455,
                        "src": "25192:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3942,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3941,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3903,
                        "src": "25214:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "25192:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25223:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "25192:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3950,
                  "nodeType": "IfStatement",
                  "src": "25189:70:3",
                  "trueBody": {
                    "id": 3949,
                    "nodeType": "Block",
                    "src": "25225:34:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3946,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3903,
                              "src": "25245:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3945,
                            "name": "_delistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4138,
                            "src": "25233:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25233:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3948,
                        "nodeType": "ExpressionStatement",
                        "src": "25233:19:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3952,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_deactivateWallet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3899,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 3952,
                  "src": "24859:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3898,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24859:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24853:25:3"
            },
            "returnParameters": {
              "id": 3901,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24888:0:3"
            },
            "scope": 4398,
            "src": "24827:436:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3979,
              "nodeType": "Block",
              "src": "25347:88:3",
              "statements": [
                {
                  "body": {
                    "id": 3977,
                    "nodeType": "Block",
                    "src": "25392:39:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3972,
                                "name": "_userIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3955,
                                "src": "25412:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3974,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3973,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3961,
                                "src": "25421:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "25412:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3971,
                            "name": "_enlistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4062,
                            "src": "25400:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25400:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3976,
                        "nodeType": "ExpressionStatement",
                        "src": "25400:24:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3964,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3961,
                      "src": "25369:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3965,
                        "name": "_userIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3955,
                        "src": "25371:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "25371:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25369:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3978,
                  "initializationExpression": {
                    "assignments": [
                      3961
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3961,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3978,
                        "src": "25357:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3960,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25357:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3963,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3962,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25366:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25357:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "25388:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3968,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3961,
                        "src": "25388:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3970,
                    "nodeType": "ExpressionStatement",
                    "src": "25388:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "25353:78:3"
                }
              ]
            },
            "documentation": null,
            "id": 3980,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3958,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3957,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "25334:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "25334:12:3"
              }
            ],
            "name": "enlistUsers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3955,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "25293:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3953,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "25293:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3954,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25293:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25287:37:3"
            },
            "returnParameters": {
              "id": 3959,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25347:0:3"
            },
            "scope": 4398,
            "src": "25267:168:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4061,
              "nodeType": "Block",
              "src": "25494:750:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3986,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "25515:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 3988,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3987,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3982,
                              "src": "25536:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "25515:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 3989,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "25515:44:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25563:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "25515:49:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25572:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3985,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25500:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25500:95:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3994,
                  "nodeType": "ExpressionStatement",
                  "src": "25500:95:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "25609:26:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3996,
                            "name": "investorEnlisted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2451,
                            "src": "25610:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3998,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3997,
                            "name": "_userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3982,
                            "src": "25627:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25610:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f454e4c49535445445f55534552",
                        "id": 4000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25636:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cd6d4b6b9ebf9c121fd23e9a86596fa1b6772e4f0a6124b501e9cb258b33646b",
                          "typeString": "literal_string \"ALREADY_ENLISTED_USER\""
                        },
                        "value": "ALREADY_ENLISTED_USER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cd6d4b6b9ebf9c121fd23e9a86596fa1b6772e4f0a6124b501e9cb258b33646b",
                          "typeString": "literal_string \"ALREADY_ENLISTED_USER\""
                        }
                      ],
                      "id": 3995,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25601:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25601:59:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4002,
                  "nodeType": "ExpressionStatement",
                  "src": "25601:59:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4003,
                        "name": "investorEnlisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "25666:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 4005,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4004,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3982,
                        "src": "25683:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25666:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4006,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25694:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "25666:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4008,
                  "nodeType": "ExpressionStatement",
                  "src": "25666:32:3"
                },
                {
                  "assignments": [
                    4010
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4010,
                      "name": "jurisdictionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25704:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4009,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25704:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4015,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4011,
                        "name": "authorizedUserIdInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "25726:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                          "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                        }
                      },
                      "id": 4013,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4012,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3982,
                        "src": "25747:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "25726:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                        "typeString": "struct Whitelist.UserInfo storage ref"
                      }
                    },
                    "id": 4014,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "jurisdictionId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2409,
                    "src": "25726:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25704:73:3"
                },
                {
                  "assignments": [
                    4017
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4017,
                      "name": "totalCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25783:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4016,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25783:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4020,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 4019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": true,
                    "src": "25801:18:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4018,
                      "name": "currentInvestors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "25803:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25783:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4022,
                            "name": "maxInvestors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "25833:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25849:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "25833:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4025,
                            "name": "totalCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4017,
                            "src": "25854:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4026,
                            "name": "maxInvestors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "25868:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25854:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "25833:47:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455843454544494e475f4d41585f494e564553544f5253",
                        "id": 4029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25882:25:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5f86a5cbcf90ccc82b3af9592719e9c10f376e0a6eddafca87169679b28fc63e",
                          "typeString": "literal_string \"EXCEEDING_MAX_INVESTORS\""
                        },
                        "value": "EXCEEDING_MAX_INVESTORS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5f86a5cbcf90ccc82b3af9592719e9c10f376e0a6eddafca87169679b28fc63e",
                          "typeString": "literal_string \"EXCEEDING_MAX_INVESTORS\""
                        }
                      ],
                      "id": 4021,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25825:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25825:83:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4031,
                  "nodeType": "ExpressionStatement",
                  "src": "25825:83:3"
                },
                {
                  "assignments": [
                    4033
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4033,
                      "name": "jurisdictionCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25914:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4032,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25914:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4038,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 4037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": true,
                    "src": "25939:48:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4034,
                        "name": "currentInvestorsByJurisdiction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "25941:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 4036,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4035,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4010,
                        "src": "25972:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25941:46:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25914:73:3"
                },
                {
                  "assignments": [
                    4040
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4040,
                      "name": "maxJurisdictionLimit",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25993:25:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4039,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25993:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4044,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4041,
                      "name": "maxInvestorsByJurisdiction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2443,
                      "src": "26021:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 4043,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4042,
                      "name": "jurisdictionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4010,
                      "src": "26048:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "26021:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25993:70:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4046,
                            "name": "maxJurisdictionLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4040,
                            "src": "26077:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26101:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "26077:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4049,
                            "name": "jurisdictionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4033,
                            "src": "26106:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4050,
                            "name": "maxJurisdictionLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4040,
                            "src": "26127:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26106:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "26077:70:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455843454544494e475f4a5552495344494354494f4e5f4d41585f494e564553544f5253",
                        "id": 4053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26148:38:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_67b4b780ce43ee6996855d9f435dcb100e7b3e1647d371923d9a11204b980ec0",
                          "typeString": "literal_string \"EXCEEDING_JURISDICTION_MAX_INVESTORS\""
                        },
                        "value": "EXCEEDING_JURISDICTION_MAX_INVESTORS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_67b4b780ce43ee6996855d9f435dcb100e7b3e1647d371923d9a11204b980ec0",
                          "typeString": "literal_string \"EXCEEDING_JURISDICTION_MAX_INVESTORS\""
                        }
                      ],
                      "id": 4045,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "26069:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26069:118:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4055,
                  "nodeType": "ExpressionStatement",
                  "src": "26069:118:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4057,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3982,
                        "src": "26215:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4058,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4010,
                        "src": "26224:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4056,
                      "name": "InvestorEnlisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2373,
                      "src": "26198:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26198:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4060,
                  "nodeType": "EmitStatement",
                  "src": "26193:46:3"
                }
              ]
            },
            "documentation": null,
            "id": 4062,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_enlistUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3982,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4062,
                  "src": "25465:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3981,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25465:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25459:25:3"
            },
            "returnParameters": {
              "id": 3984,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25494:0:3"
            },
            "scope": 4398,
            "src": "25439:805:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4089,
              "nodeType": "Block",
              "src": "26328:88:3",
              "statements": [
                {
                  "body": {
                    "id": 4087,
                    "nodeType": "Block",
                    "src": "26373:39:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4082,
                                "name": "_userIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4065,
                                "src": "26393:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4084,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4083,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4071,
                                "src": "26402:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26393:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4081,
                            "name": "_delistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4138,
                            "src": "26381:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26381:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4086,
                        "nodeType": "ExpressionStatement",
                        "src": "26381:24:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4074,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4071,
                      "src": "26350:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4075,
                        "name": "_userIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4065,
                        "src": "26352:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 4076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "26352:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "26350:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4088,
                  "initializationExpression": {
                    "assignments": [
                      4071
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4071,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4088,
                        "src": "26338:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4070,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26338:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4073,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26347:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "26338:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "26369:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4078,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4071,
                        "src": "26369:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4080,
                    "nodeType": "ExpressionStatement",
                    "src": "26369:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "26334:78:3"
                }
              ]
            },
            "documentation": null,
            "id": 4090,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4068,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4067,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "26315:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "26315:12:3"
              }
            ],
            "name": "delistUsers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4065,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 4090,
                  "src": "26274:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4063,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "26274:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4064,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "26274:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "26268:37:3"
            },
            "returnParameters": {
              "id": 4069,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26328:0:3"
            },
            "scope": 4398,
            "src": "26248:168:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4137,
              "nodeType": "Block",
              "src": "26475:409:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4096,
                          "name": "investorEnlisted",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "26489:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 4098,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4097,
                          "name": "_userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4092,
                          "src": "26506:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "26489:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f44454c49535445445f55534552",
                        "id": 4099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26515:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e0e1ab8f488e05d6429b887eab66fe6cb8f61d72266b65acc6094514ce29c9c",
                          "typeString": "literal_string \"ALREADY_DELISTED_USER\""
                        },
                        "value": "ALREADY_DELISTED_USER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e0e1ab8f488e05d6429b887eab66fe6cb8f61d72266b65acc6094514ce29c9c",
                          "typeString": "literal_string \"ALREADY_DELISTED_USER\""
                        }
                      ],
                      "id": 4095,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "26481:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26481:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4101,
                  "nodeType": "ExpressionStatement",
                  "src": "26481:58:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4103,
                            "name": "userActiveWalletCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2455,
                            "src": "26553:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 4105,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4104,
                            "name": "_userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4092,
                            "src": "26575:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "26553:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26585:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "26553:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "415454454d50545f544f5f44454c4953545f555345525f574954485f4143544956455f57414c4c4554",
                        "id": 4108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26587:43:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7ac047eace0d61bfa1e6159124e9462385e719694e5b1f8bada6668d302b5287",
                          "typeString": "literal_string \"ATTEMPT_TO_DELIST_USER_WITH_ACTIVE_WALLET\""
                        },
                        "value": "ATTEMPT_TO_DELIST_USER_WITH_ACTIVE_WALLET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7ac047eace0d61bfa1e6159124e9462385e719694e5b1f8bada6668d302b5287",
                          "typeString": "literal_string \"ATTEMPT_TO_DELIST_USER_WITH_ACTIVE_WALLET\""
                        }
                      ],
                      "id": 4102,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "26545:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26545:86:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4110,
                  "nodeType": "ExpressionStatement",
                  "src": "26545:86:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4111,
                        "name": "investorEnlisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "26637:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 4113,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4112,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "26654:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "26637:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4114,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26665:5:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "26637:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4116,
                  "nodeType": "ExpressionStatement",
                  "src": "26637:33:3"
                },
                {
                  "assignments": [
                    4118
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4118,
                      "name": "jurisdictionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4137,
                      "src": "26676:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4117,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "26676:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4123,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4119,
                        "name": "authorizedUserIdInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "26698:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                          "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                        }
                      },
                      "id": 4121,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4120,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "26719:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "26698:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                        "typeString": "struct Whitelist.UserInfo storage ref"
                      }
                    },
                    "id": 4122,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "jurisdictionId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2409,
                    "src": "26698:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26676:73:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": true,
                    "src": "26755:18:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4124,
                      "name": "currentInvestors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "26757:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4126,
                  "nodeType": "ExpressionStatement",
                  "src": "26755:18:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": true,
                    "src": "26779:48:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4127,
                        "name": "currentInvestorsByJurisdiction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "26781:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 4129,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4128,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4118,
                        "src": "26812:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "26781:46:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4131,
                  "nodeType": "ExpressionStatement",
                  "src": "26779:48:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4133,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "26855:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4134,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4118,
                        "src": "26864:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4132,
                      "name": "InvestorDelisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2379,
                      "src": "26838:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26838:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4136,
                  "nodeType": "EmitStatement",
                  "src": "26833:46:3"
                }
              ]
            },
            "documentation": null,
            "id": 4138,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_delistUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4092,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4138,
                  "src": "26446:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4091,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26446:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "26440:25:3"
            },
            "returnParameters": {
              "id": 4094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26475:0:3"
            },
            "scope": 4398,
            "src": "26420:464:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4396,
              "nodeType": "Block",
              "src": "27267:2830:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4151,
                              "name": "callingContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "27289:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6741",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$6741",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "id": 4150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "27281:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 4152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27281:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4153,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8534,
                            "src": "27309:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "27309:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "27281:38:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43414c4c5f5649415f434f4e54524143545f4f4e4c59",
                        "id": 4156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27321:24:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_92b2a3013703ae746c356e51fc94bb812f75fc3dbc457e1c918a9efc064ba556",
                          "typeString": "literal_string \"CALL_VIA_CONTRACT_ONLY\""
                        },
                        "value": "CALL_VIA_CONTRACT_ONLY"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_92b2a3013703ae746c356e51fc94bb812f75fc3dbc457e1c918a9efc064ba556",
                          "typeString": "literal_string \"CALL_VIA_CONTRACT_ONLY\""
                        }
                      ],
                      "id": 4149,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "27273:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27273:73:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4158,
                  "nodeType": "ExpressionStatement",
                  "src": "27273:73:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4163,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4159,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4142,
                        "src": "27357:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27372:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "27364:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27364:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "27357:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "27378:8:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4164,
                        "name": "_isSell",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4146,
                        "src": "27379:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27357:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4169,
                  "nodeType": "IfStatement",
                  "src": "27353:277:3",
                  "trueBody": {
                    "id": 4168,
                    "nodeType": "Block",
                    "src": "27388:242:3",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 4148,
                        "id": 4167,
                        "nodeType": "Return",
                        "src": "27617:7:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    4171
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4171,
                      "name": "fromUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4396,
                      "src": "27635:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4170,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "27635:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4175,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4172,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "27656:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 4174,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4173,
                      "name": "_from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4140,
                      "src": "27681:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "27656:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27635:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4177,
                            "name": "fromUserId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4171,
                            "src": "27708:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27730:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27722:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27722:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27708:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4182,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4140,
                            "src": "27736:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27753:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27745:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27745:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27736:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "27708:47:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "46524f4d5f555345525f554e4b4e4f574e",
                        "id": 4188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27763:19:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ee3389ad44190ed0f33b4e7504d7c41700bfd7561c1855fa1c3ae576ab2aa4e4",
                          "typeString": "literal_string \"FROM_USER_UNKNOWN\""
                        },
                        "value": "FROM_USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ee3389ad44190ed0f33b4e7504d7c41700bfd7561c1855fa1c3ae576ab2aa4e4",
                          "typeString": "literal_string \"FROM_USER_UNKNOWN\""
                        }
                      ],
                      "id": 4176,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "27693:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27693:95:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4190,
                  "nodeType": "ExpressionStatement",
                  "src": "27693:95:3"
                },
                {
                  "assignments": [
                    4192
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4192,
                      "name": "toUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4396,
                      "src": "27794:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4191,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "27794:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4196,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4193,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "27813:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 4195,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4194,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4142,
                      "src": "27838:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "27813:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27794:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4198,
                            "name": "toUserId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4192,
                            "src": "27856:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27876:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27868:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27868:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27856:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4203,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4142,
                            "src": "27882:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27897:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27889:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27889:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27882:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "27856:43:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544f5f555345525f554e4b4e4f574e",
                        "id": 4209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27901:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e5d022c59af6b4ab80e10da3ed61a65f10d10bab1fdf86fff324b645df9ef51c",
                          "typeString": "literal_string \"TO_USER_UNKNOWN\""
                        },
                        "value": "TO_USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e5d022c59af6b4ab80e10da3ed61a65f10d10bab1fdf86fff324b645df9ef51c",
                          "typeString": "literal_string \"TO_USER_UNKNOWN\""
                        }
                      ],
                      "id": 4197,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "27848:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27848:71:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4211,
                  "nodeType": "ExpressionStatement",
                  "src": "27848:71:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "27928:23:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4212,
                          "name": "walletActivated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "27929:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 4214,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4213,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4140,
                          "src": "27945:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27929:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4216,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4140,
                        "src": "27955:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27972:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "27964:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27964:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "27955:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27928:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4227,
                  "nodeType": "IfStatement",
                  "src": "27925:87:3",
                  "trueBody": {
                    "id": 4226,
                    "nodeType": "Block",
                    "src": "27975:37:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4223,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4140,
                              "src": "27999:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4222,
                            "name": "_activateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "27983:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27983:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4225,
                        "nodeType": "ExpressionStatement",
                        "src": "27983:22:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "28020:21:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4228,
                          "name": "walletActivated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "28021:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 4230,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4229,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4142,
                          "src": "28037:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "28021:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4232,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4142,
                        "src": "28045:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28060:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "28052:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28052:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "28045:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "28020:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4243,
                  "nodeType": "IfStatement",
                  "src": "28017:81:3",
                  "trueBody": {
                    "id": 4242,
                    "nodeType": "Block",
                    "src": "28063:35:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4239,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4142,
                              "src": "28087:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4238,
                            "name": "_activateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "28071:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28071:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4241,
                        "nodeType": "ExpressionStatement",
                        "src": "28071:20:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4249,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4246,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4140,
                            "src": "28132:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4244,
                            "name": "callingContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2393,
                            "src": "28106:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6741",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6686,
                          "src": "28106:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28106:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 4248,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4144,
                        "src": "28142:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "28106:42:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4254,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4250,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4140,
                        "src": "28152:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28169:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "28161:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28161:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "28152:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "28106:65:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4261,
                  "nodeType": "IfStatement",
                  "src": "28103:151:3",
                  "trueBody": {
                    "id": 4260,
                    "nodeType": "Block",
                    "src": "28172:82:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4257,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4140,
                              "src": "28241:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4256,
                            "name": "_deactivateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3952,
                            "src": "28223:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28223:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4259,
                        "nodeType": "ExpressionStatement",
                        "src": "28223:24:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4262,
                      "name": "fromUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4171,
                      "src": "28349:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4263,
                      "name": "toUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4192,
                      "src": "28363:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "28349:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4395,
                  "nodeType": "IfStatement",
                  "src": "28345:1748:3",
                  "trueBody": {
                    "id": 4394,
                    "nodeType": "Block",
                    "src": "28373:1720:3",
                    "statements": [
                      {
                        "assignments": [
                          4266
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4266,
                            "name": "fromJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4394,
                            "src": "28381:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4265,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "28381:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4271,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4267,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "28407:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 4269,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4268,
                              "name": "fromUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4171,
                              "src": "28428:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28407:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 4270,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "28407:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28381:80:3"
                      },
                      {
                        "assignments": [
                          4273
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4273,
                            "name": "toJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4394,
                            "src": "28469:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4272,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "28469:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4278,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4274,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "28493:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 4276,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4275,
                              "name": "toUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4192,
                              "src": "28514:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28493:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 4277,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "28493:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28469:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "28555:42:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4281,
                                    "name": "fromJurisdictionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4266,
                                    "src": "28578:18:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4280,
                                  "name": "_isJurisdictionHalted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3553,
                                  "src": "28556:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (uint256) view returns (bool)"
                                  }
                                },
                                "id": 4282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28556:41:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46524f4d5f4a5552495344494354494f4e5f48414c544544",
                              "id": 4284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28599:26:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f8ec244d34d8299fb185828e46e7b8c4fdaab2a5033f297410cb89be9e7a38aa",
                                "typeString": "literal_string \"FROM_JURISDICTION_HALTED\""
                              },
                              "value": "FROM_JURISDICTION_HALTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f8ec244d34d8299fb185828e46e7b8c4fdaab2a5033f297410cb89be9e7a38aa",
                                "typeString": "literal_string \"FROM_JURISDICTION_HALTED\""
                              }
                            ],
                            "id": 4279,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "28547:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28547:79:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4286,
                        "nodeType": "ExpressionStatement",
                        "src": "28547:79:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "28642:40:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4289,
                                    "name": "toJurisdictionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4273,
                                    "src": "28665:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4288,
                                  "name": "_isJurisdictionHalted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3553,
                                  "src": "28643:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (uint256) view returns (bool)"
                                  }
                                },
                                "id": 4290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28643:39:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "544f5f4a5552495344494354494f4e5f48414c544544",
                              "id": 4292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28684:24:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_523e887b8f744fab2f5b4c59a1932f2c7848d2bd4de79ee85cb5edfcac79d75d",
                                "typeString": "literal_string \"TO_JURISDICTION_HALTED\""
                              },
                              "value": "TO_JURISDICTION_HALTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_523e887b8f744fab2f5b4c59a1932f2c7848d2bd4de79ee85cb5edfcac79d75d",
                                "typeString": "literal_string \"TO_JURISDICTION_HALTED\""
                              }
                            ],
                            "id": 4287,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "28634:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28634:75:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4294,
                        "nodeType": "ExpressionStatement",
                        "src": "28634:75:3"
                      },
                      {
                        "assignments": [
                          4296
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4296,
                            "name": "lockupLength",
                            "nodeType": "VariableDeclaration",
                            "scope": 4394,
                            "src": "28718:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4295,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "28718:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4302,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4297,
                              "name": "jurisdictionFlows",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2403,
                              "src": "28738:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                              }
                            },
                            "id": 4299,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4298,
                              "name": "fromJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4266,
                              "src": "28756:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28738:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 4301,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4300,
                            "name": "toJurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4273,
                            "src": "28776:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28738:55:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28718:75:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4304,
                                "name": "lockupLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4296,
                                "src": "28809:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "28824:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "28809:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "44454e4945443a204a5552495344494354494f4e5f464c4f57",
                              "id": 4307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28827:27:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4ca982dd8018432375d833cfab27f3df4acfa3a1cb868cabf9fe78fa5c321994",
                                "typeString": "literal_string \"DENIED: JURISDICTION_FLOW\""
                              },
                              "value": "DENIED: JURISDICTION_FLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4ca982dd8018432375d833cfab27f3df4acfa3a1cb868cabf9fe78fa5c321994",
                                "typeString": "literal_string \"DENIED: JURISDICTION_FLOW\""
                              }
                            ],
                            "id": 4303,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "28801:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28801:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4309,
                        "nodeType": "ExpressionStatement",
                        "src": "28801:54:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4310,
                              "name": "lockupLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4296,
                              "src": "29051:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "29066:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "29051:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4313,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4142,
                              "src": "29071:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29086:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "29078:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29078:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "29071:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "29051:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4333,
                        "nodeType": "IfStatement",
                        "src": "29047:268:3",
                        "trueBody": {
                          "id": 4332,
                          "nodeType": "Block",
                          "src": "29090:225:3",
                          "statements": [
                            {
                              "assignments": [
                                4320
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4320,
                                  "name": "lockupExpirationDate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4332,
                                  "src": "29188:25:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4319,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "29188:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4325,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4321,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8524,
                                    "src": "29216:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 4322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "29216:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4323,
                                  "name": "lockupLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4296,
                                  "src": "29234:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "29216:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29188:58:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4327,
                                    "name": "toUserId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4192,
                                    "src": "29267:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4328,
                                    "name": "lockupExpirationDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4320,
                                    "src": "29277:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4329,
                                    "name": "_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4144,
                                    "src": "29299:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4326,
                                  "name": "_addLockup",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3310,
                                  "src": "29256:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29256:50:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4331,
                              "nodeType": "ExpressionStatement",
                              "src": "29256:50:3"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4334,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4140,
                            "src": "29327:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "29344:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "29336:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29336:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "29327:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4392,
                          "nodeType": "Block",
                          "src": "29473:614:3",
                          "statements": [
                            {
                              "assignments": [
                                4349
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4349,
                                  "name": "info",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4392,
                                  "src": "29523:21:3",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                    "typeString": "struct Whitelist.UserInfo"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 4348,
                                    "name": "UserInfo",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 2416,
                                    "src": "29523:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                      "typeString": "struct Whitelist.UserInfo"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4353,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4350,
                                  "name": "authorizedUserIdInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2420,
                                  "src": "29547:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                    "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                  }
                                },
                                "id": 4352,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4351,
                                  "name": "fromUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4171,
                                  "src": "29568:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "29547:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                  "typeString": "struct Whitelist.UserInfo storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29523:56:3"
                            },
                            {
                              "body": {
                                "id": 4363,
                                "nodeType": "Block",
                                "src": "29602:99:3",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4356,
                                          "name": "info",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4349,
                                          "src": "29633:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                            "typeString": "struct Whitelist.UserInfo storage pointer"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4357,
                                          "name": "fromUserId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4171,
                                          "src": "29639:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "66616c7365",
                                          "id": 4358,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "29651:5:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                            "typeString": "struct Whitelist.UserInfo storage pointer"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 4355,
                                        "name": "_processLockup",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3430,
                                        "src": "29618:14:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserInfo_$2416_storage_ptr_$_t_address_$_t_bool_$returns$_t_bool_$",
                                          "typeString": "function (struct Whitelist.UserInfo storage pointer,address,bool) returns (bool)"
                                        }
                                      },
                                      "id": 4359,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "29618:39:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 4362,
                                    "nodeType": "IfStatement",
                                    "src": "29614:77:3",
                                    "trueBody": {
                                      "id": 4361,
                                      "nodeType": "Block",
                                      "src": "29659:32:3",
                                      "statements": [
                                        {
                                          "id": 4360,
                                          "nodeType": "Break",
                                          "src": "29673:5:3"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 4354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "29596:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "id": 4364,
                              "nodeType": "WhileStatement",
                              "src": "29589:112:3"
                            },
                            {
                              "assignments": [
                                4366
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4366,
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4392,
                                  "src": "29710:12:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4365,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "29710:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4371,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4369,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4140,
                                    "src": "29751:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4367,
                                    "name": "callingContract",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2393,
                                    "src": "29725:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$6741",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4368,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6686,
                                  "src": "29725:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 4370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29725:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29710:47:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4373,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4366,
                                      "src": "29883:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 4374,
                                      "name": "_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4144,
                                      "src": "29894:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "29883:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "494e53554646494349454e545f42414c414e4345",
                                    "id": 4376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29902:22:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58",
                                      "typeString": "literal_string \"INSUFFICIENT_BALANCE\""
                                    },
                                    "value": "INSUFFICIENT_BALANCE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58",
                                      "typeString": "literal_string \"INSUFFICIENT_BALANCE\""
                                    }
                                  ],
                                  "id": 4372,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    8537,
                                    8538
                                  ],
                                  "referencedDeclaration": 8538,
                                  "src": "29875:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29875:50:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4378,
                              "nodeType": "ExpressionStatement",
                              "src": "29875:50:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4380,
                                      "name": "_isSell",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4146,
                                      "src": "29954:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4387,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4381,
                                        "name": "balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4366,
                                        "src": "29976:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4385,
                                            "name": "_value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4144,
                                            "src": "30014:6:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4382,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4349,
                                              "src": "29987:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                                "typeString": "struct Whitelist.UserInfo storage pointer"
                                              }
                                            },
                                            "id": 4383,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "totalTokensLocked",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2411,
                                            "src": "29987:22:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4384,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5909,
                                          "src": "29987:26:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "29987:34:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "29976:45:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "29954:67:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "494e53554646494349454e545f5452414e5346455241424c455f42414c414e4345",
                                    "id": 4389,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30033:35:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_53c57ec1850e3b504336cf22322745518faa062e7fd6e6a714ca0f53c806aba5",
                                      "typeString": "literal_string \"INSUFFICIENT_TRANSFERABLE_BALANCE\""
                                    },
                                    "value": "INSUFFICIENT_TRANSFERABLE_BALANCE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_53c57ec1850e3b504336cf22322745518faa062e7fd6e6a714ca0f53c806aba5",
                                      "typeString": "literal_string \"INSUFFICIENT_TRANSFERABLE_BALANCE\""
                                    }
                                  ],
                                  "id": 4379,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    8537,
                                    8538
                                  ],
                                  "referencedDeclaration": 8538,
                                  "src": "29935:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29935:143:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4391,
                              "nodeType": "ExpressionStatement",
                              "src": "29935:143:3"
                            }
                          ]
                        },
                        "id": 4393,
                        "nodeType": "IfStatement",
                        "src": "29323:764:3",
                        "trueBody": {
                          "id": 4347,
                          "nodeType": "Block",
                          "src": "29348:119:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4340,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8524,
                                        "src": "29406:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 4341,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "29406:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 4342,
                                      "name": "startDate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2395,
                                      "src": "29425:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "29406:28:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "574149545f464f525f53544152545f44415445",
                                    "id": 4344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29436:21:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a03dfa6d14b3bc88959b52a1b8b265f8c651c982c881a403c05672bc5cd0e955",
                                      "typeString": "literal_string \"WAIT_FOR_START_DATE\""
                                    },
                                    "value": "WAIT_FOR_START_DATE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a03dfa6d14b3bc88959b52a1b8b265f8c651c982c881a403c05672bc5cd0e955",
                                      "typeString": "literal_string \"WAIT_FOR_START_DATE\""
                                    }
                                  ],
                                  "id": 4339,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    8537,
                                    8538
                                  ],
                                  "referencedDeclaration": 8538,
                                  "src": "29398:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29398:60:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4346,
                              "nodeType": "ExpressionStatement",
                              "src": "29398:60:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by the callingContract before a transfer occurs.\n@dev This call will revert when the transfer is not authorized.\nThis is a mutable call to allow additional data to be recorded,\nsuch as when the user aquired their tokens.*",
            "id": 4397,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "authorizeTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4140,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27188:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4139,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27188:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4142,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27207:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4141,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27207:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4144,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27224:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4143,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27224:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4146,
                  "name": "_isSell",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27241:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4145,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27241:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "27182:75:3"
            },
            "returnParameters": {
              "id": 4148,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27267:0:3"
            },
            "scope": 4398,
            "src": "27156:2941:3",
            "stateMutability": "nonpayable",
            "superFunction": 4437,
            "visibility": "external"
          }
        ],
        "scope": 4399,
        "src": "464:29635:3"
      }
    ],
    "src": "0:30100:3"
  },
  "legacyAST": {
    "absolutePath": "/home/circleci/repo/contracts/Whitelist.sol",
    "exportedSymbols": {
      "Whitelist": [
        4398
      ]
    },
    "id": 4399,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2249,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "absolutePath": "/home/circleci/repo/contracts/interfaces/IWhitelist.sol",
        "file": "./interfaces/IWhitelist.sol",
        "id": 2250,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 4446,
        "src": "25:37:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
        "id": 2251,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 6070,
        "src": "63:78:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol",
        "id": 2252,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 6194,
        "src": "142:82:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
        "id": 2253,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 6742,
        "src": "225:83:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/circleci/repo/contracts/mixins/OperatorRole.sol",
        "file": "./mixins/OperatorRole.sol",
        "id": 2254,
        "nodeType": "ImportDirective",
        "scope": 4399,
        "sourceUnit": 5188,
        "src": "309:35:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2255,
              "name": "IWhitelist",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4445,
              "src": "486:10:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IWhitelist_$4445",
                "typeString": "contract IWhitelist"
              }
            },
            "id": 2256,
            "nodeType": "InheritanceSpecifier",
            "src": "486:10:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2257,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6193,
              "src": "498:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$6193",
                "typeString": "contract Ownable"
              }
            },
            "id": 2258,
            "nodeType": "InheritanceSpecifier",
            "src": "498:7:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 2259,
              "name": "OperatorRole",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5187,
              "src": "507:12:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OperatorRole_$5187",
                "typeString": "contract OperatorRole"
              }
            },
            "id": 2260,
            "nodeType": "InheritanceSpecifier",
            "src": "507:12:3"
          }
        ],
        "contractDependencies": [
          4445,
          5187,
          5407,
          6193,
          7851
        ],
        "contractKind": "contract",
        "documentation": "@notice whitelist which manages KYC approvals, token lockup, and transfer\nrestrictions for a DAT token.",
        "fullyImplemented": true,
        "id": 4398,
        "linearizedBaseContracts": [
          4398,
          5187,
          6193,
          5407,
          7851,
          4445
        ],
        "name": "Whitelist",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2263,
            "libraryName": {
              "contractScope": null,
              "id": 2261,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6069,
              "src": "530:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$6069",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "524:24:3",
            "typeName": {
              "id": 2262,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "543:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2266,
            "name": "STATUS_SUCCESS",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "610:41:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2264,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "610:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 2265,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "650:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2269,
            "name": "STATUS_ERROR_JURISDICTION_FLOW",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "655:57:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2267,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "655:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 2268,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "711:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2272,
            "name": "STATUS_ERROR_LOCKUP",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "716:46:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2270,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "716:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 2271,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "761:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2275,
            "name": "STATUS_ERROR_USER_UNKNOWN",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "766:52:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2273,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "766:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "33",
              "id": 2274,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "817:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3_by_1",
                "typeString": "int_const 3"
              },
              "value": "3"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2278,
            "name": "STATUS_ERROR_JURISDICTION_HALT",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "822:57:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2276,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "822:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 2277,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "878:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2281,
            "name": "STATUS_ERROR_NON_LISTED_USER",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "883:55:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 2279,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "883:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "35",
              "id": 2280,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "937:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_5_by_1",
                "typeString": "int_const 5"
              },
              "value": "5"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2289,
            "name": "ConfigWhitelist",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2283,
                  "indexed": false,
                  "name": "_startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2289,
                  "src": "970:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2282,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "970:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2285,
                  "indexed": false,
                  "name": "_lockupGranularity",
                  "nodeType": "VariableDeclaration",
                  "scope": 2289,
                  "src": "991:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2284,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "991:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2287,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2289,
                  "src": "1020:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2286,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1020:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "964:85:3"
            },
            "src": "943:107:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2299,
            "name": "UpdateJurisdictionFlow",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2291,
                  "indexed": true,
                  "name": "_fromJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1087:32:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2290,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1087:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2293,
                  "indexed": true,
                  "name": "_toJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1125:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2292,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1125:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2295,
                  "indexed": false,
                  "name": "_lockupLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1161:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2294,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1161:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2297,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2299,
                  "src": "1185:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2296,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1081:133:3"
            },
            "src": "1053:162:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2307,
            "name": "ApproveNewUser",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2306,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2301,
                  "indexed": true,
                  "name": "_trader",
                  "nodeType": "VariableDeclaration",
                  "scope": 2307,
                  "src": "1244:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2300,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1244:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2303,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2307,
                  "src": "1273:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2302,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1273:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2305,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2307,
                  "src": "1307:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2304,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1307:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1238:98:3"
            },
            "src": "1218:119:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2315,
            "name": "AddApprovedUserWallet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2309,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2315,
                  "src": "1373:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2308,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1373:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2311,
                  "indexed": true,
                  "name": "_newWallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2315,
                  "src": "1402:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2310,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1402:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2313,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2315,
                  "src": "1434:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1434:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1367:96:3"
            },
            "src": "1340:124:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2321,
            "name": "RevokeUserWallet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2317,
                  "indexed": true,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2321,
                  "src": "1490:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2316,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1490:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2319,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2321,
                  "src": "1515:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2318,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1515:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1489:52:3"
            },
            "src": "1467:75:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2329,
            "name": "UpdateJurisdictionForUserId",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2323,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2329,
                  "src": "1584:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1584:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2325,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2329,
                  "src": "1613:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2324,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1613:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2327,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2329,
                  "src": "1647:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2326,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1647:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1578:98:3"
            },
            "src": "1545:132:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2339,
            "name": "AddLockup",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2331,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1701:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2330,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1701:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2333,
                  "indexed": false,
                  "name": "_lockupExpirationDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1730:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2332,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1730:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2335,
                  "indexed": false,
                  "name": "_numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1762:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2334,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1762:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2337,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2339,
                  "src": "1794:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2336,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1794:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1695:128:3"
            },
            "src": "1680:144:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2347,
            "name": "UnlockTokens",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2346,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2341,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "1851:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1851:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2343,
                  "indexed": false,
                  "name": "_tokensUnlocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "1880:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2342,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1880:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2345,
                  "indexed": true,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2347,
                  "src": "1906:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2344,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1906:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1845:90:3"
            },
            "src": "1827:109:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2353,
            "name": "Halt",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2349,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2353,
                  "src": "1950:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2348,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1950:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2351,
                  "indexed": false,
                  "name": "_until",
                  "nodeType": "VariableDeclaration",
                  "scope": 2353,
                  "src": "1980:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2350,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1980:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1949:43:3"
            },
            "src": "1939:54:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2357,
            "name": "Resume",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2355,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2357,
                  "src": "2009:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2354,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2009:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2008:30:3"
            },
            "src": "1996:43:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2361,
            "name": "MaxInvestorsChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2359,
                  "indexed": false,
                  "name": "_limit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2361,
                  "src": "2068:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2358,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2068:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2067:13:3"
            },
            "src": "2042:39:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2367,
            "name": "MaxInvestorsByJurisdictionChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2363,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "2124:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2362,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2124:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2365,
                  "indexed": false,
                  "name": "_limit",
                  "nodeType": "VariableDeclaration",
                  "scope": 2367,
                  "src": "2154:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2364,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2154:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2123:43:3"
            },
            "src": "2084:83:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2373,
            "name": "InvestorEnlisted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2372,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2369,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "2193:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2368,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2193:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2371,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2373,
                  "src": "2218:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2370,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2218:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2192:55:3"
            },
            "src": "2170:78:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2379,
            "name": "InvestorDelisted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2375,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "2274:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2374,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2274:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2377,
                  "indexed": true,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2379,
                  "src": "2299:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2376,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2299:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2273:55:3"
            },
            "src": "2251:78:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2385,
            "name": "WalletActivated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2381,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "2354:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2354:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2383,
                  "indexed": true,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2385,
                  "src": "2379:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2379:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2353:50:3"
            },
            "src": "2332:72:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 2391,
            "name": "WalletDeactivated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 2390,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2387,
                  "indexed": true,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2391,
                  "src": "2431:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2431:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2389,
                  "indexed": true,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2391,
                  "src": "2456:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2388,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2456:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2430:50:3"
            },
            "src": "2407:74:3"
          },
          {
            "constant": false,
            "id": 2393,
            "name": "callingContract",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "2612:29:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20_$6741",
              "typeString": "contract IERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 2392,
              "name": "IERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6741,
              "src": "2612:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$6741",
                "typeString": "contract IERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2395,
            "name": "startDate",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "2775:21:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2394,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2775:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2397,
            "name": "lockupGranularity",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "2966:29:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2396,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "2966:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2403,
            "name": "jurisdictionFlows",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "3518:65:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
              "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
            },
            "typeName": {
              "id": 2402,
              "keyType": {
                "id": 2398,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "3526:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "3518:38:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
              },
              "valueType": {
                "id": 2401,
                "keyType": {
                  "id": 2399,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "3542:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "3534:21:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "valueType": {
                  "id": 2400,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "3550:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2407,
            "name": "authorizedWalletToUserId",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "3917:59:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2406,
              "keyType": {
                "id": 2404,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "3925:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "3917:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2405,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "3936:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "Whitelist.UserInfo",
            "id": 2416,
            "members": [
              {
                "constant": false,
                "id": 2409,
                "name": "jurisdictionId",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4129:19:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2408,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4129:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2411,
                "name": "totalTokensLocked",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4228:22:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2410,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4228:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2413,
                "name": "startIndex",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4307:15:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2412,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4307:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2415,
                "name": "endIndex",
                "nodeType": "VariableDeclaration",
                "scope": 2416,
                "src": "4382:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2414,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4382:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UserInfo",
            "nodeType": "StructDefinition",
            "scope": 4398,
            "src": "4035:365:3",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2420,
            "name": "authorizedUserIdInfo",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "4529:58:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
              "typeString": "mapping(address => struct Whitelist.UserInfo)"
            },
            "typeName": {
              "id": 2419,
              "keyType": {
                "id": 2417,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "4537:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "4529:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                "typeString": "mapping(address => struct Whitelist.UserInfo)"
              },
              "valueType": {
                "contractScope": null,
                "id": 2418,
                "name": "UserInfo",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 2416,
                "src": "4548:8:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                  "typeString": "struct Whitelist.UserInfo"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "canonicalName": "Whitelist.Lockup",
            "id": 2425,
            "members": [
              {
                "constant": false,
                "id": 2422,
                "name": "lockupExpirationDate",
                "nodeType": "VariableDeclaration",
                "scope": 2425,
                "src": "4762:25:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2421,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4762:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2424,
                "name": "numberOfTokensLocked",
                "nodeType": "VariableDeclaration",
                "scope": 2425,
                "src": "4856:25:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2423,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "4856:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Lockup",
            "nodeType": "StructDefinition",
            "scope": 4398,
            "src": "4652:234:3",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2431,
            "name": "userIdLockups",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5284:66:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
              "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup))"
            },
            "typeName": {
              "id": 2430,
              "keyType": {
                "id": 2426,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5292:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "5284:43:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup))"
              },
              "valueType": {
                "id": 2429,
                "keyType": {
                  "id": 2427,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "5311:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "5303:23:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                  "typeString": "mapping(uint256 => struct Whitelist.Lockup)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 2428,
                  "name": "Lockup",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2425,
                  "src": "5319:6:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                    "typeString": "struct Whitelist.Lockup"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2435,
            "name": "jurisdictionHaltsUntil",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5418:51:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2434,
              "keyType": {
                "id": 2432,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5426:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "5418:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2433,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5434:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2437,
            "name": "maxInvestors",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5545:24:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2436,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5545:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2439,
            "name": "currentInvestors",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5683:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2438,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "5683:4:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2443,
            "name": "maxInvestorsByJurisdiction",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5777:55:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2442,
              "keyType": {
                "id": 2440,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5785:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "5777:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2441,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5793:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2447,
            "name": "currentInvestorsByJurisdiction",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "5898:59:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 2446,
              "keyType": {
                "id": 2444,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5906:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "5898:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 2445,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5914:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2451,
            "name": "investorEnlisted",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6123:48:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2450,
              "keyType": {
                "id": 2448,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6131:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6123:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2449,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "6142:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2455,
            "name": "userActiveWalletCount",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6259:53:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 2454,
              "keyType": {
                "id": 2452,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6267:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6259:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 2453,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "6278:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2459,
            "name": "walletActivated",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6399:47:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2458,
              "keyType": {
                "id": 2456,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6407:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6399:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2457,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "6418:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2463,
            "name": "revokedFrom",
            "nodeType": "VariableDeclaration",
            "scope": 4398,
            "src": "6525:46:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 2462,
              "keyType": {
                "id": 2460,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6533:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "6525:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 2461,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "6544:7:3",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2478,
              "nodeType": "Block",
              "src": "7102:75:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2472,
                        "name": "jurisdictionFlows",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2403,
                        "src": "7115:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                          "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                        }
                      },
                      "id": 2474,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2473,
                        "name": "_fromJurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2465,
                        "src": "7133:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7115:38:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 2476,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2475,
                      "name": "_toJurisdictionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2467,
                      "src": "7154:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7115:57:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2471,
                  "id": 2477,
                  "nodeType": "Return",
                  "src": "7108:64:3"
                }
              ]
            },
            "documentation": "@notice checks for transfer restrictions between jurisdictions.\n@return if transfers between these jurisdictions are allowed and if a\ntoken lockup should apply:\n- 0 means transfers between these jurisdictions is blocked (the default)\n- 1 is supported with no token lockup required\n- >1 is supported and this value defines the lockup length in seconds",
            "id": 2479,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getJurisdictionFlow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2465,
                  "name": "_fromJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2479,
                  "src": "7003:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2464,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7003:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2467,
                  "name": "_toJurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2479,
                  "src": "7033:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2466,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7033:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6997:62:3"
            },
            "returnParameters": {
              "id": 2471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2470,
                  "name": "lockupLength",
                  "nodeType": "VariableDeclaration",
                  "scope": 2479,
                  "src": "7083:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2469,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7083:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7082:19:3"
            },
            "scope": 4398,
            "src": "6969:208:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2508,
              "nodeType": "Block",
              "src": "7435:183:3",
              "statements": [
                {
                  "assignments": [
                    2493
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2493,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 2508,
                      "src": "7441:20:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2492,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "7441:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2497,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2494,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "7464:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 2496,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2495,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2481,
                      "src": "7485:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7464:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7441:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2498,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7514:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2499,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "jurisdictionId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2409,
                        "src": "7514:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2500,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7541:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2501,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "totalTokensLocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2411,
                        "src": "7541:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2502,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7571:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2503,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2413,
                        "src": "7571:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2504,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2493,
                          "src": "7594:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                            "typeString": "struct Whitelist.UserInfo memory"
                          }
                        },
                        "id": 2505,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "endIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2415,
                        "src": "7594:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2506,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7506:107:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2491,
                  "id": 2507,
                  "nodeType": "Return",
                  "src": "7499:114:3"
                }
              ]
            },
            "documentation": "@notice checks details for a given userId.",
            "id": 2509,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAuthorizedUserIdInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2481,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7274:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2480,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7274:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7273:17:3"
            },
            "returnParameters": {
              "id": 2491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2484,
                  "name": "jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7333:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2483,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7333:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2486,
                  "name": "totalTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7360:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2485,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7360:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2488,
                  "name": "startIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7390:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2487,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7390:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2490,
                  "name": "endIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2509,
                  "src": "7413:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2489,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7413:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7325:107:3"
            },
            "scope": 4398,
            "src": "7241:377:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2534,
              "nodeType": "Block",
              "src": "7932:141:3",
              "statements": [
                {
                  "assignments": [
                    2521
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2521,
                      "name": "lockup",
                      "nodeType": "VariableDeclaration",
                      "scope": 2534,
                      "src": "7938:20:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                        "typeString": "struct Whitelist.Lockup"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2520,
                        "name": "Lockup",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2425,
                        "src": "7938:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2527,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2522,
                        "name": "userIdLockups",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2431,
                        "src": "7961:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                        }
                      },
                      "id": 2524,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2523,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2511,
                        "src": "7975:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7961:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                        "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                      }
                    },
                    "id": 2526,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2525,
                      "name": "_lockupIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2513,
                      "src": "7984:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7961:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                      "typeString": "struct Whitelist.Lockup storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7938:59:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2528,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2521,
                          "src": "8011:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                            "typeString": "struct Whitelist.Lockup memory"
                          }
                        },
                        "id": 2529,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lockupExpirationDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2422,
                        "src": "8011:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2530,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2521,
                          "src": "8040:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                            "typeString": "struct Whitelist.Lockup memory"
                          }
                        },
                        "id": 2531,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numberOfTokensLocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "8040:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2532,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "8010:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 2519,
                  "id": 2533,
                  "nodeType": "Return",
                  "src": "8003:65:3"
                }
              ]
            },
            "documentation": "@notice gets a specific lockup entry for a userId.\n@dev use `getAuthorizedUserIdInfo` to determine the range of applicable lockupIndex.",
            "id": 2535,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUserIdLockup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2511,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7805:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2510,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7805:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2513,
                  "name": "_lockupIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7822:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2512,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7822:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7804:36:3"
            },
            "returnParameters": {
              "id": 2519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2516,
                  "name": "lockupExpirationDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7876:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2515,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7876:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2518,
                  "name": "numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 2535,
                  "src": "7903:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2517,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7903:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7875:54:3"
            },
            "scope": 4398,
            "src": "7780:293:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2592,
              "nodeType": "Block",
              "src": "8446:505:3",
              "statements": [
                {
                  "assignments": [
                    2543
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2543,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 2592,
                      "src": "8452:20:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2542,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "8452:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2547,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2544,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "8475:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 2546,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2545,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2537,
                      "src": "8496:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8475:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8452:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2548,
                      "name": "lockedTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2540,
                      "src": "8510:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2549,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "8525:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                          "typeString": "struct Whitelist.UserInfo memory"
                        }
                      },
                      "id": 2550,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2411,
                      "src": "8525:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8510:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2552,
                  "nodeType": "ExpressionStatement",
                  "src": "8510:37:3"
                },
                {
                  "assignments": [
                    2554
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2554,
                      "name": "endIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 2592,
                      "src": "8553:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2553,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8553:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2557,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2555,
                      "name": "info",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2543,
                      "src": "8569:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                        "typeString": "struct Whitelist.UserInfo memory"
                      }
                    },
                    "id": 2556,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "endIndex",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2415,
                    "src": "8569:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8553:29:3"
                },
                {
                  "body": {
                    "id": 2590,
                    "nodeType": "Block",
                    "src": "8638:309:3",
                    "statements": [
                      {
                        "assignments": [
                          2570
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2570,
                            "name": "lockup",
                            "nodeType": "VariableDeclaration",
                            "scope": 2590,
                            "src": "8646:20:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                              "typeString": "struct Whitelist.Lockup"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2569,
                              "name": "Lockup",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2425,
                              "src": "8646:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                "typeString": "struct Whitelist.Lockup"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2576,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2571,
                              "name": "userIdLockups",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2431,
                              "src": "8669:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                              }
                            },
                            "id": 2573,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2572,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2537,
                              "src": "8683:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8669:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                              "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                            }
                          },
                          "id": 2575,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2574,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2559,
                            "src": "8692:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8669:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                            "typeString": "struct Whitelist.Lockup storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8646:48:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2577,
                              "name": "lockup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2570,
                              "src": "8706:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                                "typeString": "struct Whitelist.Lockup memory"
                              }
                            },
                            "id": 2578,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lockupExpirationDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2422,
                            "src": "8706:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2579,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8524,
                              "src": "8736:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8736:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8706:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2584,
                        "nodeType": "IfStatement",
                        "src": "8702:111:3",
                        "trueBody": {
                          "id": 2583,
                          "nodeType": "Block",
                          "src": "8753:60:3",
                          "statements": [
                            {
                              "id": 2582,
                              "nodeType": "Break",
                              "src": "8799:5:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2585,
                            "name": "lockedTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2540,
                            "src": "8897:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2586,
                              "name": "lockup",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2570,
                              "src": "8913:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_memory_ptr",
                                "typeString": "struct Whitelist.Lockup memory"
                              }
                            },
                            "id": 2587,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numberOfTokensLocked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2424,
                            "src": "8913:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8897:43:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2589,
                        "nodeType": "ExpressionStatement",
                        "src": "8897:43:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2563,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2559,
                      "src": "8619:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2564,
                      "name": "endIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2554,
                      "src": "8623:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8619:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2591,
                  "initializationExpression": {
                    "assignments": [
                      2559
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2559,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2591,
                        "src": "8593:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2558,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8593:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2562,
                    "initialValue": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2560,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2543,
                        "src": "8602:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_memory_ptr",
                          "typeString": "struct Whitelist.UserInfo memory"
                        }
                      },
                      "id": 2561,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "8602:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8593:24:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8633:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2566,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2559,
                        "src": "8633:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2568,
                    "nodeType": "ExpressionStatement",
                    "src": "8633:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "8588:359:3"
                }
              ]
            },
            "documentation": "@notice Returns the number of unlocked tokens a given userId has available.\n@dev this is a `view`-only way to determine how many tokens are still locked\n(info.totalTokensLocked is only accurate after processing lockups which changes state)",
            "id": 2593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLockedTokenCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2537,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2593,
                  "src": "8373:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2536,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8373:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8372:17:3"
            },
            "returnParameters": {
              "id": 2541,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2540,
                  "name": "lockedTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 2593,
                  "src": "8425:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2539,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8425:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8424:19:3"
            },
            "scope": 4398,
            "src": "8344:607:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2688,
              "nodeType": "Block",
              "src": "9368:807:3",
              "statements": [
                {
                  "assignments": [
                    2605
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2605,
                      "name": "fromUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2688,
                      "src": "9374:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2604,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9374:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2609,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2606,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "9395:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2608,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2607,
                      "name": "_from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2595,
                      "src": "9420:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9395:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9374:52:3"
                },
                {
                  "assignments": [
                    2611
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2611,
                      "name": "toUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 2688,
                      "src": "9432:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2610,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9432:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2615,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2612,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "9451:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 2614,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2613,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2597,
                      "src": "9476:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9451:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9432:48:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2616,
                              "name": "fromUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2605,
                              "src": "9498:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9520:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9512:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9512:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9498:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2621,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2595,
                              "src": "9526:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9543:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9535:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9535:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9526:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9498:47:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2627,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9497:49:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2628,
                              "name": "toUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "9557:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2630,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9577:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9569:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9569:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9557:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2633,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2597,
                              "src": "9583:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2635,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9598:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9590:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9590:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "9583:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9557:43:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 2639,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9556:45:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9497:104:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2644,
                  "nodeType": "IfStatement",
                  "src": "9486:169:3",
                  "trueBody": {
                    "id": 2643,
                    "nodeType": "Block",
                    "src": "9608:47:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2641,
                          "name": "STATUS_ERROR_USER_UNKNOWN",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2275,
                          "src": "9623:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 2603,
                        "id": 2642,
                        "nodeType": "Return",
                        "src": "9616:32:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2645,
                      "name": "fromUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2605,
                      "src": "9664:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2646,
                      "name": "toUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2611,
                      "src": "9678:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9664:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2685,
                  "nodeType": "IfStatement",
                  "src": "9660:483:3",
                  "trueBody": {
                    "id": 2684,
                    "nodeType": "Block",
                    "src": "9688:455:3",
                    "statements": [
                      {
                        "assignments": [
                          2649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2649,
                            "name": "fromJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2684,
                            "src": "9696:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2648,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9696:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2654,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2650,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "9722:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 2652,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2651,
                              "name": "fromUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2605,
                              "src": "9743:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9722:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 2653,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "9722:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9696:82:3"
                      },
                      {
                        "assignments": [
                          2656
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2656,
                            "name": "toJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2684,
                            "src": "9786:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2655,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "9786:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2661,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2657,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "9810:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 2659,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2658,
                              "name": "toUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "9831:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9810:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 2660,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "9810:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9786:69:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2663,
                                "name": "fromJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2649,
                                "src": "9889:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2662,
                              "name": "_isJurisdictionHalted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "9867:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256) view returns (bool)"
                              }
                            },
                            "id": 2664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9867:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2666,
                                "name": "toJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2656,
                                "src": "9934:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2665,
                              "name": "_isJurisdictionHalted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3553,
                              "src": "9912:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (uint256) view returns (bool)"
                              }
                            },
                            "id": 2667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9912:39:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9867:84:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2672,
                        "nodeType": "IfStatement",
                        "src": "9863:145:3",
                        "trueBody": {
                          "id": 2671,
                          "nodeType": "Block",
                          "src": "9952:56:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2669,
                                "name": "STATUS_ERROR_JURISDICTION_HALT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2278,
                                "src": "9969:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 2603,
                              "id": 2670,
                              "nodeType": "Return",
                              "src": "9962:37:3"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2673,
                                "name": "jurisdictionFlows",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2403,
                                "src": "10019:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 2675,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2674,
                                "name": "fromJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2649,
                                "src": "10037:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10019:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2677,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2676,
                              "name": "toJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2656,
                              "src": "10057:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10019:55:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10078:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10019:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2683,
                        "nodeType": "IfStatement",
                        "src": "10015:122:3",
                        "trueBody": {
                          "id": 2682,
                          "nodeType": "Block",
                          "src": "10081:56:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2680,
                                "name": "STATUS_ERROR_JURISDICTION_FLOW",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2269,
                                "src": "10098:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "functionReturnParameters": 2603,
                              "id": 2681,
                              "nodeType": "Return",
                              "src": "10091:37:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2686,
                    "name": "STATUS_SUCCESS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2266,
                    "src": "10156:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 2603,
                  "id": 2687,
                  "nodeType": "Return",
                  "src": "10149:21:3"
                }
              ]
            },
            "documentation": "@notice Checks if there is a transfer restriction for the given addresses.\nDoes not consider tokenLockup. Use `getLockedTokenCount` for that.\n@dev this function is from the erc-1404 standard and currently in use by the DAT\nfor the `pay` feature.",
            "id": 2689,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "detectTransferRestriction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2595,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9273:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9273:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2597,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9292:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9292:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2599,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9309:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2598,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9309:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9267:63:3"
            },
            "returnParameters": {
              "id": 2603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2602,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 2689,
                  "src": "9354:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2601,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "9354:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9353:14:3"
            },
            "scope": 4398,
            "src": "9233:942:3",
            "stateMutability": "view",
            "superFunction": 4419,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2733,
              "nodeType": "Block",
              "src": "10294:524:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2696,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10304:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2697,
                      "name": "STATUS_SUCCESS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "10324:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10304:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2702,
                  "nodeType": "IfStatement",
                  "src": "10300:71:3",
                  "trueBody": {
                    "id": 2701,
                    "nodeType": "Block",
                    "src": "10340:31:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "53554343455353",
                          "id": 2699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10355:9:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_39bf027dd97f3bae0cf8cfb909695ec63313a9bd61ad52fc7f52cf565b141da8",
                            "typeString": "literal_string \"SUCCESS\""
                          },
                          "value": "SUCCESS"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2700,
                        "nodeType": "Return",
                        "src": "10348:16:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2703,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10380:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2704,
                      "name": "STATUS_ERROR_JURISDICTION_FLOW",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2269,
                      "src": "10400:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10380:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2709,
                  "nodeType": "IfStatement",
                  "src": "10376:105:3",
                  "trueBody": {
                    "id": 2708,
                    "nodeType": "Block",
                    "src": "10432:49:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a204a5552495344494354494f4e5f464c4f57",
                          "id": 2706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10447:27:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_4ca982dd8018432375d833cfab27f3df4acfa3a1cb868cabf9fe78fa5c321994",
                            "typeString": "literal_string \"DENIED: JURISDICTION_FLOW\""
                          },
                          "value": "DENIED: JURISDICTION_FLOW"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2707,
                        "nodeType": "Return",
                        "src": "10440:34:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2710,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10490:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2711,
                      "name": "STATUS_ERROR_LOCKUP",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2272,
                      "src": "10510:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10490:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2716,
                  "nodeType": "IfStatement",
                  "src": "10486:83:3",
                  "trueBody": {
                    "id": 2715,
                    "nodeType": "Block",
                    "src": "10531:38:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a204c4f434b5550",
                          "id": 2713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10546:16:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_02d514b9ecae2184d7406f1e5175560c07728c8d5e26db7937cef006861cc5a5",
                            "typeString": "literal_string \"DENIED: LOCKUP\""
                          },
                          "value": "DENIED: LOCKUP"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2714,
                        "nodeType": "Return",
                        "src": "10539:23:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2717,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10578:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2718,
                      "name": "STATUS_ERROR_USER_UNKNOWN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2275,
                      "src": "10598:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10578:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2723,
                  "nodeType": "IfStatement",
                  "src": "10574:95:3",
                  "trueBody": {
                    "id": 2722,
                    "nodeType": "Block",
                    "src": "10625:44:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a20555345525f554e4b4e4f574e",
                          "id": 2720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10640:22:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_92bd36c8270459c815e0844c87c890e680a9d18d1558156305703fe25150d815",
                            "typeString": "literal_string \"DENIED: USER_UNKNOWN\""
                          },
                          "value": "DENIED: USER_UNKNOWN"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2721,
                        "nodeType": "Return",
                        "src": "10633:29:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2724,
                      "name": "_restrictionCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2691,
                      "src": "10678:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2725,
                      "name": "STATUS_ERROR_JURISDICTION_HALT",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2278,
                      "src": "10698:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "10678:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2730,
                  "nodeType": "IfStatement",
                  "src": "10674:104:3",
                  "trueBody": {
                    "id": 2729,
                    "nodeType": "Block",
                    "src": "10729:49:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "44454e4945443a204a5552495344494354494f4e5f48414c54",
                          "id": 2727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10744:27:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_ec0449ac2fc9983782978aa766db06e61d76e25322b121e6da120ec1ec1622e7",
                            "typeString": "literal_string \"DENIED: JURISDICTION_HALT\""
                          },
                          "value": "DENIED: JURISDICTION_HALT"
                        },
                        "functionReturnParameters": 2695,
                        "id": 2728,
                        "nodeType": "Return",
                        "src": "10737:34:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "44454e4945443a20554e4b4e4f574e5f4552524f52",
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10790:23:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_13cb86725c4e5bc279251d8e76d50095ff22b7caf0f0f68b0e768bf0acd52122",
                      "typeString": "literal_string \"DENIED: UNKNOWN_ERROR\""
                    },
                    "value": "DENIED: UNKNOWN_ERROR"
                  },
                  "functionReturnParameters": 2695,
                  "id": 2732,
                  "nodeType": "Return",
                  "src": "10783:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 2734,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "messageForTransferRestriction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2692,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2691,
                  "name": "_restrictionCode",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "10218:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2690,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "10218:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10217:24:3"
            },
            "returnParameters": {
              "id": 2695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2694,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "10277:13:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2693,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10277:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10276:15:3"
            },
            "scope": 4398,
            "src": "10179:639:3",
            "stateMutability": "pure",
            "superFunction": 4426,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2755,
              "nodeType": "Block",
              "src": "11085:120:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2742,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "11110:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11110:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2739,
                        "name": "Ownable",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6193,
                        "src": "11091:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Ownable_$6193_$",
                          "typeString": "type(contract Ownable)"
                        }
                      },
                      "id": 2741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6104,
                      "src": "11091:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 2744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11091:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2745,
                  "nodeType": "ExpressionStatement",
                  "src": "11091:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2746,
                      "name": "_initializeOperatorRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5092,
                      "src": "11127:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 2747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11127:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2748,
                  "nodeType": "ExpressionStatement",
                  "src": "11127:25:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2749,
                      "name": "callingContract",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2393,
                      "src": "11158:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$6741",
                        "typeString": "contract IERC20"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2751,
                          "name": "_callingContract",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2736,
                          "src": "11183:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2750,
                        "name": "IERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6741,
                        "src": "11176:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IERC20_$6741_$",
                          "typeString": "type(contract IERC20)"
                        }
                      },
                      "id": 2752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11176:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$6741",
                        "typeString": "contract IERC20"
                      }
                    },
                    "src": "11158:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$6741",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 2754,
                  "nodeType": "ExpressionStatement",
                  "src": "11158:42:3"
                }
              ]
            },
            "documentation": "@notice Called once to complete configuration for this contract.\n@dev Done with `initialize` instead of a constructor in order to support\nusing this contract via an Upgradable Proxy.",
            "id": 2756,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2736,
                  "name": "_callingContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 2756,
                  "src": "11052:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11052:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11051:26:3"
            },
            "returnParameters": {
              "id": 2738,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11085:0:3"
            },
            "scope": 4398,
            "src": "11032:173:3",
            "stateMutability": "nonpayable",
            "superFunction": 6104,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2780,
              "nodeType": "Block",
              "src": "11398:147:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2765,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2395,
                      "src": "11404:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2766,
                      "name": "_startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2758,
                      "src": "11416:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11404:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2768,
                  "nodeType": "ExpressionStatement",
                  "src": "11404:22:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2769,
                      "name": "lockupGranularity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2397,
                      "src": "11432:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2770,
                      "name": "_lockupGranularity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2760,
                      "src": "11452:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11432:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2772,
                  "nodeType": "ExpressionStatement",
                  "src": "11432:38:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2774,
                        "name": "_startDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2758,
                        "src": "11497:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2775,
                        "name": "_lockupGranularity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2760,
                        "src": "11509:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2776,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "11529:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2777,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11529:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 2773,
                      "name": "ConfigWhitelist",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2289,
                      "src": "11481:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,uint256,address)"
                      }
                    },
                    "id": 2778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11481:59:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2779,
                  "nodeType": "EmitStatement",
                  "src": "11476:64:3"
                }
              ]
            },
            "documentation": "@notice Called by the owner to update the startDate or lockupGranularity.",
            "id": 2781,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2763,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2762,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "11384:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "11384:11:3"
              }
            ],
            "name": "configWhitelist",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2758,
                  "name": "_startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 2781,
                  "src": "11325:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2757,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11325:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2760,
                  "name": "_lockupGranularity",
                  "nodeType": "VariableDeclaration",
                  "scope": 2781,
                  "src": "11342:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2759,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11342:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11324:42:3"
            },
            "returnParameters": {
              "id": 2764,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11398:0:3"
            },
            "scope": 4398,
            "src": "11300:245:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2855,
              "nodeType": "Block",
              "src": "12165:547:3",
              "statements": [
                {
                  "assignments": [
                    2796
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2796,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 2855,
                      "src": "12171:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2795,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12171:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2799,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2797,
                      "name": "_fromJurisdictionIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2784,
                      "src": "12184:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 2798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "12184:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12171:40:3"
                },
                {
                  "body": {
                    "id": 2853,
                    "nodeType": "Block",
                    "src": "12250:458:3",
                    "statements": [
                      {
                        "assignments": [
                          2811
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2811,
                            "name": "fromJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2853,
                            "src": "12258:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2810,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12258:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2815,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2812,
                            "name": "_fromJurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2784,
                            "src": "12284:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2814,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2813,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2801,
                            "src": "12305:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12284:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12258:49:3"
                      },
                      {
                        "assignments": [
                          2817
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2817,
                            "name": "toJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2853,
                            "src": "12315:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2816,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12315:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2821,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2818,
                            "name": "_toJurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2787,
                            "src": "12339:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2820,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2819,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2801,
                            "src": "12358:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12339:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12315:45:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2823,
                                  "name": "fromJurisdictionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2811,
                                  "src": "12385:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2824,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12406:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12385:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2826,
                                  "name": "toJurisdictionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2817,
                                  "src": "12411:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12430:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12411:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "12385:46:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4a5552495344494354494f4e5f4944",
                              "id": 2830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12441:25:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              },
                              "value": "INVALID_JURISDICTION_ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              }
                            ],
                            "id": 2822,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "12368:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12368:106:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2832,
                        "nodeType": "ExpressionStatement",
                        "src": "12368:106:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2833,
                                "name": "jurisdictionFlows",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2403,
                                "src": "12482:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 2836,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2834,
                                "name": "fromJurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2811,
                                "src": "12500:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12482:37:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 2837,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2835,
                              "name": "toJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2817,
                              "src": "12520:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12482:55:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2838,
                              "name": "_lockupLengths",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2790,
                              "src": "12540:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 2840,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2839,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2801,
                              "src": "12555:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12540:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12482:75:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2842,
                        "nodeType": "ExpressionStatement",
                        "src": "12482:75:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2844,
                              "name": "fromJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2811,
                              "src": "12602:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2845,
                              "name": "toJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2817,
                              "src": "12630:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2846,
                                "name": "_lockupLengths",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2790,
                                "src": "12656:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 2848,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2847,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2801,
                                "src": "12671:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12656:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2849,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "12683:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12683:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2843,
                            "name": "UpdateJurisdictionFlow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2299,
                            "src": "12570:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256,address)"
                            }
                          },
                          "id": 2851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12570:131:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2852,
                        "nodeType": "EmitStatement",
                        "src": "12565:136:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2804,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2801,
                      "src": "12234:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2805,
                      "name": "count",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2796,
                      "src": "12238:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12234:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2854,
                  "initializationExpression": {
                    "assignments": [
                      2801
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2801,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2854,
                        "src": "12222:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2800,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12222:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2803,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12231:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12222:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "12245:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2807,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2801,
                        "src": "12245:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2809,
                    "nodeType": "ExpressionStatement",
                    "src": "12245:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "12217:491:3"
                }
              ]
            },
            "documentation": "@notice Called by the owner to define or update jurisdiction flows.\n@param _lockupLengths defines transfer restrictions where:\n- 0 is not supported (the default)\n- 1 is supported with no token lockup required\n- >1 is supported and this value defines the lockup length in seconds.\n@dev note that this can be called with a partial list, only including entries\nto be added or which have changed.",
            "id": 2856,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2793,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2792,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "12153:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12153:11:3"
              }
            ],
            "name": "updateJurisdictionFlows",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2784,
                  "name": "_fromJurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2856,
                  "src": "12027:36:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2782,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12027:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2783,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12027:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2787,
                  "name": "_toJurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2856,
                  "src": "12069:34:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2785,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12069:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2786,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12069:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2790,
                  "name": "_lockupLengths",
                  "nodeType": "VariableDeclaration",
                  "scope": 2856,
                  "src": "12109:30:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2788,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12109:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2789,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12109:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12021:122:3"
            },
            "returnParameters": {
              "id": 2794,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12165:0:3"
            },
            "scope": 4398,
            "src": "11989:723:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2951,
              "nodeType": "Block",
              "src": "12985:692:3",
              "statements": [
                {
                  "assignments": [
                    2868
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2868,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 2951,
                      "src": "12991:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2867,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12991:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2871,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2869,
                      "name": "_traders",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2859,
                      "src": "13005:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 2870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "13005:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12991:29:3"
                },
                {
                  "body": {
                    "id": 2949,
                    "nodeType": "Block",
                    "src": "13060:613:3",
                    "statements": [
                      {
                        "assignments": [
                          2883
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2883,
                            "name": "trader",
                            "nodeType": "VariableDeclaration",
                            "scope": 2949,
                            "src": "13068:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2882,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13068:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2887,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2884,
                            "name": "_traders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2859,
                            "src": "13085:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2886,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2885,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "13094:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13085:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13068:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2889,
                                  "name": "authorizedWalletToUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2407,
                                  "src": "13121:24:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 2891,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2890,
                                  "name": "trader",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2883,
                                  "src": "13146:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13121:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13165:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 2892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13157:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13157:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "13121:46:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "555345525f57414c4c45545f414c52454144595f4144444544",
                              "id": 2896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13177:27:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_62b1bd42f2861d6eae0ebf52f376598c50948c16b784d845246d974a34b1286d",
                                "typeString": "literal_string \"USER_WALLET_ALREADY_ADDED\""
                              },
                              "value": "USER_WALLET_ALREADY_ADDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_62b1bd42f2861d6eae0ebf52f376598c50948c16b784d845246d974a34b1286d",
                                "typeString": "literal_string \"USER_WALLET_ALREADY_ADDED\""
                              }
                            ],
                            "id": 2888,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "13104:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13104:108:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2898,
                        "nodeType": "ExpressionStatement",
                        "src": "13104:108:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2900,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "13237:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 2902,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2901,
                                    "name": "trader",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2883,
                                    "src": "13249:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13237:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2904,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13268:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13260:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13260:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "13237:33:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2907,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "13282:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 2909,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2908,
                                    "name": "trader",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2883,
                                    "src": "13294:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13282:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2910,
                                  "name": "trader",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2883,
                                  "src": "13305:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "13282:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13237:74:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "415454454d50545f544f5f4144445f50524556494f55535f57414c4c45545f41535f4e45575f55534552",
                              "id": 2913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13321:44:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4ac2fdedebf10bda5aba1bec8bf4645765b92552e4505ca674be7edac7c05163",
                                "typeString": "literal_string \"ATTEMPT_TO_ADD_PREVIOUS_WALLET_AS_NEW_USER\""
                              },
                              "value": "ATTEMPT_TO_ADD_PREVIOUS_WALLET_AS_NEW_USER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4ac2fdedebf10bda5aba1bec8bf4645765b92552e4505ca674be7edac7c05163",
                                "typeString": "literal_string \"ATTEMPT_TO_ADD_PREVIOUS_WALLET_AS_NEW_USER\""
                              }
                            ],
                            "id": 2899,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "13220:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13220:153:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2915,
                        "nodeType": "ExpressionStatement",
                        "src": "13220:153:3"
                      },
                      {
                        "assignments": [
                          2917
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2917,
                            "name": "jurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 2949,
                            "src": "13381:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2916,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "13381:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2921,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2918,
                            "name": "_jurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2862,
                            "src": "13403:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2920,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2919,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2873,
                            "src": "13420:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13403:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13381:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2923,
                                "name": "jurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2917,
                                "src": "13438:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13456:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13438:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4a5552495344494354494f4e5f4944",
                              "id": 2926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13459:25:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              },
                              "value": "INVALID_JURISDICTION_ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              }
                            ],
                            "id": 2922,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "13430:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13430:55:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2928,
                        "nodeType": "ExpressionStatement",
                        "src": "13430:55:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2929,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "13494:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 2931,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2930,
                              "name": "trader",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2883,
                              "src": "13519:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "13494:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2932,
                            "name": "trader",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2883,
                            "src": "13529:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "13494:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2934,
                        "nodeType": "ExpressionStatement",
                        "src": "13494:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2935,
                                "name": "authorizedUserIdInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2420,
                                "src": "13543:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                  "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                }
                              },
                              "id": 2937,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2936,
                                "name": "trader",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2883,
                                "src": "13564:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13543:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                "typeString": "struct Whitelist.UserInfo storage ref"
                              }
                            },
                            "id": 2938,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "jurisdictionId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2409,
                            "src": "13543:43:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2939,
                            "name": "jurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2917,
                            "src": "13589:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13543:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2941,
                        "nodeType": "ExpressionStatement",
                        "src": "13543:60:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2943,
                              "name": "trader",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2883,
                              "src": "13631:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2944,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2917,
                              "src": "13639:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2945,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "13655:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13655:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2942,
                            "name": "ApproveNewUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2307,
                            "src": "13616:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,address)"
                            }
                          },
                          "id": 2947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13616:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2948,
                        "nodeType": "EmitStatement",
                        "src": "13611:55:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2876,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2873,
                      "src": "13043:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2877,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2868,
                      "src": "13047:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13043:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2950,
                  "initializationExpression": {
                    "assignments": [
                      2873
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2873,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2950,
                        "src": "13031:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2872,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13031:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2875,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13040:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13031:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13055:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2879,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2873,
                        "src": "13055:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2881,
                    "nodeType": "ExpressionStatement",
                    "src": "13055:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "13026:647:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to add new traders.\n@dev The trader will be assigned a userId equal to their wallet address.",
            "id": 2952,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2865,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2864,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "12970:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12970:14:3"
              }
            ],
            "name": "approveNewUsers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2859,
                  "name": "_traders",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "12891:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2857,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "12891:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2858,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12891:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2862,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "12924:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2860,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12924:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2861,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12924:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12885:75:3"
            },
            "returnParameters": {
              "id": 2866,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12985:0:3"
            },
            "scope": 4398,
            "src": "12861:816:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3043,
              "nodeType": "Block",
              "src": "13890:655:3",
              "statements": [
                {
                  "assignments": [
                    2964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2964,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3043,
                      "src": "13896:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2963,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13896:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2967,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2965,
                      "name": "_userIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2955,
                      "src": "13910:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 2966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "13910:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13896:29:3"
                },
                {
                  "body": {
                    "id": 3041,
                    "nodeType": "Block",
                    "src": "13965:576:3",
                    "statements": [
                      {
                        "assignments": [
                          2979
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2979,
                            "name": "userId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3041,
                            "src": "13973:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2978,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13973:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2983,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2980,
                            "name": "_userIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2955,
                            "src": "13990:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2982,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2981,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2969,
                            "src": "13999:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13990:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13973:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2985,
                                    "name": "authorizedUserIdInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2420,
                                    "src": "14026:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                      "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                    }
                                  },
                                  "id": 2987,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2986,
                                    "name": "userId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2979,
                                    "src": "14047:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14026:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                    "typeString": "struct Whitelist.UserInfo storage ref"
                                  }
                                },
                                "id": 2988,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "jurisdictionId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2409,
                                "src": "14026:43:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14073:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "14026:48:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "555345525f49445f554e4b4e4f574e",
                              "id": 2991,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14084:17:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              },
                              "value": "USER_ID_UNKNOWN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              }
                            ],
                            "id": 2984,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14009:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14009:100:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2993,
                        "nodeType": "ExpressionStatement",
                        "src": "14009:100:3"
                      },
                      {
                        "assignments": [
                          2995
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2995,
                            "name": "newWallet",
                            "nodeType": "VariableDeclaration",
                            "scope": 3041,
                            "src": "14117:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2994,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14117:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2999,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2996,
                            "name": "_newWallets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2958,
                            "src": "14137:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 2998,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2997,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2969,
                            "src": "14149:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14137:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14117:34:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3001,
                                  "name": "authorizedWalletToUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2407,
                                  "src": "14176:24:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 3003,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3002,
                                  "name": "newWallet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2995,
                                  "src": "14201:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14176:35:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3005,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14223:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14215:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14215:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14176:49:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57414c4c45545f414c52454144595f4144444544",
                              "id": 3008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14235:22:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_921684a96fcafd87841288bd090084b0e2e445efac7de72622e6086238b0f9ba",
                                "typeString": "literal_string \"WALLET_ALREADY_ADDED\""
                              },
                              "value": "WALLET_ALREADY_ADDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_921684a96fcafd87841288bd090084b0e2e445efac7de72622e6086238b0f9ba",
                                "typeString": "literal_string \"WALLET_ALREADY_ADDED\""
                              }
                            ],
                            "id": 3000,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14159:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14159:106:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3010,
                        "nodeType": "ExpressionStatement",
                        "src": "14159:106:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3012,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "14290:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 3014,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3013,
                                    "name": "newWallet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2995,
                                    "src": "14302:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14290:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3016,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14324:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14316:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 3017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14316:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "14290:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3019,
                                    "name": "revokedFrom",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2463,
                                    "src": "14338:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 3021,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3020,
                                    "name": "newWallet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2995,
                                    "src": "14350:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14338:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3022,
                                  "name": "userId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2979,
                                  "src": "14364:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "14338:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "14290:80:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "415454454d50545f544f5f45584348414e47455f57414c4c4554",
                              "id": 3025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14380:28:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fb0072beb425993245464a2b790ff11edef3ed2e5a9cca62ede35c8dcdd92bc0",
                                "typeString": "literal_string \"ATTEMPT_TO_EXCHANGE_WALLET\""
                              },
                              "value": "ATTEMPT_TO_EXCHANGE_WALLET"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fb0072beb425993245464a2b790ff11edef3ed2e5a9cca62ede35c8dcdd92bc0",
                                "typeString": "literal_string \"ATTEMPT_TO_EXCHANGE_WALLET\""
                              }
                            ],
                            "id": 3011,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14273:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14273:143:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3027,
                        "nodeType": "ExpressionStatement",
                        "src": "14273:143:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3028,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "14425:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3030,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3029,
                              "name": "newWallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2995,
                              "src": "14450:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14425:35:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3031,
                            "name": "userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2979,
                            "src": "14463:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14425:44:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3033,
                        "nodeType": "ExpressionStatement",
                        "src": "14425:44:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3035,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2979,
                              "src": "14504:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3036,
                              "name": "newWallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2995,
                              "src": "14512:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3037,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "14523:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14523:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3034,
                            "name": "AddApprovedUserWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2315,
                            "src": "14482:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 3039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14482:52:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3040,
                        "nodeType": "EmitStatement",
                        "src": "14477:57:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2972,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2969,
                      "src": "13948:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2973,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2964,
                      "src": "13952:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13948:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3042,
                  "initializationExpression": {
                    "assignments": [
                      2969
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2969,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3042,
                        "src": "13936:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2968,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13936:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2971,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2970,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13945:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13936:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2976,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13960:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2975,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2969,
                        "src": "13960:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2977,
                    "nodeType": "ExpressionStatement",
                    "src": "13960:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "13931:610:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to add wallets to known userIds.",
            "id": 3044,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2961,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2960,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "13875:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13875:14:3"
              }
            ],
            "name": "addApprovedUserWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2955,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3044,
                  "src": "13798:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2953,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13798:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2954,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13798:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2958,
                  "name": "_newWallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3044,
                  "src": "13831:30:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2956,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13831:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2957,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13831:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13792:73:3"
            },
            "returnParameters": {
              "id": 2962,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13890:0:3"
            },
            "scope": 4398,
            "src": "13761:784:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3117,
              "nodeType": "Block",
              "src": "14820:564:3",
              "statements": [
                {
                  "assignments": [
                    3053
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3053,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3117,
                      "src": "14826:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3052,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14826:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3056,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3054,
                      "name": "_wallets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3047,
                      "src": "14840:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 3055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "14840:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14826:29:3"
                },
                {
                  "body": {
                    "id": 3115,
                    "nodeType": "Block",
                    "src": "14895:485:3",
                    "statements": [
                      {
                        "assignments": [
                          3068
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3068,
                            "name": "wallet",
                            "nodeType": "VariableDeclaration",
                            "scope": 3115,
                            "src": "14903:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3067,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14903:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3072,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3069,
                            "name": "_wallets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3047,
                            "src": "14920:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3071,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3070,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3058,
                            "src": "14929:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14920:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14903:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3074,
                                  "name": "authorizedWalletToUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2407,
                                  "src": "14956:24:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 3076,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3075,
                                  "name": "wallet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3068,
                                  "src": "14981:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14956:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3078,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15000:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3077,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14992:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 3079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14992:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "14956:46:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "57414c4c45545f4e4f545f464f554e44",
                              "id": 3081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15012:18:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad8c83175d00e23e7f83f43ca03fd52d8f5eb109ca626ccdd837b3c53c970674",
                                "typeString": "literal_string \"WALLET_NOT_FOUND\""
                              },
                              "value": "WALLET_NOT_FOUND"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ad8c83175d00e23e7f83f43ca03fd52d8f5eb109ca626ccdd837b3c53c970674",
                                "typeString": "literal_string \"WALLET_NOT_FOUND\""
                              }
                            ],
                            "id": 3073,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "14939:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14939:99:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3083,
                        "nodeType": "ExpressionStatement",
                        "src": "14939:99:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3084,
                            "name": "walletActivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2459,
                            "src": "15077:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3086,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3085,
                            "name": "wallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3068,
                            "src": "15093:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15077:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3092,
                        "nodeType": "IfStatement",
                        "src": "15074:71:3",
                        "trueBody": {
                          "id": 3091,
                          "nodeType": "Block",
                          "src": "15101:44:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3088,
                                    "name": "wallet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3068,
                                    "src": "15129:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3087,
                                  "name": "_deactivateWallet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3952,
                                  "src": "15111:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 3089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15111:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3090,
                              "nodeType": "ExpressionStatement",
                              "src": "15111:25:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3093,
                              "name": "revokedFrom",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2463,
                              "src": "15216:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3095,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3094,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15228:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15216:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3096,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "15238:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3098,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3097,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15263:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15238:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "15216:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3100,
                        "nodeType": "ExpressionStatement",
                        "src": "15216:54:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3101,
                              "name": "authorizedWalletToUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "15279:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 3103,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3102,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15304:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "15279:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15322:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 3104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15314:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 3106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15314:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "15279:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3108,
                        "nodeType": "ExpressionStatement",
                        "src": "15279:45:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3110,
                              "name": "wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3068,
                              "src": "15354:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3111,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "15362:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15362:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3109,
                            "name": "RevokeUserWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2321,
                            "src": "15337:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 3113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15337:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3114,
                        "nodeType": "EmitStatement",
                        "src": "15332:41:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3061,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3058,
                      "src": "14878:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3062,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3053,
                      "src": "14882:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14878:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3116,
                  "initializationExpression": {
                    "assignments": [
                      3058
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3058,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3116,
                        "src": "14866:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3057,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14866:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3060,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14875:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "14866:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3065,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "14890:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3064,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3058,
                        "src": "14890:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3066,
                    "nodeType": "ExpressionStatement",
                    "src": "14890:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "14861:519:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to revoke approval for the given wallets.\n@dev If this is called in error, you can restore access with `addApprovedUserWallets`.",
            "id": 3118,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3050,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3049,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "14803:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14803:14:3"
              }
            ],
            "name": "revokeUserWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3048,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3047,
                  "name": "_wallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3118,
                  "src": "14757:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3045,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "14757:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3046,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14757:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14756:29:3"
            },
            "returnParameters": {
              "id": 3051,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14820:0:3"
            },
            "scope": 4398,
            "src": "14730:654:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3207,
              "nodeType": "Block",
              "src": "15628:794:3",
              "statements": [
                {
                  "assignments": [
                    3130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3130,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3207,
                      "src": "15634:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3129,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15634:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3133,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3131,
                      "name": "_userIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3121,
                      "src": "15648:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 3132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "15648:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15634:29:3"
                },
                {
                  "body": {
                    "id": 3205,
                    "nodeType": "Block",
                    "src": "15703:715:3",
                    "statements": [
                      {
                        "assignments": [
                          3145
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3145,
                            "name": "userId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3205,
                            "src": "15711:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3144,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15711:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3149,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3146,
                            "name": "_userIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3121,
                            "src": "15728:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3148,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3147,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3135,
                            "src": "15737:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15728:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15711:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3151,
                                    "name": "authorizedUserIdInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2420,
                                    "src": "15764:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                      "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                    }
                                  },
                                  "id": 3153,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3152,
                                    "name": "userId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3145,
                                    "src": "15785:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15764:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                    "typeString": "struct Whitelist.UserInfo storage ref"
                                  }
                                },
                                "id": 3154,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "jurisdictionId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2409,
                                "src": "15764:43:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15811:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "15764:48:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "555345525f49445f554e4b4e4f574e",
                              "id": 3157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15822:17:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              },
                              "value": "USER_ID_UNKNOWN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                                "typeString": "literal_string \"USER_ID_UNKNOWN\""
                              }
                            ],
                            "id": 3150,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "15747:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15747:100:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3159,
                        "nodeType": "ExpressionStatement",
                        "src": "15747:100:3"
                      },
                      {
                        "assignments": [
                          3161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3161,
                            "name": "jurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3205,
                            "src": "15855:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3160,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "15855:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3165,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3162,
                            "name": "_jurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3124,
                            "src": "15877:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3164,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3163,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3135,
                            "src": "15894:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15877:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15855:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3167,
                                "name": "jurisdictionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3161,
                                "src": "15912:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15930:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "15912:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f4a5552495344494354494f4e5f4944",
                              "id": 3170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15933:25:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              },
                              "value": "INVALID_JURISDICTION_ID"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_40077c3fe37f3a0adcb917955fe58e36dd4f4c5417ecf2a8f3ff01923cb72c4b",
                                "typeString": "literal_string \"INVALID_JURISDICTION_ID\""
                              }
                            ],
                            "id": 3166,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "15904:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15904:55:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3172,
                        "nodeType": "ExpressionStatement",
                        "src": "15904:55:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3173,
                            "name": "investorEnlisted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2451,
                            "src": "15970:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3175,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3174,
                            "name": "userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3145,
                            "src": "15987:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15970:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3190,
                        "nodeType": "IfStatement",
                        "src": "15967:301:3",
                        "trueBody": {
                          "id": 3189,
                          "nodeType": "Block",
                          "src": "15995:273:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "16065:77:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3176,
                                    "name": "currentInvestorsByJurisdiction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2447,
                                    "src": "16065:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3181,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3177,
                                        "name": "authorizedUserIdInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2420,
                                        "src": "16096:20:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                          "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                        }
                                      },
                                      "id": 3179,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3178,
                                        "name": "userId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3145,
                                        "src": "16117:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "16096:28:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                        "typeString": "struct Whitelist.UserInfo storage ref"
                                      }
                                    },
                                    "id": 3180,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "jurisdictionId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2409,
                                    "src": "16096:43:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16065:75:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3183,
                              "nodeType": "ExpressionStatement",
                              "src": "16065:77:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "16211:48:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3184,
                                    "name": "currentInvestorsByJurisdiction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2447,
                                    "src": "16211:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 3186,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3185,
                                    "name": "jurisdictionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3161,
                                    "src": "16242:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16211:46:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3188,
                              "nodeType": "ExpressionStatement",
                              "src": "16211:48:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3191,
                                "name": "authorizedUserIdInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2420,
                                "src": "16275:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                  "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                }
                              },
                              "id": 3193,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3192,
                                "name": "userId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3145,
                                "src": "16296:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16275:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                "typeString": "struct Whitelist.UserInfo storage ref"
                              }
                            },
                            "id": 3194,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "jurisdictionId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2409,
                            "src": "16275:43:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3195,
                            "name": "jurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3161,
                            "src": "16321:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16275:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3197,
                        "nodeType": "ExpressionStatement",
                        "src": "16275:60:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3199,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3145,
                              "src": "16376:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3200,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3161,
                              "src": "16384:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3201,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8534,
                                "src": "16400:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16400:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 3198,
                            "name": "UpdateJurisdictionForUserId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2329,
                            "src": "16348:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,address)"
                            }
                          },
                          "id": 3203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16348:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3204,
                        "nodeType": "EmitStatement",
                        "src": "16343:68:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3138,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "15686:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3139,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3130,
                      "src": "15690:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15686:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3206,
                  "initializationExpression": {
                    "assignments": [
                      3135
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3135,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3206,
                        "src": "15674:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3134,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15674:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3137,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15683:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15674:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "15698:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3141,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3135,
                        "src": "15698:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3143,
                    "nodeType": "ExpressionStatement",
                    "src": "15698:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "15669:749:3"
                }
              ]
            },
            "documentation": "@notice Called by an operator to change the jurisdiction\nfor the given userIds.",
            "id": 3208,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3127,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3126,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "15613:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "15613:14:3"
              }
            ],
            "name": "updateJurisdictionsForUserIds",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3125,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3121,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3208,
                  "src": "15534:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3119,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "15534:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3120,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15534:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3124,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3208,
                  "src": "15567:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3122,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "15567:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3123,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15567:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15528:75:3"
            },
            "returnParameters": {
              "id": 3128,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15628:0:3"
            },
            "scope": 4398,
            "src": "15490:932:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3309,
              "nodeType": "Block",
              "src": "16820:1041:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3219,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3217,
                        "name": "_numberOfTokensLocked",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3214,
                        "src": "16837:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16862:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "16837:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3220,
                        "name": "_lockupExpirationDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3212,
                        "src": "16867:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3221,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8524,
                          "src": "16892:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 3222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "16892:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16867:40:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16837:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3227,
                  "nodeType": "IfStatement",
                  "src": "16826:134:3",
                  "trueBody": {
                    "id": 3226,
                    "nodeType": "Block",
                    "src": "16914:46:3",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 3216,
                        "id": 3225,
                        "nodeType": "Return",
                        "src": "16947:7:3"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3229,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3210,
                        "src": "16987:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3230,
                        "name": "_lockupExpirationDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3212,
                        "src": "17002:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3231,
                        "name": "_numberOfTokensLocked",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3214,
                        "src": "17031:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3232,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "17060:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "17060:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 3228,
                      "name": "AddLockup",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2339,
                      "src": "16970:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,uint256,uint256,address)"
                      }
                    },
                    "id": 3234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16970:106:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3235,
                  "nodeType": "EmitStatement",
                  "src": "16965:111:3"
                },
                {
                  "assignments": [
                    3237
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3237,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 3309,
                      "src": "17082:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3236,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "17082:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3241,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3238,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "17106:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 3240,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3239,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3210,
                      "src": "17127:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17106:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17082:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3243,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3237,
                            "src": "17149:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3244,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "17149:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17172:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "17149:24:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17175:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3242,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "17141:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17141:52:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3249,
                  "nodeType": "ExpressionStatement",
                  "src": "17141:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3250,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3237,
                        "src": "17199:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3252,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2411,
                      "src": "17199:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3256,
                          "name": "_numberOfTokensLocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3214,
                          "src": "17251:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3253,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3237,
                            "src": "17224:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3254,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalTokensLocked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2411,
                          "src": "17224:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5909,
                        "src": "17224:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17224:49:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17199:74:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3259,
                  "nodeType": "ExpressionStatement",
                  "src": "17199:74:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3260,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3237,
                        "src": "17283:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3261,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "endIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2415,
                      "src": "17283:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3262,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17299:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17283:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3291,
                  "nodeType": "IfStatement",
                  "src": "17279:411:3",
                  "trueBody": {
                    "id": 3290,
                    "nodeType": "Block",
                    "src": "17302:388:3",
                    "statements": [
                      {
                        "assignments": [
                          3265
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3265,
                            "name": "lockup",
                            "nodeType": "VariableDeclaration",
                            "scope": 3290,
                            "src": "17310:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                              "typeString": "struct Whitelist.Lockup"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 3264,
                              "name": "Lockup",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2425,
                              "src": "17310:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                "typeString": "struct Whitelist.Lockup"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3274,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3266,
                              "name": "userIdLockups",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2431,
                              "src": "17334:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                              }
                            },
                            "id": 3268,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3267,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3210,
                              "src": "17348:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17334:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                              "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                            }
                          },
                          "id": 3273,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3269,
                                "name": "info",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3237,
                                "src": "17357:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                  "typeString": "struct Whitelist.UserInfo storage pointer"
                                }
                              },
                              "id": 3270,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endIndex",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2415,
                              "src": "17357:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17373:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "17357:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17334:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                            "typeString": "struct Whitelist.Lockup storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17310:65:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3275,
                                "name": "lockup",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3265,
                                "src": "17396:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                  "typeString": "struct Whitelist.Lockup storage pointer"
                                }
                              },
                              "id": 3276,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lockupExpirationDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2422,
                              "src": "17396:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3277,
                              "name": "lockupGranularity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2397,
                              "src": "17426:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17396:47:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3279,
                            "name": "_lockupExpirationDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3212,
                            "src": "17447:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17396:72:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3289,
                        "nodeType": "IfStatement",
                        "src": "17383:301:3",
                        "trueBody": {
                          "id": 3288,
                          "nodeType": "Block",
                          "src": "17477:207:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3281,
                                    "name": "lockup",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3265,
                                    "src": "17607:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                                      "typeString": "struct Whitelist.Lockup storage pointer"
                                    }
                                  },
                                  "id": 3283,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "numberOfTokensLocked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2424,
                                  "src": "17607:27:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3284,
                                  "name": "_numberOfTokensLocked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3214,
                                  "src": "17638:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17607:52:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3286,
                              "nodeType": "ExpressionStatement",
                              "src": "17607:52:3"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 3216,
                              "id": 3287,
                              "nodeType": "Return",
                              "src": "17669:7:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3292,
                          "name": "userIdLockups",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2431,
                          "src": "17725:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                            "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                          }
                        },
                        "id": 3296,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3293,
                          "name": "_userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3210,
                          "src": "17739:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "17725:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                          "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                        }
                      },
                      "id": 3297,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3294,
                          "name": "info",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3237,
                          "src": "17748:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                            "typeString": "struct Whitelist.UserInfo storage pointer"
                          }
                        },
                        "id": 3295,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "endIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2415,
                        "src": "17748:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "17725:37:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                        "typeString": "struct Whitelist.Lockup storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3299,
                          "name": "_lockupExpirationDate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3212,
                          "src": "17779:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3300,
                          "name": "_numberOfTokensLocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3214,
                          "src": "17808:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 3298,
                        "name": "Lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2425,
                        "src": "17765:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Lockup_$2425_storage_ptr_$",
                          "typeString": "type(struct Whitelist.Lockup storage pointer)"
                        }
                      },
                      "id": 3301,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17765:70:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_memory",
                        "typeString": "struct Whitelist.Lockup memory"
                      }
                    },
                    "src": "17725:110:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                      "typeString": "struct Whitelist.Lockup storage ref"
                    }
                  },
                  "id": 3303,
                  "nodeType": "ExpressionStatement",
                  "src": "17725:110:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "17841:15:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3304,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3237,
                        "src": "17841:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "endIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2415,
                      "src": "17841:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3308,
                  "nodeType": "ExpressionStatement",
                  "src": "17841:15:3"
                }
              ]
            },
            "documentation": "@notice Adds a tokenLockup for the userId.\n@dev A no-op if lockup is not required for this transfer.\nThe lockup entry is merged with the most recent lockup for that user\nif the expiration date is <= `lockupGranularity` from the previous entry.",
            "id": 3310,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addLockup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3210,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3310,
                  "src": "16727:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16727:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3212,
                  "name": "_lockupExpirationDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3310,
                  "src": "16748:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3211,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16748:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3214,
                  "name": "_numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 3310,
                  "src": "16780:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3213,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16780:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16721:89:3"
            },
            "returnParameters": {
              "id": 3216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16820:0:3"
            },
            "scope": 4398,
            "src": "16702:1159:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3353,
              "nodeType": "Block",
              "src": "18204:202:3",
              "statements": [
                {
                  "assignments": [
                    3325
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3325,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3353,
                      "src": "18210:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3324,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18210:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3328,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3326,
                      "name": "_userIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3313,
                      "src": "18224:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "id": 3327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "18224:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18210:29:3"
                },
                {
                  "body": {
                    "id": 3351,
                    "nodeType": "Block",
                    "src": "18279:123:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3340,
                                "name": "_userIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3313,
                                "src": "18307:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3342,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3341,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3330,
                                "src": "18316:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18307:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3343,
                                "name": "_lockupExpirationDates",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3316,
                                "src": "18328:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3345,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3344,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3330,
                                "src": "18351:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18328:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3346,
                                "name": "_numberOfTokensLocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3319,
                                "src": "18363:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3348,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3347,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3330,
                                "src": "18385:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18363:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3339,
                            "name": "_addLockup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3310,
                            "src": "18287:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18287:108:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3350,
                        "nodeType": "ExpressionStatement",
                        "src": "18287:108:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3333,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3330,
                      "src": "18262:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3334,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3325,
                      "src": "18266:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18262:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3352,
                  "initializationExpression": {
                    "assignments": [
                      3330
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3330,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3352,
                        "src": "18250:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3329,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18250:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3332,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18259:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "18250:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "18274:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3336,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3330,
                        "src": "18274:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3338,
                    "nodeType": "ExpressionStatement",
                    "src": "18274:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "18245:157:3"
                }
              ]
            },
            "documentation": "@notice Operators can manually add lockups for userIds.\nThis may be used by the organization before transfering tokens\nfrom the initial supply.",
            "id": 3354,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3322,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3321,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "18189:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "18189:14:3"
              }
            ],
            "name": "addLockups",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3313,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3354,
                  "src": "18061:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3311,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "18061:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3312,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "18061:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3316,
                  "name": "_lockupExpirationDates",
                  "nodeType": "VariableDeclaration",
                  "scope": 3354,
                  "src": "18094:38:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3314,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "18094:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3315,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "18094:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3319,
                  "name": "_numberOfTokensLocked",
                  "nodeType": "VariableDeclaration",
                  "scope": 3354,
                  "src": "18138:37:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3317,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "18138:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3318,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "18138:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18055:124:3"
            },
            "returnParameters": {
              "id": 3323,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18204:0:3"
            },
            "scope": 4398,
            "src": "18036:370:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3429,
              "nodeType": "Block",
              "src": "18805:639:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3365,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "18815:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3366,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "18815:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3367,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "18834:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3368,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "endIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2415,
                      "src": "18834:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18815:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3373,
                  "nodeType": "IfStatement",
                  "src": "18811:98:3",
                  "trueBody": {
                    "id": 3372,
                    "nodeType": "Block",
                    "src": "18849:60:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18898:4:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3364,
                        "id": 3371,
                        "nodeType": "Return",
                        "src": "18891:11:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    3375
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3375,
                      "name": "lockup",
                      "nodeType": "VariableDeclaration",
                      "scope": 3429,
                      "src": "18914:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                        "typeString": "struct Whitelist.Lockup"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3374,
                        "name": "Lockup",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2425,
                        "src": "18914:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3382,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3376,
                        "name": "userIdLockups",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2431,
                        "src": "18938:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct Whitelist.Lockup storage ref))"
                        }
                      },
                      "id": 3378,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3377,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3358,
                        "src": "18952:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "18938:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Lockup_$2425_storage_$",
                        "typeString": "mapping(uint256 => struct Whitelist.Lockup storage ref)"
                      }
                    },
                    "id": 3381,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3379,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "18961:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3380,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "18961:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18938:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Lockup_$2425_storage",
                      "typeString": "struct Whitelist.Lockup storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18914:63:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3383,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3375,
                          "src": "18987:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                            "typeString": "struct Whitelist.Lockup storage pointer"
                          }
                        },
                        "id": 3384,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lockupExpirationDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2422,
                        "src": "18987:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3385,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8524,
                          "src": "19017:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 3386,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "19017:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "18987:45:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "19036:18:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3388,
                        "name": "_ignoreExpiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3360,
                        "src": "19037:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18987:67:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3394,
                  "nodeType": "IfStatement",
                  "src": "18983:133:3",
                  "trueBody": {
                    "id": 3393,
                    "nodeType": "Block",
                    "src": "19056:60:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19105:4:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3364,
                        "id": 3392,
                        "nodeType": "Return",
                        "src": "19098:11:3"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3396,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3358,
                        "src": "19139:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3397,
                          "name": "lockup",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3375,
                          "src": "19148:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                            "typeString": "struct Whitelist.Lockup storage pointer"
                          }
                        },
                        "id": 3398,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numberOfTokensLocked",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2424,
                        "src": "19148:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 3399,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8534,
                          "src": "19177:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "19177:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 3395,
                      "name": "UnlockTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2347,
                      "src": "19126:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (address,uint256,address)"
                      }
                    },
                    "id": 3401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19126:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3402,
                  "nodeType": "EmitStatement",
                  "src": "19121:67:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3403,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "19194:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3405,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2411,
                      "src": "19194:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3406,
                        "name": "lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "19220:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup storage pointer"
                        }
                      },
                      "id": 3407,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numberOfTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "19220:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19194:53:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3409,
                  "nodeType": "ExpressionStatement",
                  "src": "19194:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "19253:17:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3410,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "19253:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3412,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "19253:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3414,
                  "nodeType": "ExpressionStatement",
                  "src": "19253:17:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3415,
                        "name": "lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "19319:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup storage pointer"
                        }
                      },
                      "id": 3417,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numberOfTokensLocked",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2424,
                      "src": "19319:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19349:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "19319:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3420,
                  "nodeType": "ExpressionStatement",
                  "src": "19319:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3421,
                        "name": "lockup",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3375,
                        "src": "19356:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Lockup_$2425_storage_ptr",
                          "typeString": "struct Whitelist.Lockup storage pointer"
                        }
                      },
                      "id": 3423,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "lockupExpirationDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2422,
                      "src": "19356:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3424,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19386:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "19356:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3426,
                  "nodeType": "ExpressionStatement",
                  "src": "19356:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 3427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "19434:5:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 3364,
                  "id": 3428,
                  "nodeType": "Return",
                  "src": "19427:12:3"
                }
              ]
            },
            "documentation": "@notice Checks the next lockup entry for a given user and unlocks\nthose tokens if applicable.\n@param _ignoreExpiration bypasses the recorded expiration date and\nremoves the lockup entry if there are any remaining for this user.",
            "id": 3430,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_processLockup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3356,
                  "name": "info",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18699:21:3",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                    "typeString": "struct Whitelist.UserInfo"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3355,
                    "name": "UserInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2416,
                    "src": "18699:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                      "typeString": "struct Whitelist.UserInfo"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3358,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18726:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3357,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18726:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3360,
                  "name": "_ignoreExpiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18747:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3359,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18747:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18693:80:3"
            },
            "returnParameters": {
              "id": 3364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3363,
                  "name": "isDone",
                  "nodeType": "VariableDeclaration",
                  "scope": 3430,
                  "src": "18792:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3362,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18792:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18791:13:3"
            },
            "scope": 4398,
            "src": "18670:774:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3471,
              "nodeType": "Block",
              "src": "19711:243:3",
              "statements": [
                {
                  "assignments": [
                    3438
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3438,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 3471,
                      "src": "19717:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3437,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "19717:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3442,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3439,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "19741:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 3441,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3440,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3432,
                      "src": "19762:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19741:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19717:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3444,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3438,
                            "src": "19784:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3445,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "19784:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19806:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "19784:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19809:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3443,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "19776:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19776:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3450,
                  "nodeType": "ExpressionStatement",
                  "src": "19776:51:3"
                },
                {
                  "body": {
                    "id": 3469,
                    "nodeType": "Block",
                    "src": "19870:80:3",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3462,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3438,
                              "src": "19897:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3463,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3432,
                              "src": "19903:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 3464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19912:5:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3461,
                            "name": "_processLockup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "19882:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserInfo_$2416_storage_ptr_$_t_address_$_t_bool_$returns$_t_bool_$",
                              "typeString": "function (struct Whitelist.UserInfo storage pointer,address,bool) returns (bool)"
                            }
                          },
                          "id": 3465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19882:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3468,
                        "nodeType": "IfStatement",
                        "src": "19878:66:3",
                        "trueBody": {
                          "id": 3467,
                          "nodeType": "Block",
                          "src": "19920:24:3",
                          "statements": [
                            {
                              "id": 3466,
                              "nodeType": "Break",
                              "src": "19930:5:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3455,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3452,
                      "src": "19850:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3456,
                      "name": "_maxCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3434,
                      "src": "19854:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19850:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3470,
                  "initializationExpression": {
                    "assignments": [
                      3452
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3452,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3470,
                        "src": "19838:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3451,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19838:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3454,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19847:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19838:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "19865:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3458,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3452,
                        "src": "19865:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3460,
                    "nodeType": "ExpressionStatement",
                    "src": "19865:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "19833:117:3"
                }
              ]
            },
            "documentation": "@notice Anyone can process lockups for a userId.\nThis is generally unused but may be required if a given userId\nhas a lot of individual lockup entries which are expired.",
            "id": 3472,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "processLockups",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3432,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "19669:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3431,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19669:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3434,
                  "name": "_maxCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3472,
                  "src": "19686:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3433,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19686:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19668:33:3"
            },
            "returnParameters": {
              "id": 3436,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19711:0:3"
            },
            "scope": 4398,
            "src": "19645:309:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3530,
              "nodeType": "Block",
              "src": "20327:364:3",
              "statements": [
                {
                  "assignments": [
                    3482
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3482,
                      "name": "info",
                      "nodeType": "VariableDeclaration",
                      "scope": 3530,
                      "src": "20333:21:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                        "typeString": "struct Whitelist.UserInfo"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 3481,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2416,
                        "src": "20333:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3486,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3483,
                      "name": "authorizedUserIdInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2420,
                      "src": "20357:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                        "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                      }
                    },
                    "id": 3485,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3484,
                      "name": "_userId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3474,
                      "src": "20378:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20357:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                      "typeString": "struct Whitelist.UserInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20333:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3488,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3482,
                            "src": "20400:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3489,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "20400:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20422:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "20400:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20425:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3487,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "20392:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20392:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3494,
                  "nodeType": "ExpressionStatement",
                  "src": "20392:51:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3496,
                          "name": "_maxLockupIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3476,
                          "src": "20457:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3497,
                            "name": "info",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3482,
                            "src": "20475:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                              "typeString": "struct Whitelist.UserInfo storage pointer"
                            }
                          },
                          "id": 3498,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "startIndex",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2413,
                          "src": "20475:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20457:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f554e4c4f434b4544",
                        "id": 3500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20492:18:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_764b6d311a483d0295561dc527d844c7967dad615b87eae453c0fba5b2579678",
                          "typeString": "literal_string \"ALREADY_UNLOCKED\""
                        },
                        "value": "ALREADY_UNLOCKED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_764b6d311a483d0295561dc527d844c7967dad615b87eae453c0fba5b2579678",
                          "typeString": "literal_string \"ALREADY_UNLOCKED\""
                        }
                      ],
                      "id": 3495,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "20449:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20449:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3502,
                  "nodeType": "ExpressionStatement",
                  "src": "20449:62:3"
                },
                {
                  "assignments": [
                    3504
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3504,
                      "name": "maxCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 3530,
                      "src": "20517:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3503,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20517:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3509,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3505,
                      "name": "_maxLockupIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3476,
                      "src": "20533:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3506,
                        "name": "info",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3482,
                        "src": "20551:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                          "typeString": "struct Whitelist.UserInfo storage pointer"
                        }
                      },
                      "id": 3507,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startIndex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2413,
                      "src": "20551:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20533:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20517:49:3"
                },
                {
                  "body": {
                    "id": 3528,
                    "nodeType": "Block",
                    "src": "20608:79:3",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3521,
                              "name": "info",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3482,
                              "src": "20635:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3522,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3474,
                              "src": "20641:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 3523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20650:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                "typeString": "struct Whitelist.UserInfo storage pointer"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3520,
                            "name": "_processLockup",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "20620:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserInfo_$2416_storage_ptr_$_t_address_$_t_bool_$returns$_t_bool_$",
                              "typeString": "function (struct Whitelist.UserInfo storage pointer,address,bool) returns (bool)"
                            }
                          },
                          "id": 3524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20620:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3527,
                        "nodeType": "IfStatement",
                        "src": "20616:65:3",
                        "trueBody": {
                          "id": 3526,
                          "nodeType": "Block",
                          "src": "20657:24:3",
                          "statements": [
                            {
                              "id": 3525,
                              "nodeType": "Break",
                              "src": "20667:5:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3514,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3511,
                      "src": "20589:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3515,
                      "name": "maxCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3504,
                      "src": "20593:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20589:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3529,
                  "initializationExpression": {
                    "assignments": [
                      3511
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3511,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3529,
                        "src": "20577:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3510,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20577:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3513,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20586:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20577:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3518,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "20603:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3517,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3511,
                        "src": "20603:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3519,
                    "nodeType": "ExpressionStatement",
                    "src": "20603:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "20572:115:3"
                }
              ]
            },
            "documentation": "@notice Allows operators to remove lockup entries, bypassing the\nrecorded expiration date.\n@dev This should generally remain unused. It could be used in combination with\n`addLockups` to fix an incorrect lockup expiration date or quantity.",
            "id": 3531,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 3479,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3478,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "20310:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "20310:14:3"
              }
            ],
            "name": "forceUnlockUpTo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3477,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3474,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3531,
                  "src": "20254:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3473,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20254:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3476,
                  "name": "_maxLockupIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3531,
                  "src": "20271:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3475,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20271:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20253:39:3"
            },
            "returnParameters": {
              "id": 3480,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20327:0:3"
            },
            "scope": 4398,
            "src": "20229:462:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3552,
              "nodeType": "Block",
              "src": "20775:101:3",
              "statements": [
                {
                  "assignments": [
                    3539
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3539,
                      "name": "until",
                      "nodeType": "VariableDeclaration",
                      "scope": 3552,
                      "src": "20781:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3538,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20781:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3543,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3540,
                      "name": "jurisdictionHaltsUntil",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2435,
                      "src": "20794:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 3542,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3541,
                      "name": "_jurisdictionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3533,
                      "src": "20817:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20794:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20781:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 3550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3544,
                        "name": "until",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3539,
                        "src": "20846:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 3545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20855:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "20846:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3547,
                        "name": "until",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3539,
                        "src": "20860:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 3548,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8536,
                        "src": "20868:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "20860:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "20846:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3537,
                  "id": 3551,
                  "nodeType": "Return",
                  "src": "20839:32:3"
                }
              ]
            },
            "documentation": null,
            "id": 3553,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isJurisdictionHalted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3533,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "20726:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3532,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20726:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20725:22:3"
            },
            "returnParameters": {
              "id": 3537,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3536,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3553,
                  "src": "20770:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3535,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20770:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20769:6:3"
            },
            "scope": 4398,
            "src": "20695:181:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3590,
              "nodeType": "Block",
              "src": "21240:150:3",
              "statements": [
                {
                  "assignments": [
                    3565
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3565,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3590,
                      "src": "21246:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3564,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21246:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3568,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3566,
                      "name": "_jurisdictionIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3556,
                      "src": "21260:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 3567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "21260:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21246:37:3"
                },
                {
                  "body": {
                    "id": 3588,
                    "nodeType": "Block",
                    "src": "21319:67:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3580,
                                "name": "_jurisdictionIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3556,
                                "src": "21333:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3582,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3581,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3570,
                                "src": "21350:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21333:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3583,
                                "name": "_expirationTimestamps",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3559,
                                "src": "21354:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3585,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3584,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3570,
                                "src": "21376:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21354:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3579,
                            "name": "_halt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3617,
                            "src": "21327:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21327:52:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3587,
                        "nodeType": "ExpressionStatement",
                        "src": "21327:52:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3573,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3570,
                      "src": "21305:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3574,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3565,
                      "src": "21307:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21305:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3589,
                  "initializationExpression": {
                    "assignments": [
                      3570
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3570,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "21293:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3569,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21293:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3572,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21302:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21293:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21315:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3576,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3570,
                        "src": "21315:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3578,
                    "nodeType": "ExpressionStatement",
                    "src": "21315:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "21289:97:3"
                }
              ]
            },
            "documentation": "@notice halts jurisdictions of id `_jurisdictionIds` for `_duration` seconds\n@dev only owner can call this function\n@param _jurisdictionIds ids of the jurisdictions to halt\n@param _expirationTimestamps due when halt ends*",
            "id": 3591,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3562,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3561,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "21230:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "21230:9:3"
              }
            ],
            "name": "halt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3560,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3556,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3591,
                  "src": "21148:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3554,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21148:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3555,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21148:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3559,
                  "name": "_expirationTimestamps",
                  "nodeType": "VariableDeclaration",
                  "scope": 3591,
                  "src": "21182:37:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3557,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21182:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3558,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21182:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21147:73:3"
            },
            "returnParameters": {
              "id": 3563,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21240:0:3"
            },
            "scope": 4398,
            "src": "21134:256:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3616,
              "nodeType": "Block",
              "src": "21453:155:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3599,
                          "name": "_until",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3595,
                          "src": "21467:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3600,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8536,
                          "src": "21476:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "21467:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "48414c545f4455455f53484f554c445f42455f465554555245",
                        "id": 3602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "21481:27:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_60d5f7968595e6a74d425a97cff89979b6d2777513329e6802d41595dfd606fb",
                          "typeString": "literal_string \"HALT_DUE_SHOULD_BE_FUTURE\""
                        },
                        "value": "HALT_DUE_SHOULD_BE_FUTURE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_60d5f7968595e6a74d425a97cff89979b6d2777513329e6802d41595dfd606fb",
                          "typeString": "literal_string \"HALT_DUE_SHOULD_BE_FUTURE\""
                        }
                      ],
                      "id": 3598,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "21459:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21459:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3604,
                  "nodeType": "ExpressionStatement",
                  "src": "21459:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3605,
                        "name": "jurisdictionHaltsUntil",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2435,
                        "src": "21515:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3607,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3606,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3593,
                        "src": "21538:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "21515:39:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3608,
                      "name": "_until",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3595,
                      "src": "21557:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21515:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3610,
                  "nodeType": "ExpressionStatement",
                  "src": "21515:48:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3612,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3593,
                        "src": "21579:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3613,
                        "name": "_until",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3595,
                        "src": "21596:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3611,
                      "name": "Halt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2353,
                      "src": "21574:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 3614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21574:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3615,
                  "nodeType": "EmitStatement",
                  "src": "21569:34:3"
                }
              ]
            },
            "documentation": null,
            "id": 3617,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_halt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3593,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3617,
                  "src": "21409:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3592,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21409:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3595,
                  "name": "_until",
                  "nodeType": "VariableDeclaration",
                  "scope": 3617,
                  "src": "21431:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3594,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21431:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21408:35:3"
            },
            "returnParameters": {
              "id": 3597,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21453:0:3"
            },
            "scope": 4398,
            "src": "21394:214:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3648,
              "nodeType": "Block",
              "src": "21841:128:3",
              "statements": [
                {
                  "assignments": [
                    3626
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3626,
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "scope": 3648,
                      "src": "21847:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3625,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21847:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3629,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 3627,
                      "name": "_jurisdictionIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3620,
                      "src": "21861:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                        "typeString": "uint256[] calldata"
                      }
                    },
                    "id": 3628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "21861:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21847:37:3"
                },
                {
                  "body": {
                    "id": 3646,
                    "nodeType": "Block",
                    "src": "21922:43:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3641,
                                "name": "_jurisdictionIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3620,
                                "src": "21938:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3643,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3642,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3631,
                                "src": "21955:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21938:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3640,
                            "name": "_resume",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3674,
                            "src": "21930:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 3644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21930:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3645,
                        "nodeType": "ExpressionStatement",
                        "src": "21930:28:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3634,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3631,
                      "src": "21906:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3635,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3626,
                      "src": "21910:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21906:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3647,
                  "initializationExpression": {
                    "assignments": [
                      3631
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3631,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3647,
                        "src": "21894:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3630,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21894:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3633,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21903:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21894:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21918:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3637,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3631,
                        "src": "21918:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3639,
                    "nodeType": "ExpressionStatement",
                    "src": "21918:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "21890:75:3"
                }
              ]
            },
            "documentation": "@notice resume halted jurisdiction\n@dev only owner can call this function\n@param _jurisdictionIds list of jurisdiction ids to resume*",
            "id": 3649,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3623,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3622,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "21832:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "21832:9:3"
              }
            ],
            "name": "resume",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3621,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3620,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3649,
                  "src": "21789:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3618,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21789:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3619,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21789:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21788:34:3"
            },
            "returnParameters": {
              "id": 3624,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21841:0:3"
            },
            "scope": 4398,
            "src": "21773:196:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3673,
              "nodeType": "Block",
              "src": "22021:194:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3655,
                            "name": "jurisdictionHaltsUntil",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2435,
                            "src": "22035:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3657,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3656,
                            "name": "_jurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3651,
                            "src": "22058:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22035:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "22078:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "22035:44:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "415454454d50545f544f5f524553554d455f4e4f4e455f48414c5445445f4a555249534449434154494f4e",
                        "id": 3660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22081:45:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d0524525de7ed87a31453401f293ecbe30ecbabdb144d2293848d3917e42f6f3",
                          "typeString": "literal_string \"ATTEMPT_TO_RESUME_NONE_HALTED_JURISDICATION\""
                        },
                        "value": "ATTEMPT_TO_RESUME_NONE_HALTED_JURISDICATION"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d0524525de7ed87a31453401f293ecbe30ecbabdb144d2293848d3917e42f6f3",
                          "typeString": "literal_string \"ATTEMPT_TO_RESUME_NONE_HALTED_JURISDICATION\""
                        }
                      ],
                      "id": 3654,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "22027:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22027:100:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3662,
                  "nodeType": "ExpressionStatement",
                  "src": "22027:100:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3663,
                        "name": "jurisdictionHaltsUntil",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2435,
                        "src": "22133:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3665,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3664,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3651,
                        "src": "22156:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "22133:39:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3666,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22175:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "22133:43:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3668,
                  "nodeType": "ExpressionStatement",
                  "src": "22133:43:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3670,
                        "name": "_jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3651,
                        "src": "22194:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3669,
                      "name": "Resume",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2357,
                      "src": "22187:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22187:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3672,
                  "nodeType": "EmitStatement",
                  "src": "22182:28:3"
                }
              ]
            },
            "documentation": null,
            "id": 3674,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_resume",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3651,
                  "name": "_jurisdictionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3674,
                  "src": "21990:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3650,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21990:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21989:22:3"
            },
            "returnParameters": {
              "id": 3653,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22021:0:3"
            },
            "scope": 4398,
            "src": "21973:242:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3696,
              "nodeType": "Block",
              "src": "22453:160:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3682,
                          "name": "_limit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3676,
                          "src": "22467:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3683,
                          "name": "currentInvestors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2439,
                          "src": "22477:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "22467:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c494d49545f53484f554c445f42455f4c41524745525f5448414e5f43555252454e545f494e564553544f5253",
                        "id": 3685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22495:47:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                          "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                        },
                        "value": "LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                          "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                        }
                      ],
                      "id": 3681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "22459:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22459:84:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3687,
                  "nodeType": "ExpressionStatement",
                  "src": "22459:84:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3688,
                      "name": "maxInvestors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2437,
                      "src": "22549:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3689,
                      "name": "_limit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3676,
                      "src": "22564:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22549:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3691,
                  "nodeType": "ExpressionStatement",
                  "src": "22549:21:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3693,
                        "name": "_limit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3676,
                        "src": "22601:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3692,
                      "name": "MaxInvestorsChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2361,
                      "src": "22581:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 3694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22581:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3695,
                  "nodeType": "EmitStatement",
                  "src": "22576:32:3"
                }
              ]
            },
            "documentation": "@notice changes max investors limit of the contract to `_limit`\n@dev only owner can call this function\n@param _limit new investor limit for contract",
            "id": 3697,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3679,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3678,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "22443:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22443:9:3"
              }
            ],
            "name": "setInvestorLimit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3676,
                  "name": "_limit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3697,
                  "src": "22421:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3675,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22421:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22420:13:3"
            },
            "returnParameters": {
              "id": 3680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22453:0:3"
            },
            "scope": 4398,
            "src": "22395:218:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3753,
              "nodeType": "Block",
              "src": "22981:392:3",
              "statements": [
                {
                  "body": {
                    "id": 3751,
                    "nodeType": "Block",
                    "src": "23034:335:3",
                    "statements": [
                      {
                        "assignments": [
                          3720
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3720,
                            "name": "jurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 3751,
                            "src": "23042:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3719,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "23042:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3724,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3721,
                            "name": "_jurisdictionIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3700,
                            "src": "23064:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3723,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3722,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3709,
                            "src": "23081:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23064:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23042:41:3"
                      },
                      {
                        "assignments": [
                          3726
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3726,
                            "name": "limit",
                            "nodeType": "VariableDeclaration",
                            "scope": 3751,
                            "src": "23091:10:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3725,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "23091:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3730,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3727,
                            "name": "_limits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3703,
                            "src": "23104:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3729,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3728,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3709,
                            "src": "23112:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23104:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23091:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3732,
                                "name": "limit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3726,
                                "src": "23130:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3733,
                                  "name": "currentInvestorsByJurisdiction",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2447,
                                  "src": "23139:30:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 3735,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3734,
                                  "name": "jurisdictionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3720,
                                  "src": "23170:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "23139:46:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23130:55:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4c494d49545f53484f554c445f42455f4c41524745525f5448414e5f43555252454e545f494e564553544f5253",
                              "id": 3737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23187:47:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                                "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                              },
                              "value": "LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_de778973483644076d0130f283bb3d355b118521861809d98b10be1101cafc17",
                                "typeString": "literal_string \"LIMIT_SHOULD_BE_LARGER_THAN_CURRENT_INVESTORS\""
                              }
                            ],
                            "id": 3731,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "23122:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23122:113:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3739,
                        "nodeType": "ExpressionStatement",
                        "src": "23122:113:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3740,
                              "name": "maxInvestorsByJurisdiction",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "23243:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 3742,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3741,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3720,
                              "src": "23270:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "23243:42:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3743,
                            "name": "limit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3726,
                            "src": "23288:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23243:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3745,
                        "nodeType": "ExpressionStatement",
                        "src": "23243:50:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3747,
                              "name": "jurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3720,
                              "src": "23340:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3748,
                              "name": "limit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3726,
                              "src": "23356:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3746,
                            "name": "MaxInvestorsByJurisdictionChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2367,
                            "src": "23306:33:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 3749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23306:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3750,
                        "nodeType": "EmitStatement",
                        "src": "23301:61:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3712,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3709,
                      "src": "23003:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3713,
                        "name": "_jurisdictionIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3700,
                        "src": "23005:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 3714,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "23005:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23003:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3752,
                  "initializationExpression": {
                    "assignments": [
                      3709
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3709,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3752,
                        "src": "22991:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3708,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22991:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3711,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3710,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23000:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22991:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3717,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "23030:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3716,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3709,
                        "src": "23030:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3718,
                    "nodeType": "ExpressionStatement",
                    "src": "23030:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "22987:382:3"
                }
              ]
            },
            "documentation": "@notice changes max investors limit of the `_jurisdcitionId` to `_limit`\n@dev only owner can call this function\n@param _jurisdictionIds jurisdiction id to update\n@param _limits new investor limit for jurisdiction",
            "id": 3754,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3706,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3705,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6122,
                  "src": "22971:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22971:9:3"
              }
            ],
            "name": "setInvestorLimitForJurisdiction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3700,
                  "name": "_jurisdictionIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3754,
                  "src": "22903:32:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3698,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "22903:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3699,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "22903:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3703,
                  "name": "_limits",
                  "nodeType": "VariableDeclaration",
                  "scope": 3754,
                  "src": "22937:23:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3701,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "22937:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3702,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "22937:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22902:59:3"
            },
            "returnParameters": {
              "id": 3707,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22981:0:3"
            },
            "scope": 4398,
            "src": "22862:511:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3781,
              "nodeType": "Block",
              "src": "23649:92:3",
              "statements": [
                {
                  "body": {
                    "id": 3779,
                    "nodeType": "Block",
                    "src": "23694:43:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3774,
                                "name": "_wallets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3757,
                                "src": "23718:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3776,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3775,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3763,
                                "src": "23727:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "23718:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3773,
                            "name": "_activateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "23702:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23702:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3778,
                        "nodeType": "ExpressionStatement",
                        "src": "23702:28:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3766,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3763,
                      "src": "23671:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3767,
                        "name": "_wallets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3757,
                        "src": "23673:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3768,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "23673:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23671:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3780,
                  "initializationExpression": {
                    "assignments": [
                      3763
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3763,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3780,
                        "src": "23659:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3762,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23659:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3765,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23668:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "23659:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "23690:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3770,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3763,
                        "src": "23690:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3772,
                    "nodeType": "ExpressionStatement",
                    "src": "23690:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "23655:82:3"
                }
              ]
            },
            "documentation": "@notice activate wallet enlist user when user is not enlisted\n@dev This function can be called even user does not have balance\nonly owner can call this function",
            "id": 3782,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3760,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3759,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "23636:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "23636:12:3"
              }
            ],
            "name": "activateWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3757,
                  "name": "_wallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3782,
                  "src": "23595:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3755,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "23595:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3756,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "23595:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23589:37:3"
            },
            "returnParameters": {
              "id": 3761,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23649:0:3"
            },
            "scope": 4398,
            "src": "23565:176:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3836,
              "nodeType": "Block",
              "src": "23804:364:3",
              "statements": [
                {
                  "assignments": [
                    3788
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3788,
                      "name": "userId",
                      "nodeType": "VariableDeclaration",
                      "scope": 3836,
                      "src": "23810:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3787,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "23810:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3792,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3789,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "23827:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 3791,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3790,
                      "name": "_wallet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3784,
                      "src": "23852:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "23827:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23810:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3794,
                          "name": "userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3788,
                          "src": "23874:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23892:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "23884:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23884:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "23874:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f554e4b4e4f574e",
                        "id": 3799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23896:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        },
                        "value": "USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        }
                      ],
                      "id": 3793,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "23866:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23866:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3801,
                  "nodeType": "ExpressionStatement",
                  "src": "23866:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "23925:25:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3803,
                            "name": "walletActivated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2459,
                            "src": "23926:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3805,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3804,
                            "name": "_wallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3784,
                            "src": "23942:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "23926:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f4143544956415445445f57414c4c4554",
                        "id": 3807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23951:26:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5330c5badc145963cdb5ff9f0568edf2ed7ee7ee3c1aed425debd1b79e84d14b",
                          "typeString": "literal_string \"ALREADY_ACTIVATED_WALLET\""
                        },
                        "value": "ALREADY_ACTIVATED_WALLET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5330c5badc145963cdb5ff9f0568edf2ed7ee7ee3c1aed425debd1b79e84d14b",
                          "typeString": "literal_string \"ALREADY_ACTIVATED_WALLET\""
                        }
                      ],
                      "id": 3802,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "23917:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3808,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23917:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3809,
                  "nodeType": "ExpressionStatement",
                  "src": "23917:61:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 3813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "23987:25:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3810,
                        "name": "investorEnlisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "23988:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3812,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3811,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3788,
                        "src": "24005:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23988:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3819,
                  "nodeType": "IfStatement",
                  "src": "23984:63:3",
                  "trueBody": {
                    "id": 3818,
                    "nodeType": "Block",
                    "src": "24013:34:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3815,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3788,
                              "src": "24033:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3814,
                            "name": "_enlistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4062,
                            "src": "24021:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24021:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3817,
                        "nodeType": "ExpressionStatement",
                        "src": "24021:19:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "24052:31:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3820,
                        "name": "userActiveWalletCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2455,
                        "src": "24052:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3822,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3821,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3788,
                        "src": "24074:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "24052:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3824,
                  "nodeType": "ExpressionStatement",
                  "src": "24052:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3825,
                        "name": "walletActivated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2459,
                        "src": "24089:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3827,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3826,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3784,
                        "src": "24105:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "24089:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 3828,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24116:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "24089:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3830,
                  "nodeType": "ExpressionStatement",
                  "src": "24089:31:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3832,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3788,
                        "src": "24147:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3833,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3784,
                        "src": "24155:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3831,
                      "name": "WalletActivated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2385,
                      "src": "24131:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 3834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24131:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3835,
                  "nodeType": "EmitStatement",
                  "src": "24126:37:3"
                }
              ]
            },
            "documentation": null,
            "id": 3837,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_activateWallet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3784,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 3837,
                  "src": "23775:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23775:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23769:25:3"
            },
            "returnParameters": {
              "id": 3786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23804:0:3"
            },
            "scope": 4398,
            "src": "23745:423:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3856,
              "nodeType": "Block",
              "src": "24398:136:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3848,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3845,
                              "name": "_wallet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3839,
                              "src": "24438:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3843,
                              "name": "callingContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "24412:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6741",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6686,
                            "src": "24412:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24412:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "24450:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "24412:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "415454454d50545f544f5f444541435449564154455f57414c4c45545f574954485f42414c414e4345",
                        "id": 3849,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24453:43:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                          "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                        },
                        "value": "ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                          "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                        }
                      ],
                      "id": 3842,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "24404:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24404:93:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3851,
                  "nodeType": "ExpressionStatement",
                  "src": "24404:93:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3853,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3839,
                        "src": "24521:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3852,
                      "name": "_deactivateWallet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3952,
                      "src": "24503:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 3854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24503:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3855,
                  "nodeType": "ExpressionStatement",
                  "src": "24503:26:3"
                }
              ]
            },
            "documentation": "@notice deactivate wallet delist user if user does not have any wallet left\n@dev This function can only be called when _wallet has zero balance",
            "id": 3857,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deactivateWallet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3839,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 3857,
                  "src": "24369:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24369:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24363:25:3"
            },
            "returnParameters": {
              "id": 3841,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24398:0:3"
            },
            "scope": 4398,
            "src": "24338:196:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3896,
              "nodeType": "Block",
              "src": "24624:199:3",
              "statements": [
                {
                  "body": {
                    "id": 3894,
                    "nodeType": "Block",
                    "src": "24669:150:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3879,
                                      "name": "_wallets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3860,
                                      "src": "24711:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 3881,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3880,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3866,
                                      "src": "24720:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24711:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3877,
                                    "name": "callingContract",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2393,
                                    "src": "24685:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$6741",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3878,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6686,
                                  "src": "24685:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 3882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24685:38:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24727:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "24685:43:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "415454454d50545f544f5f444541435449564154455f57414c4c45545f574954485f42414c414e4345",
                              "id": 3885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24730:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                                "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                              },
                              "value": "ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9449fee04952c977c1e83dbca7da04fd33fb4d4f898f118466d831c0a231da00",
                                "typeString": "literal_string \"ATTEMPT_TO_DEACTIVATE_WALLET_WITH_BALANCE\""
                              }
                            ],
                            "id": 3876,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "24677:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24677:97:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3887,
                        "nodeType": "ExpressionStatement",
                        "src": "24677:97:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3889,
                                "name": "_wallets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3860,
                                "src": "24800:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3891,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3890,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3866,
                                "src": "24809:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24800:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3888,
                            "name": "_deactivateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3952,
                            "src": "24782:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24782:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3893,
                        "nodeType": "ExpressionStatement",
                        "src": "24782:30:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3869,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3866,
                      "src": "24646:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3870,
                        "name": "_wallets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3860,
                        "src": "24648:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3871,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "24648:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24646:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3895,
                  "initializationExpression": {
                    "assignments": [
                      3866
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3866,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3895,
                        "src": "24634:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3865,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24634:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3868,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3867,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24643:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24634:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "24665:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3873,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3866,
                        "src": "24665:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3875,
                    "nodeType": "ExpressionStatement",
                    "src": "24665:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "24630:189:3"
                }
              ]
            },
            "documentation": null,
            "id": 3897,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3863,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3862,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "24611:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "24611:12:3"
              }
            ],
            "name": "deactivateWallets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3860,
                  "name": "_wallets",
                  "nodeType": "VariableDeclaration",
                  "scope": 3897,
                  "src": "24570:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3858,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "24570:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3859,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "24570:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24564:37:3"
            },
            "returnParameters": {
              "id": 3864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24624:0:3"
            },
            "scope": 4398,
            "src": "24538:285:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3951,
              "nodeType": "Block",
              "src": "24888:375:3",
              "statements": [
                {
                  "assignments": [
                    3903
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3903,
                      "name": "userId",
                      "nodeType": "VariableDeclaration",
                      "scope": 3951,
                      "src": "24894:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3902,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "24894:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 3907,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 3904,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "24911:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 3906,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 3905,
                      "name": "_wallet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3899,
                      "src": "24936:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "24911:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "24894:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3909,
                          "name": "userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3903,
                          "src": "24958:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "24976:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "24968:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 3912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24968:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "24958:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f554e4b4e4f574e",
                        "id": 3914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "24980:14:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        },
                        "value": "USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7f10794f0343e636a7984075dc4d97a4f2fc8153e480ee68adbe96c6e17f5559",
                          "typeString": "literal_string \"USER_UNKNOWN\""
                        }
                      ],
                      "id": 3908,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "24950:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24950:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3916,
                  "nodeType": "ExpressionStatement",
                  "src": "24950:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 3918,
                          "name": "walletActivated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "25009:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 3920,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 3919,
                          "name": "_wallet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3899,
                          "src": "25025:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25009:24:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f44454143544956415445445f57414c4c4554",
                        "id": 3921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25034:28:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8c7f0194c54174ba8ff3842d60e961bb8febe97efc730a35a1f823ddd2b616cf",
                          "typeString": "literal_string \"ALREADY_DEACTIVATED_WALLET\""
                        },
                        "value": "ALREADY_DEACTIVATED_WALLET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8c7f0194c54174ba8ff3842d60e961bb8febe97efc730a35a1f823ddd2b616cf",
                          "typeString": "literal_string \"ALREADY_DEACTIVATED_WALLET\""
                        }
                      ],
                      "id": 3917,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25001:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25001:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3923,
                  "nodeType": "ExpressionStatement",
                  "src": "25001:62:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": false,
                    "src": "25069:31:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3924,
                        "name": "userActiveWalletCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2455,
                        "src": "25069:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3926,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3925,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3903,
                        "src": "25091:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25069:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3928,
                  "nodeType": "ExpressionStatement",
                  "src": "25069:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3929,
                        "name": "walletActivated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2459,
                        "src": "25106:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 3931,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3930,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3899,
                        "src": "25122:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25106:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 3932,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25133:5:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "25106:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3934,
                  "nodeType": "ExpressionStatement",
                  "src": "25106:32:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3936,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3903,
                        "src": "25167:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 3937,
                        "name": "_wallet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3899,
                        "src": "25175:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3935,
                      "name": "WalletDeactivated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2391,
                      "src": "25149:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 3938,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25149:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3939,
                  "nodeType": "EmitStatement",
                  "src": "25144:39:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 3940,
                        "name": "userActiveWalletCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2455,
                        "src": "25192:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3942,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 3941,
                        "name": "userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3903,
                        "src": "25214:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "25192:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25223:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "25192:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3950,
                  "nodeType": "IfStatement",
                  "src": "25189:70:3",
                  "trueBody": {
                    "id": 3949,
                    "nodeType": "Block",
                    "src": "25225:34:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3946,
                              "name": "userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3903,
                              "src": "25245:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3945,
                            "name": "_delistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4138,
                            "src": "25233:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25233:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3948,
                        "nodeType": "ExpressionStatement",
                        "src": "25233:19:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 3952,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_deactivateWallet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3899,
                  "name": "_wallet",
                  "nodeType": "VariableDeclaration",
                  "scope": 3952,
                  "src": "24859:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3898,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24859:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24853:25:3"
            },
            "returnParameters": {
              "id": 3901,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24888:0:3"
            },
            "scope": 4398,
            "src": "24827:436:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3979,
              "nodeType": "Block",
              "src": "25347:88:3",
              "statements": [
                {
                  "body": {
                    "id": 3977,
                    "nodeType": "Block",
                    "src": "25392:39:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3972,
                                "name": "_userIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3955,
                                "src": "25412:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3974,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3973,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3961,
                                "src": "25421:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "25412:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3971,
                            "name": "_enlistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4062,
                            "src": "25400:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 3975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25400:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3976,
                        "nodeType": "ExpressionStatement",
                        "src": "25400:24:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3964,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3961,
                      "src": "25369:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3965,
                        "name": "_userIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3955,
                        "src": "25371:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3966,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "25371:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25369:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3978,
                  "initializationExpression": {
                    "assignments": [
                      3961
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3961,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3978,
                        "src": "25357:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3960,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25357:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 3963,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3962,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25366:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25357:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3969,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "25388:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 3968,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3961,
                        "src": "25388:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3970,
                    "nodeType": "ExpressionStatement",
                    "src": "25388:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "25353:78:3"
                }
              ]
            },
            "documentation": null,
            "id": 3980,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 3958,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3957,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "25334:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "25334:12:3"
              }
            ],
            "name": "enlistUsers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3955,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "25293:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3953,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "25293:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3954,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25293:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25287:37:3"
            },
            "returnParameters": {
              "id": 3959,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25347:0:3"
            },
            "scope": 4398,
            "src": "25267:168:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4061,
              "nodeType": "Block",
              "src": "25494:750:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3986,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "25515:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 3988,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3987,
                              "name": "_userId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3982,
                              "src": "25536:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "25515:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 3989,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "25515:44:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25563:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "25515:49:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "555345525f49445f554e4b4e4f574e",
                        "id": 3992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25572:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        },
                        "value": "USER_ID_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9862d3b1912acbe58207e3660db0bbbcf07e14dcf81e4827e838a5cde265878b",
                          "typeString": "literal_string \"USER_ID_UNKNOWN\""
                        }
                      ],
                      "id": 3985,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25500:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25500:95:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3994,
                  "nodeType": "ExpressionStatement",
                  "src": "25500:95:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "25609:26:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3996,
                            "name": "investorEnlisted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2451,
                            "src": "25610:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 3998,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3997,
                            "name": "_userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3982,
                            "src": "25627:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25610:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f454e4c49535445445f55534552",
                        "id": 4000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25636:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cd6d4b6b9ebf9c121fd23e9a86596fa1b6772e4f0a6124b501e9cb258b33646b",
                          "typeString": "literal_string \"ALREADY_ENLISTED_USER\""
                        },
                        "value": "ALREADY_ENLISTED_USER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cd6d4b6b9ebf9c121fd23e9a86596fa1b6772e4f0a6124b501e9cb258b33646b",
                          "typeString": "literal_string \"ALREADY_ENLISTED_USER\""
                        }
                      ],
                      "id": 3995,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25601:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25601:59:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4002,
                  "nodeType": "ExpressionStatement",
                  "src": "25601:59:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4003,
                        "name": "investorEnlisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "25666:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 4005,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4004,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3982,
                        "src": "25683:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25666:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4006,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25694:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "25666:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4008,
                  "nodeType": "ExpressionStatement",
                  "src": "25666:32:3"
                },
                {
                  "assignments": [
                    4010
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4010,
                      "name": "jurisdictionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25704:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4009,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25704:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4015,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4011,
                        "name": "authorizedUserIdInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "25726:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                          "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                        }
                      },
                      "id": 4013,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4012,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3982,
                        "src": "25747:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "25726:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                        "typeString": "struct Whitelist.UserInfo storage ref"
                      }
                    },
                    "id": 4014,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "jurisdictionId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2409,
                    "src": "25726:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25704:73:3"
                },
                {
                  "assignments": [
                    4017
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4017,
                      "name": "totalCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25783:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4016,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25783:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4020,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 4019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": true,
                    "src": "25801:18:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4018,
                      "name": "currentInvestors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "25803:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25783:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4022,
                            "name": "maxInvestors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "25833:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25849:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "25833:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4025,
                            "name": "totalCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4017,
                            "src": "25854:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4026,
                            "name": "maxInvestors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "25868:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25854:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "25833:47:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455843454544494e475f4d41585f494e564553544f5253",
                        "id": 4029,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25882:25:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5f86a5cbcf90ccc82b3af9592719e9c10f376e0a6eddafca87169679b28fc63e",
                          "typeString": "literal_string \"EXCEEDING_MAX_INVESTORS\""
                        },
                        "value": "EXCEEDING_MAX_INVESTORS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5f86a5cbcf90ccc82b3af9592719e9c10f376e0a6eddafca87169679b28fc63e",
                          "typeString": "literal_string \"EXCEEDING_MAX_INVESTORS\""
                        }
                      ],
                      "id": 4021,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "25825:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25825:83:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4031,
                  "nodeType": "ExpressionStatement",
                  "src": "25825:83:3"
                },
                {
                  "assignments": [
                    4033
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4033,
                      "name": "jurisdictionCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25914:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4032,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25914:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4038,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 4037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": true,
                    "src": "25939:48:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4034,
                        "name": "currentInvestorsByJurisdiction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "25941:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 4036,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4035,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4010,
                        "src": "25972:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "25941:46:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25914:73:3"
                },
                {
                  "assignments": [
                    4040
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4040,
                      "name": "maxJurisdictionLimit",
                      "nodeType": "VariableDeclaration",
                      "scope": 4061,
                      "src": "25993:25:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4039,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "25993:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4044,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4041,
                      "name": "maxInvestorsByJurisdiction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2443,
                      "src": "26021:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 4043,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4042,
                      "name": "jurisdictionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4010,
                      "src": "26048:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "26021:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "25993:70:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4046,
                            "name": "maxJurisdictionLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4040,
                            "src": "26077:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26101:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "26077:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4049,
                            "name": "jurisdictionCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4033,
                            "src": "26106:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4050,
                            "name": "maxJurisdictionLimit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4040,
                            "src": "26127:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26106:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "26077:70:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "455843454544494e475f4a5552495344494354494f4e5f4d41585f494e564553544f5253",
                        "id": 4053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26148:38:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_67b4b780ce43ee6996855d9f435dcb100e7b3e1647d371923d9a11204b980ec0",
                          "typeString": "literal_string \"EXCEEDING_JURISDICTION_MAX_INVESTORS\""
                        },
                        "value": "EXCEEDING_JURISDICTION_MAX_INVESTORS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_67b4b780ce43ee6996855d9f435dcb100e7b3e1647d371923d9a11204b980ec0",
                          "typeString": "literal_string \"EXCEEDING_JURISDICTION_MAX_INVESTORS\""
                        }
                      ],
                      "id": 4045,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "26069:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4054,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26069:118:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4055,
                  "nodeType": "ExpressionStatement",
                  "src": "26069:118:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4057,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3982,
                        "src": "26215:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4058,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4010,
                        "src": "26224:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4056,
                      "name": "InvestorEnlisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2373,
                      "src": "26198:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26198:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4060,
                  "nodeType": "EmitStatement",
                  "src": "26193:46:3"
                }
              ]
            },
            "documentation": null,
            "id": 4062,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_enlistUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3982,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4062,
                  "src": "25465:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3981,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25465:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25459:25:3"
            },
            "returnParameters": {
              "id": 3984,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25494:0:3"
            },
            "scope": 4398,
            "src": "25439:805:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4089,
              "nodeType": "Block",
              "src": "26328:88:3",
              "statements": [
                {
                  "body": {
                    "id": 4087,
                    "nodeType": "Block",
                    "src": "26373:39:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4082,
                                "name": "_userIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4065,
                                "src": "26393:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4084,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4083,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4071,
                                "src": "26402:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26393:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4081,
                            "name": "_delistUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4138,
                            "src": "26381:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26381:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4086,
                        "nodeType": "ExpressionStatement",
                        "src": "26381:24:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4074,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4071,
                      "src": "26350:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4075,
                        "name": "_userIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4065,
                        "src": "26352:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 4076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "26352:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "26350:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4088,
                  "initializationExpression": {
                    "assignments": [
                      4071
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4071,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 4088,
                        "src": "26338:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4070,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26338:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4073,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26347:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "26338:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "26369:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4078,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4071,
                        "src": "26369:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4080,
                    "nodeType": "ExpressionStatement",
                    "src": "26369:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "26334:78:3"
                }
              ]
            },
            "documentation": null,
            "id": 4090,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4068,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4067,
                  "name": "onlyOperator",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5104,
                  "src": "26315:12:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "26315:12:3"
              }
            ],
            "name": "delistUsers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4065,
                  "name": "_userIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 4090,
                  "src": "26274:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4063,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "26274:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4064,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "26274:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "26268:37:3"
            },
            "returnParameters": {
              "id": 4069,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26328:0:3"
            },
            "scope": 4398,
            "src": "26248:168:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 4137,
              "nodeType": "Block",
              "src": "26475:409:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4096,
                          "name": "investorEnlisted",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2451,
                          "src": "26489:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 4098,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4097,
                          "name": "_userId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4092,
                          "src": "26506:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "26489:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414c52454144595f44454c49535445445f55534552",
                        "id": 4099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26515:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e0e1ab8f488e05d6429b887eab66fe6cb8f61d72266b65acc6094514ce29c9c",
                          "typeString": "literal_string \"ALREADY_DELISTED_USER\""
                        },
                        "value": "ALREADY_DELISTED_USER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e0e1ab8f488e05d6429b887eab66fe6cb8f61d72266b65acc6094514ce29c9c",
                          "typeString": "literal_string \"ALREADY_DELISTED_USER\""
                        }
                      ],
                      "id": 4095,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "26481:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26481:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4101,
                  "nodeType": "ExpressionStatement",
                  "src": "26481:58:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4103,
                            "name": "userActiveWalletCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2455,
                            "src": "26553:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 4105,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4104,
                            "name": "_userId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4092,
                            "src": "26575:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "26553:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "26585:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "26553:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "415454454d50545f544f5f44454c4953545f555345525f574954485f4143544956455f57414c4c4554",
                        "id": 4108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "26587:43:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7ac047eace0d61bfa1e6159124e9462385e719694e5b1f8bada6668d302b5287",
                          "typeString": "literal_string \"ATTEMPT_TO_DELIST_USER_WITH_ACTIVE_WALLET\""
                        },
                        "value": "ATTEMPT_TO_DELIST_USER_WITH_ACTIVE_WALLET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7ac047eace0d61bfa1e6159124e9462385e719694e5b1f8bada6668d302b5287",
                          "typeString": "literal_string \"ATTEMPT_TO_DELIST_USER_WITH_ACTIVE_WALLET\""
                        }
                      ],
                      "id": 4102,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "26545:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26545:86:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4110,
                  "nodeType": "ExpressionStatement",
                  "src": "26545:86:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4111,
                        "name": "investorEnlisted",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2451,
                        "src": "26637:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 4113,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4112,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "26654:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "26637:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4114,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26665:5:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "26637:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4116,
                  "nodeType": "ExpressionStatement",
                  "src": "26637:33:3"
                },
                {
                  "assignments": [
                    4118
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4118,
                      "name": "jurisdictionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4137,
                      "src": "26676:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4117,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "26676:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4123,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4119,
                        "name": "authorizedUserIdInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2420,
                        "src": "26698:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                          "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                        }
                      },
                      "id": 4121,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4120,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "26719:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "26698:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                        "typeString": "struct Whitelist.UserInfo storage ref"
                      }
                    },
                    "id": 4122,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "jurisdictionId",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 2409,
                    "src": "26698:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "26676:73:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": true,
                    "src": "26755:18:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 4124,
                      "name": "currentInvestors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2439,
                      "src": "26757:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4126,
                  "nodeType": "ExpressionStatement",
                  "src": "26755:18:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "--",
                    "prefix": true,
                    "src": "26779:48:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4127,
                        "name": "currentInvestorsByJurisdiction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2447,
                        "src": "26781:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 4129,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4128,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4118,
                        "src": "26812:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "26781:46:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4131,
                  "nodeType": "ExpressionStatement",
                  "src": "26779:48:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4133,
                        "name": "_userId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4092,
                        "src": "26855:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4134,
                        "name": "jurisdictionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4118,
                        "src": "26864:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4132,
                      "name": "InvestorDelisted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2379,
                      "src": "26838:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26838:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4136,
                  "nodeType": "EmitStatement",
                  "src": "26833:46:3"
                }
              ]
            },
            "documentation": null,
            "id": 4138,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_delistUser",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4092,
                  "name": "_userId",
                  "nodeType": "VariableDeclaration",
                  "scope": 4138,
                  "src": "26446:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4091,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26446:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "26440:25:3"
            },
            "returnParameters": {
              "id": 4094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26475:0:3"
            },
            "scope": 4398,
            "src": "26420:464:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4396,
              "nodeType": "Block",
              "src": "27267:2830:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4151,
                              "name": "callingContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2393,
                              "src": "27289:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6741",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$6741",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "id": 4150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "27281:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 4152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27281:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4153,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8534,
                            "src": "27309:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "27309:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "27281:38:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43414c4c5f5649415f434f4e54524143545f4f4e4c59",
                        "id": 4156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27321:24:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_92b2a3013703ae746c356e51fc94bb812f75fc3dbc457e1c918a9efc064ba556",
                          "typeString": "literal_string \"CALL_VIA_CONTRACT_ONLY\""
                        },
                        "value": "CALL_VIA_CONTRACT_ONLY"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_92b2a3013703ae746c356e51fc94bb812f75fc3dbc457e1c918a9efc064ba556",
                          "typeString": "literal_string \"CALL_VIA_CONTRACT_ONLY\""
                        }
                      ],
                      "id": 4149,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "27273:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27273:73:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4158,
                  "nodeType": "ExpressionStatement",
                  "src": "27273:73:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4163,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4159,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4142,
                        "src": "27357:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27372:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "27364:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27364:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "27357:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "27378:8:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4164,
                        "name": "_isSell",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4146,
                        "src": "27379:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27357:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4169,
                  "nodeType": "IfStatement",
                  "src": "27353:277:3",
                  "trueBody": {
                    "id": 4168,
                    "nodeType": "Block",
                    "src": "27388:242:3",
                    "statements": [
                      {
                        "expression": null,
                        "functionReturnParameters": 4148,
                        "id": 4167,
                        "nodeType": "Return",
                        "src": "27617:7:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    4171
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4171,
                      "name": "fromUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4396,
                      "src": "27635:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4170,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "27635:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4175,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4172,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "27656:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 4174,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4173,
                      "name": "_from",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4140,
                      "src": "27681:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "27656:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27635:52:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4177,
                            "name": "fromUserId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4171,
                            "src": "27708:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27730:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27722:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27722:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27708:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4182,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4140,
                            "src": "27736:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27753:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27745:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27745:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27736:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "27708:47:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "46524f4d5f555345525f554e4b4e4f574e",
                        "id": 4188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27763:19:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ee3389ad44190ed0f33b4e7504d7c41700bfd7561c1855fa1c3ae576ab2aa4e4",
                          "typeString": "literal_string \"FROM_USER_UNKNOWN\""
                        },
                        "value": "FROM_USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ee3389ad44190ed0f33b4e7504d7c41700bfd7561c1855fa1c3ae576ab2aa4e4",
                          "typeString": "literal_string \"FROM_USER_UNKNOWN\""
                        }
                      ],
                      "id": 4176,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "27693:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27693:95:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4190,
                  "nodeType": "ExpressionStatement",
                  "src": "27693:95:3"
                },
                {
                  "assignments": [
                    4192
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4192,
                      "name": "toUserId",
                      "nodeType": "VariableDeclaration",
                      "scope": 4396,
                      "src": "27794:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4191,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "27794:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4196,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4193,
                      "name": "authorizedWalletToUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2407,
                      "src": "27813:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 4195,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4194,
                      "name": "_to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4142,
                      "src": "27838:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "27813:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27794:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4198,
                            "name": "toUserId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4192,
                            "src": "27856:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27876:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27868:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27868:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27856:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4203,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4142,
                            "src": "27882:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "27897:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27889:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27889:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "27882:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "27856:43:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "544f5f555345525f554e4b4e4f574e",
                        "id": 4209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27901:17:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e5d022c59af6b4ab80e10da3ed61a65f10d10bab1fdf86fff324b645df9ef51c",
                          "typeString": "literal_string \"TO_USER_UNKNOWN\""
                        },
                        "value": "TO_USER_UNKNOWN"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e5d022c59af6b4ab80e10da3ed61a65f10d10bab1fdf86fff324b645df9ef51c",
                          "typeString": "literal_string \"TO_USER_UNKNOWN\""
                        }
                      ],
                      "id": 4197,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        8537,
                        8538
                      ],
                      "referencedDeclaration": 8538,
                      "src": "27848:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27848:71:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4211,
                  "nodeType": "ExpressionStatement",
                  "src": "27848:71:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "27928:23:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4212,
                          "name": "walletActivated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "27929:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 4214,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4213,
                          "name": "_from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4140,
                          "src": "27945:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27929:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4216,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4140,
                        "src": "27955:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27972:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "27964:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27964:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "27955:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27928:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4227,
                  "nodeType": "IfStatement",
                  "src": "27925:87:3",
                  "trueBody": {
                    "id": 4226,
                    "nodeType": "Block",
                    "src": "27975:37:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4223,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4140,
                              "src": "27999:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4222,
                            "name": "_activateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "27983:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27983:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4225,
                        "nodeType": "ExpressionStatement",
                        "src": "27983:22:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "28020:21:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 4228,
                          "name": "walletActivated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2459,
                          "src": "28021:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 4230,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 4229,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4142,
                          "src": "28037:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "28021:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4232,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4142,
                        "src": "28045:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28060:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "28052:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28052:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "28045:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "28020:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4243,
                  "nodeType": "IfStatement",
                  "src": "28017:81:3",
                  "trueBody": {
                    "id": 4242,
                    "nodeType": "Block",
                    "src": "28063:35:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4239,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4142,
                              "src": "28087:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4238,
                            "name": "_activateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3837,
                            "src": "28071:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28071:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4241,
                        "nodeType": "ExpressionStatement",
                        "src": "28071:20:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4249,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4246,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4140,
                            "src": "28132:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4244,
                            "name": "callingContract",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2393,
                            "src": "28106:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6741",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6686,
                          "src": "28106:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28106:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 4248,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4144,
                        "src": "28142:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "28106:42:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 4254,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4250,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4140,
                        "src": "28152:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28169:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 4251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "28161:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 4253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28161:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "28152:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "28106:65:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4261,
                  "nodeType": "IfStatement",
                  "src": "28103:151:3",
                  "trueBody": {
                    "id": 4260,
                    "nodeType": "Block",
                    "src": "28172:82:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4257,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4140,
                              "src": "28241:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4256,
                            "name": "_deactivateWallet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3952,
                            "src": "28223:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28223:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4259,
                        "nodeType": "ExpressionStatement",
                        "src": "28223:24:3"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4262,
                      "name": "fromUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4171,
                      "src": "28349:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 4263,
                      "name": "toUserId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4192,
                      "src": "28363:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "28349:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4395,
                  "nodeType": "IfStatement",
                  "src": "28345:1748:3",
                  "trueBody": {
                    "id": 4394,
                    "nodeType": "Block",
                    "src": "28373:1720:3",
                    "statements": [
                      {
                        "assignments": [
                          4266
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4266,
                            "name": "fromJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4394,
                            "src": "28381:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4265,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "28381:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4271,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4267,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "28407:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 4269,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4268,
                              "name": "fromUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4171,
                              "src": "28428:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28407:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 4270,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "28407:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28381:80:3"
                      },
                      {
                        "assignments": [
                          4273
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4273,
                            "name": "toJurisdictionId",
                            "nodeType": "VariableDeclaration",
                            "scope": 4394,
                            "src": "28469:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4272,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "28469:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4278,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4274,
                              "name": "authorizedUserIdInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2420,
                              "src": "28493:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                              }
                            },
                            "id": 4276,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4275,
                              "name": "toUserId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4192,
                              "src": "28514:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28493:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                              "typeString": "struct Whitelist.UserInfo storage ref"
                            }
                          },
                          "id": 4277,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "jurisdictionId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2409,
                          "src": "28493:45:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28469:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "28555:42:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4281,
                                    "name": "fromJurisdictionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4266,
                                    "src": "28578:18:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4280,
                                  "name": "_isJurisdictionHalted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3553,
                                  "src": "28556:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (uint256) view returns (bool)"
                                  }
                                },
                                "id": 4282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28556:41:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "46524f4d5f4a5552495344494354494f4e5f48414c544544",
                              "id": 4284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28599:26:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f8ec244d34d8299fb185828e46e7b8c4fdaab2a5033f297410cb89be9e7a38aa",
                                "typeString": "literal_string \"FROM_JURISDICTION_HALTED\""
                              },
                              "value": "FROM_JURISDICTION_HALTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f8ec244d34d8299fb185828e46e7b8c4fdaab2a5033f297410cb89be9e7a38aa",
                                "typeString": "literal_string \"FROM_JURISDICTION_HALTED\""
                              }
                            ],
                            "id": 4279,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "28547:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28547:79:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4286,
                        "nodeType": "ExpressionStatement",
                        "src": "28547:79:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "28642:40:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4289,
                                    "name": "toJurisdictionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4273,
                                    "src": "28665:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4288,
                                  "name": "_isJurisdictionHalted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3553,
                                  "src": "28643:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (uint256) view returns (bool)"
                                  }
                                },
                                "id": 4290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28643:39:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "544f5f4a5552495344494354494f4e5f48414c544544",
                              "id": 4292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28684:24:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_523e887b8f744fab2f5b4c59a1932f2c7848d2bd4de79ee85cb5edfcac79d75d",
                                "typeString": "literal_string \"TO_JURISDICTION_HALTED\""
                              },
                              "value": "TO_JURISDICTION_HALTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_523e887b8f744fab2f5b4c59a1932f2c7848d2bd4de79ee85cb5edfcac79d75d",
                                "typeString": "literal_string \"TO_JURISDICTION_HALTED\""
                              }
                            ],
                            "id": 4287,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "28634:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28634:75:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4294,
                        "nodeType": "ExpressionStatement",
                        "src": "28634:75:3"
                      },
                      {
                        "assignments": [
                          4296
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4296,
                            "name": "lockupLength",
                            "nodeType": "VariableDeclaration",
                            "scope": 4394,
                            "src": "28718:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4295,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "28718:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4302,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4297,
                              "name": "jurisdictionFlows",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2403,
                              "src": "28738:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(uint256 => uint256))"
                              }
                            },
                            "id": 4299,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4298,
                              "name": "fromJurisdictionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4266,
                              "src": "28756:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28738:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 4301,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4300,
                            "name": "toJurisdictionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4273,
                            "src": "28776:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28738:55:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28718:75:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4304,
                                "name": "lockupLength",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4296,
                                "src": "28809:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "28824:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "28809:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "44454e4945443a204a5552495344494354494f4e5f464c4f57",
                              "id": 4307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28827:27:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4ca982dd8018432375d833cfab27f3df4acfa3a1cb868cabf9fe78fa5c321994",
                                "typeString": "literal_string \"DENIED: JURISDICTION_FLOW\""
                              },
                              "value": "DENIED: JURISDICTION_FLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4ca982dd8018432375d833cfab27f3df4acfa3a1cb868cabf9fe78fa5c321994",
                                "typeString": "literal_string \"DENIED: JURISDICTION_FLOW\""
                              }
                            ],
                            "id": 4303,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              8537,
                              8538
                            ],
                            "referencedDeclaration": 8538,
                            "src": "28801:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28801:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4309,
                        "nodeType": "ExpressionStatement",
                        "src": "28801:54:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4310,
                              "name": "lockupLength",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4296,
                              "src": "29051:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 4311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "29066:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "29051:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4313,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4142,
                              "src": "29071:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29086:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "29078:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 4316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29078:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "29071:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "29051:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4333,
                        "nodeType": "IfStatement",
                        "src": "29047:268:3",
                        "trueBody": {
                          "id": 4332,
                          "nodeType": "Block",
                          "src": "29090:225:3",
                          "statements": [
                            {
                              "assignments": [
                                4320
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4320,
                                  "name": "lockupExpirationDate",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4332,
                                  "src": "29188:25:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4319,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "29188:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4325,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4321,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8524,
                                    "src": "29216:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 4322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "29216:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4323,
                                  "name": "lockupLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4296,
                                  "src": "29234:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "29216:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29188:58:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4327,
                                    "name": "toUserId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4192,
                                    "src": "29267:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4328,
                                    "name": "lockupExpirationDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4320,
                                    "src": "29277:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4329,
                                    "name": "_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4144,
                                    "src": "29299:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4326,
                                  "name": "_addLockup",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3310,
                                  "src": "29256:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 4330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29256:50:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4331,
                              "nodeType": "ExpressionStatement",
                              "src": "29256:50:3"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 4338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4334,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4140,
                            "src": "29327:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "29344:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 4335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "29336:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 4337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29336:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "29327:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4392,
                          "nodeType": "Block",
                          "src": "29473:614:3",
                          "statements": [
                            {
                              "assignments": [
                                4349
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4349,
                                  "name": "info",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4392,
                                  "src": "29523:21:3",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                    "typeString": "struct Whitelist.UserInfo"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 4348,
                                    "name": "UserInfo",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 2416,
                                    "src": "29523:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                      "typeString": "struct Whitelist.UserInfo"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4353,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4350,
                                  "name": "authorizedUserIdInfo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2420,
                                  "src": "29547:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$2416_storage_$",
                                    "typeString": "mapping(address => struct Whitelist.UserInfo storage ref)"
                                  }
                                },
                                "id": 4352,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4351,
                                  "name": "fromUserId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4171,
                                  "src": "29568:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "29547:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserInfo_$2416_storage",
                                  "typeString": "struct Whitelist.UserInfo storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29523:56:3"
                            },
                            {
                              "body": {
                                "id": 4363,
                                "nodeType": "Block",
                                "src": "29602:99:3",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4356,
                                          "name": "info",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4349,
                                          "src": "29633:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                            "typeString": "struct Whitelist.UserInfo storage pointer"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4357,
                                          "name": "fromUserId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4171,
                                          "src": "29639:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "66616c7365",
                                          "id": 4358,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "29651:5:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                            "typeString": "struct Whitelist.UserInfo storage pointer"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 4355,
                                        "name": "_processLockup",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3430,
                                        "src": "29618:14:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UserInfo_$2416_storage_ptr_$_t_address_$_t_bool_$returns$_t_bool_$",
                                          "typeString": "function (struct Whitelist.UserInfo storage pointer,address,bool) returns (bool)"
                                        }
                                      },
                                      "id": 4359,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "29618:39:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 4362,
                                    "nodeType": "IfStatement",
                                    "src": "29614:77:3",
                                    "trueBody": {
                                      "id": 4361,
                                      "nodeType": "Block",
                                      "src": "29659:32:3",
                                      "statements": [
                                        {
                                          "id": 4360,
                                          "nodeType": "Break",
                                          "src": "29673:5:3"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 4354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "29596:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "id": 4364,
                              "nodeType": "WhileStatement",
                              "src": "29589:112:3"
                            },
                            {
                              "assignments": [
                                4366
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4366,
                                  "name": "balance",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4392,
                                  "src": "29710:12:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4365,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "29710:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4371,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4369,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4140,
                                    "src": "29751:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4367,
                                    "name": "callingContract",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2393,
                                    "src": "29725:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$6741",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 4368,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6686,
                                  "src": "29725:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 4370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29725:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29710:47:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4373,
                                      "name": "balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4366,
                                      "src": "29883:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 4374,
                                      "name": "_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4144,
                                      "src": "29894:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "29883:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "494e53554646494349454e545f42414c414e4345",
                                    "id": 4376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29902:22:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58",
                                      "typeString": "literal_string \"INSUFFICIENT_BALANCE\""
                                    },
                                    "value": "INSUFFICIENT_BALANCE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58",
                                      "typeString": "literal_string \"INSUFFICIENT_BALANCE\""
                                    }
                                  ],
                                  "id": 4372,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    8537,
                                    8538
                                  ],
                                  "referencedDeclaration": 8538,
                                  "src": "29875:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29875:50:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4378,
                              "nodeType": "ExpressionStatement",
                              "src": "29875:50:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4380,
                                      "name": "_isSell",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4146,
                                      "src": "29954:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4387,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4381,
                                        "name": "balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4366,
                                        "src": "29976:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4385,
                                            "name": "_value",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4144,
                                            "src": "30014:6:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 4382,
                                              "name": "info",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4349,
                                              "src": "29987:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_UserInfo_$2416_storage_ptr",
                                                "typeString": "struct Whitelist.UserInfo storage pointer"
                                              }
                                            },
                                            "id": 4383,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "totalTokensLocked",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2411,
                                            "src": "29987:22:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 4384,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 5909,
                                          "src": "29987:26:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 4386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "29987:34:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "29976:45:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "29954:67:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "494e53554646494349454e545f5452414e5346455241424c455f42414c414e4345",
                                    "id": 4389,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30033:35:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_53c57ec1850e3b504336cf22322745518faa062e7fd6e6a714ca0f53c806aba5",
                                      "typeString": "literal_string \"INSUFFICIENT_TRANSFERABLE_BALANCE\""
                                    },
                                    "value": "INSUFFICIENT_TRANSFERABLE_BALANCE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_53c57ec1850e3b504336cf22322745518faa062e7fd6e6a714ca0f53c806aba5",
                                      "typeString": "literal_string \"INSUFFICIENT_TRANSFERABLE_BALANCE\""
                                    }
                                  ],
                                  "id": 4379,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    8537,
                                    8538
                                  ],
                                  "referencedDeclaration": 8538,
                                  "src": "29935:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29935:143:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4391,
                              "nodeType": "ExpressionStatement",
                              "src": "29935:143:3"
                            }
                          ]
                        },
                        "id": 4393,
                        "nodeType": "IfStatement",
                        "src": "29323:764:3",
                        "trueBody": {
                          "id": 4347,
                          "nodeType": "Block",
                          "src": "29348:119:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4340,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8524,
                                        "src": "29406:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 4341,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "29406:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 4342,
                                      "name": "startDate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2395,
                                      "src": "29425:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "29406:28:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "574149545f464f525f53544152545f44415445",
                                    "id": 4344,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29436:21:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a03dfa6d14b3bc88959b52a1b8b265f8c651c982c881a403c05672bc5cd0e955",
                                      "typeString": "literal_string \"WAIT_FOR_START_DATE\""
                                    },
                                    "value": "WAIT_FOR_START_DATE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a03dfa6d14b3bc88959b52a1b8b265f8c651c982c881a403c05672bc5cd0e955",
                                      "typeString": "literal_string \"WAIT_FOR_START_DATE\""
                                    }
                                  ],
                                  "id": 4339,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    8537,
                                    8538
                                  ],
                                  "referencedDeclaration": 8538,
                                  "src": "29398:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29398:60:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4346,
                              "nodeType": "ExpressionStatement",
                              "src": "29398:60:3"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by the callingContract before a transfer occurs.\n@dev This call will revert when the transfer is not authorized.\nThis is a mutable call to allow additional data to be recorded,\nsuch as when the user aquired their tokens.*",
            "id": 4397,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "authorizeTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4140,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27188:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4139,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27188:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4142,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27207:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4141,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27207:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4144,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27224:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4143,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27224:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4146,
                  "name": "_isSell",
                  "nodeType": "VariableDeclaration",
                  "scope": 4397,
                  "src": "27241:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4145,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27241:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "27182:75:3"
            },
            "returnParameters": {
              "id": 4148,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27267:0:3"
            },
            "scope": 4398,
            "src": "27156:2941:3",
            "stateMutability": "nonpayable",
            "superFunction": 4437,
            "visibility": "external"
          }
        ],
        "scope": 4399,
        "src": "464:29635:3"
      }
    ],
    "src": "0:30100:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.0",
  "updatedAt": "2020-12-11T05:03:09.323Z",
  "devdoc": {
    "methods": {
      "activateWallets(address[])": {
        "details": "This function can be called even user does not have balance only owner can call this function"
      },
      "approveNewUsers(address[],uint256[])": {
        "details": "The trader will be assigned a userId equal to their wallet address."
      },
      "authorizeTransfer(address,address,uint256,bool)": {
        "details": "This call will revert when the transfer is not authorized. This is a mutable call to allow additional data to be recorded, such as when the user aquired their tokens.*"
      },
      "deactivateWallet(address)": {
        "details": "This function can only be called when _wallet has zero balance"
      },
      "detectTransferRestriction(address,address,uint256)": {
        "details": "this function is from the erc-1404 standard and currently in use by the DAT for the `pay` feature."
      },
      "forceUnlockUpTo(address,uint256)": {
        "details": "This should generally remain unused. It could be used in combination with `addLockups` to fix an incorrect lockup expiration date or quantity."
      },
      "getJurisdictionFlow(uint256,uint256)": {
        "return": "if transfers between these jurisdictions are allowed and if a token lockup should apply: - 0 means transfers between these jurisdictions is blocked (the default) - 1 is supported with no token lockup required - >1 is supported and this value defines the lockup length in seconds"
      },
      "getLockedTokenCount(address)": {
        "details": "this is a `view`-only way to determine how many tokens are still locked (info.totalTokensLocked is only accurate after processing lockups which changes state)"
      },
      "getUserIdLockup(address,uint256)": {
        "details": "use `getAuthorizedUserIdInfo` to determine the range of applicable lockupIndex."
      },
      "halt(uint256[],uint256[])": {
        "details": "only owner can call this function",
        "params": {
          "_expirationTimestamps": "due when halt ends*",
          "_jurisdictionIds": "ids of the jurisdictions to halt"
        }
      },
      "initialize(address)": {
        "details": "Done with `initialize` instead of a constructor in order to support using this contract via an Upgradable Proxy."
      },
      "isOwner()": {
        "details": "Returns true if the caller is the current owner."
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "resume(uint256[])": {
        "details": "only owner can call this function",
        "params": {
          "_jurisdictionIds": "list of jurisdiction ids to resume*"
        }
      },
      "revokeUserWallets(address[])": {
        "details": "If this is called in error, you can restore access with `addApprovedUserWallets`."
      },
      "setInvestorLimit(uint256)": {
        "details": "only owner can call this function",
        "params": {
          "_limit": "new investor limit for contract"
        }
      },
      "setInvestorLimitForJurisdiction(uint256[],uint256[])": {
        "details": "only owner can call this function",
        "params": {
          "_jurisdictionIds": "jurisdiction id to update",
          "_limits": "new investor limit for jurisdiction"
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      },
      "updateJurisdictionFlows(uint256[],uint256[],uint256[])": {
        "details": "note that this can be called with a partial list, only including entries to be added or which have changed.",
        "params": {
          "_lockupLengths": "defines transfer restrictions where: - 0 is not supported (the default) - 1 is supported with no token lockup required - >1 is supported and this value defines the lockup length in seconds."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "activateWallets(address[])": {
        "notice": "activate wallet enlist user when user is not enlisted"
      },
      "addApprovedUserWallets(address[],address[])": {
        "notice": "Called by an operator to add wallets to known userIds."
      },
      "addLockups(address[],uint256[],uint256[])": {
        "notice": "Operators can manually add lockups for userIds. This may be used by the organization before transfering tokens from the initial supply."
      },
      "approveNewUsers(address[],uint256[])": {
        "notice": "Called by an operator to add new traders."
      },
      "authorizeTransfer(address,address,uint256,bool)": {
        "notice": "Called by the callingContract before a transfer occurs."
      },
      "configWhitelist(uint256,uint256)": {
        "notice": "Called by the owner to update the startDate or lockupGranularity."
      },
      "deactivateWallet(address)": {
        "notice": "deactivate wallet delist user if user does not have any wallet left"
      },
      "detectTransferRestriction(address,address,uint256)": {
        "notice": "Checks if there is a transfer restriction for the given addresses. Does not consider tokenLockup. Use `getLockedTokenCount` for that."
      },
      "forceUnlockUpTo(address,uint256)": {
        "notice": "Allows operators to remove lockup entries, bypassing the recorded expiration date."
      },
      "getAuthorizedUserIdInfo(address)": {
        "notice": "checks details for a given userId."
      },
      "getJurisdictionFlow(uint256,uint256)": {
        "notice": "checks for transfer restrictions between jurisdictions."
      },
      "getLockedTokenCount(address)": {
        "notice": "Returns the number of unlocked tokens a given userId has available."
      },
      "getUserIdLockup(address,uint256)": {
        "notice": "gets a specific lockup entry for a userId."
      },
      "halt(uint256[],uint256[])": {
        "notice": "halts jurisdictions of id `_jurisdictionIds` for `_duration` seconds"
      },
      "initialize(address)": {
        "notice": "Called once to complete configuration for this contract."
      },
      "processLockups(address,uint256)": {
        "notice": "Anyone can process lockups for a userId. This is generally unused but may be required if a given userId has a lot of individual lockup entries which are expired."
      },
      "resume(uint256[])": {
        "notice": "resume halted jurisdiction"
      },
      "revokeUserWallets(address[])": {
        "notice": "Called by an operator to revoke approval for the given wallets."
      },
      "setInvestorLimit(uint256)": {
        "notice": "changes max investors limit of the contract to `_limit`"
      },
      "setInvestorLimitForJurisdiction(uint256[],uint256[])": {
        "notice": "changes max investors limit of the `_jurisdcitionId` to `_limit`"
      },
      "updateJurisdictionFlows(uint256[],uint256[],uint256[])": {
        "notice": "Called by the owner to define or update jurisdiction flows."
      },
      "updateJurisdictionsForUserIds(address[],uint256[])": {
        "notice": "Called by an operator to change the jurisdiction for the given userIds."
      }
    },
    "notice": "whitelist which manages KYC approvals, token lockup, and transfer restrictions for a DAT token."
  }
}