{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "withdraw",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initialSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxInflationPerDay",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        }
      ],
      "name": "AuthorizedOperator",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "Burned",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "amount",
          "type": "uint64"
        }
      ],
      "name": "DepositStake",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "Minted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        }
      ],
      "name": "RevokedOperator",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "Sent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "SetPeriodInSeconds",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "withdrawPerPeriod",
          "type": "uint256"
        }
      ],
      "name": "SetStakeWithdrawPerPeriod",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "amount",
          "type": "uint64"
        }
      ],
      "name": "SlashStake",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "WithdawStake",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "holder",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "authorizeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "charter",
      "outputs": [
        {
          "internalType": "contract Charter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultOperators",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "granularity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        }
      ],
      "name": "isOperatorFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxNewSupplyPerPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "amount",
          "type": "uint64"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "operatorBurn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "operatorSend",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "periodInSeconds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "revokeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "send",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Charter",
          "name": "newCharter",
          "type": "address"
        }
      ],
      "name": "setCharter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newPeriodInSeconds",
          "type": "uint256"
        }
      ],
      "name": "setPeriodInSeconds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newStakeWithdrawPerPeriod",
          "type": "uint256"
        }
      ],
      "name": "setStakeWithdrawPerPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "amount",
          "type": "uint64"
        }
      ],
      "name": "slash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "amount",
          "type": "uint64"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "stakeOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakeWithdrawPerPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "userData",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "operatorData",
          "type": "bytes"
        }
      ],
      "name": "tokensReceived",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "holder",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "amount",
          "type": "uint64"
        }
      ],
      "name": "unstake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60806040523480156200001157600080fd5b5060405162002cf338038062002cf38339810160408190526200003491620008d5565b81816201518086868a8a60006040519080825280602002602001820160405280156200006a578160200160208202803683370190505b5082516200008090600290602086019062000701565b5081516200009690600390602085019062000701565b508051620000ac90600490602084019062000790565b5060005b81518110156200011c57600160056000848481518110620000d557620000d562000964565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620001138162000990565b915050620000b0565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200019757600080fd5b505af1158015620001ac573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b1580156200022a57600080fd5b505af11580156200023f573d6000803e3d6000fd5b5050505050505060008111620002c25760405162461bcd60e51b815260206004820152603d60248201527f54696d6544656c61795374616b696e67546f6b656e3a20706572696f64496e5360448201527f65636f6e6473206d7573742062652067726561746572207468616e203000000060648201526084015b60405180910390fd5b6009829055600a8190556040516329965a1d60e01b8152306004820181905260008051602062002cd383398151915260248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200033557600080fd5b505af11580156200034a573d6000803e3d6000fd5b5050600d80546001600160a01b03191633908117909155600e96909655505050600f919091555060109190915560006011819055601281905560408051602080820183528382528251908101909252918152620003aa92918591620003b6565b50505050505062000af0565b620003c6848484846001620003cc565b50505050565b6001600160a01b038516620004245760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f20616464726573736044820152606401620002b9565b600033905084600160008282546200043d9190620009ac565b90915550506001600160a01b038616600090815260208190526040812080548792906200046c908490620009ac565b9091555062000484905081600088888888886200051e565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d878787604051620004cd93929190620009f5565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b038616600482015260008051602062002cd38339815191526024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa1580156200058f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b5919062000a24565b90506001600160a01b0381161562000637576040516223de2960e01b81526001600160a01b038216906223de2990620005fd908b908b908b908b908b908b9060040162000a56565b600060405180830381600087803b1580156200061857600080fd5b505af11580156200062d573d6000803e3d6000fd5b50505050620006e8565b8115620006e8576200065d866001600160a01b0316620006f260201b62000e2d1760201c565b15620006e85760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401620002b9565b5050505050505050565b6001600160a01b03163b151590565b8280546200070f9062000ab4565b90600052602060002090601f0160209004810192826200073357600085556200077e565b82601f106200074e57805160ff19168380011785556200077e565b828001600101855582156200077e579182015b828111156200077e57825182559160200191906001019062000761565b506200078c929150620007e8565b5090565b8280548282559060005260206000209081019282156200077e579160200282015b828111156200077e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620007b1565b5b808211156200078c5760008155600101620007e9565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200083257818101518382015260200162000818565b83811115620003c65750506000910152565b600082601f8301126200085657600080fd5b81516001600160401b0380821115620008735762000873620007ff565b604051601f8301601f19908116603f011681019082821181831017156200089e576200089e620007ff565b81604052838152866020858801011115620008b857600080fd5b620008cb84602083016020890162000815565b9695505050505050565b60008060008060008060c08789031215620008ef57600080fd5b86516001600160401b03808211156200090757600080fd5b620009158a838b0162000844565b975060208901519150808211156200092c57600080fd5b506200093b89828a0162000844565b95505060408701519350606087015192506080870151915060a087015190509295509295509295565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201620009a557620009a56200097a565b5060010190565b60008219821115620009c257620009c26200097a565b500190565b60008151808452620009e181602086016020860162000815565b601f01601f19169290920160200192915050565b83815260606020820152600062000a106060830185620009c7565b8281036040840152620008cb8185620009c7565b60006020828403121562000a3757600080fd5b81516001600160a01b038116811462000a4f57600080fd5b9392505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009062000a9390830185620009c7565b82810360a084015262000aa78185620009c7565b9998505050505050505050565b600181811c9082168062000ac957607f821691505b60208210810362000aea57634e487b7160e01b600052602260045260246000fd5b50919050565b6121d38062000b006000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c8063959b8c3f1161010f578063d29ab87a116100a2578063f1082f1411610071578063f1082f141461044a578063fad8b32a14610452578063fc673c4f14610465578063fe9d93031461047857600080fd5b8063d29ab87a146103d8578063d3700604146103eb578063d95b6371146103fe578063dd62ed3e1461041157600080fd5b8063b55121a7116100de578063b55121a714610389578063b94ed2d114610392578063c1aadb4d146103a5578063c1dc0f07146103d057600080fd5b8063959b8c3f1461034857806395d89b411461035b5780639bd9bbc614610363578063a9059cbb1461037657600080fd5b8063313ce5671161018757806370a082311161015657806370a08231146102e65780638061766e1461030f578063813285381461032257806383f684a41461033557600080fd5b8063313ce5671461029157806342623360146102a0578063556f0dc7146102cc57806362ad1b83146102d357600080fd5b8063095ea7b3116101c3578063095ea7b31461023657806318160ddd1461025957806323b872dd1461026b5780632893c5b01461027e57600080fd5b806223de29146101e957806306e485381461020357806306fdde0314610221575b600080fd5b6102016101f7366004611b59565b5050505050505050565b005b61020b61048b565b6040516102189190611c09565b60405180910390f35b6102296104ed565b6040516102189190611ca3565b610249610244366004611cb6565b610576565b6040519015158152602001610218565b6001545b604051908152602001610218565b610249610279366004611ce2565b610590565b61020161028c366004611d3f565b6105d6565b60405160128152602001610218565b61025d6102ae366004611d74565b6001600160a01b03166000908152600b602052604090206001015490565b600161025d565b6102016102e1366004611e33565b61063f565b61025d6102f4366004611d74565b6001600160a01b031660009081526020819052604090205490565b61020161031d366004611ec5565b610684565b610201610330366004611d3f565b61072e565b610201610343366004611d3f565b61080a565b610201610356366004611d74565b610835565b610229610952565b610201610371366004611ede565b610961565b610249610384366004611cb6565b610984565b61025d600e5481565b6102016103a0366004611d74565b6109bc565b600c546103b8906001600160a01b031681565b6040516001600160a01b039091168152602001610218565b600a5461025d565b6102016103e6366004611f36565b610a0b565b6102016103f9366004611ec5565b610b76565b61024961040c366004611f51565b610c1d565b61025d61041f366004611f51565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b60095461025d565b610201610460366004611d74565b610cbf565b610201610473366004611f8a565b610dda565b610201610486366004612009565b610e12565b606060048054806020026020016040519081016040528092919081815260200182805480156104e357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104c5575b5050505050905090565b6060600280546104fc9061204f565b80601f01602080910402602001604051908101604052809291908181526020018280546105289061204f565b80156104e35780601f1061054a576101008083540402835291602001916104e3565b820191906000526020600020905b81548152906001019060200180831161055857509395945050505050565b600033610584818585610e3c565b60019150505b92915050565b60003361059e858285610f63565b6105cb85858560405180602001604052806000815250604051806020016040528060008152506000610fef565b506001949350505050565b336105e057600080fd5b600c546001600160a01b031633146105f757600080fd5b61063b8261061661060760015490565b846001600160401b03166110eb565b6040518060200160405280600081525060405180602001604052806000815250611182565b5050565b6106493386610c1d565b61066e5760405162461bcd60e51b815260040161066590612089565b60405180910390fd5b61067d85858585856001610fef565b5050505050565b3361068e57600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070591906120d5565b6001600160a01b0316336001600160a01b03161461072257600080fd5b61072b81611190565b50565b6001600160a01b03821661074157600080fd5b6001600160a01b0382166000908152600b6020526040812060010180546001600160401b0384169290610775908490612108565b90915550506001600160a01b0382166000908152600b602090815260408083204290558051808301825283815281519283019091529181526107c591339130916001600160401b0386169161063f565b6040516001600160401b038216906001600160a01b0384169033907fb33072c506a67dc50f69d8b7e118912f66c80a3cfb306f174d7289adc3ac18b190600090a45050565b3361081457600080fd5b600c546001600160a01b0316331461082b57600080fd5b61063b82826111c3565b6001600160a01b03811633036108995760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b6064820152608401610665565b6001600160a01b03811660009081526005602052604090205460ff16156108ea573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610919565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546104fc9061204f565b61097f33848484604051806020016040528060008152506001610fef565b505050565b60006109b333848460405180602001604052806000815250604051806020016040528060008152506000610fef565b50600192915050565b600d546001600160a01b031633146109d357600080fd5b600c546001600160a01b0316156109e957600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600b6020526040902054600a54610a288242612120565b11610aaf5760405162461bcd60e51b815260206004820152604b60248201527f54696d6544656c61795374616b696e67546f6b656e3a204e6f7420656e6f756760448201527f682074696d6520686173207061737365642073696e636520746865206c61737460648201526a081dda5d1a191c985dd85b60aa1b608482015260a401610665565b6000610ae1610ac9600954856001600160401b0316611302565b336000908152600b6020526040902060010154611302565b9050610b1030338360405180602001604052806000815250604051806020016040528060008152506000610fef565b336000908152600b602052604081206001018054839290610b32908490612120565b9091555050336000818152600b6020526040808220429055518392917f84ebd516d047a386d279fa31aed3b1b821d8ffffebd13fadc56f9baee2e5501a91a3505050565b33610b8057600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf791906120d5565b6001600160a01b0316336001600160a01b031614610c1457600080fd5b61072b81611319565b6000816001600160a01b0316836001600160a01b03161480610c8857506001600160a01b03831660009081526005602052604090205460ff168015610c8857506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b80610cb857506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b336001600160a01b03821603610d215760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b6064820152608401610665565b6001600160a01b03811660009081526005602052604090205460ff1615610d75573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610da1565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b610de43385610c1d565b610e005760405162461bcd60e51b815260040161066590612089565b610e0c848484846113c2565b50505050565b61063b338383604051806020016040528060008152506113c2565b6001600160a01b03163b151590565b6001600160a01b038316610ea05760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610665565b6001600160a01b038216610f025760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610665565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600860209081526040808320938616835292905220546000198114610e0c5781811015610fe25760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610665565b610e0c8484848403610e3c565b6001600160a01b0386166110545760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610665565b6001600160a01b0385166110b65760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610665565b336110c5818888888888611577565b6110d381888888888861169e565b6110e281888888888888611804565b50505050505050565b600080601254426110fc9190612120565b9050600f548111156111175760108490556000601155426012555b600e54836011546111289190612108565b1115611163576000601154600e546111409190612120565b905080601160008282546111549190612108565b9091555090925061058a915050565b82601160008282546111759190612108565b9091555092949350505050565b610e0c8484848460016119bf565b600981905560405181907ffbc4496ca6532747599b23a2368944516b905f7ac9c2c6cfc77d8952a1f0a22b90600090a250565b6001600160a01b0382166000908152600b60205260409020600101546001600160401b03821611156112515760405162461bcd60e51b815260206004820152603160248201527f54696d6544656c61795374616b696e67546f6b656e3a204e6f7420656e6f75676044820152700d040e8ded6cadce640e8de40e6d8c2e6d607b1b6064820152608401610665565b6001600160a01b0382166000908152600b6020526040812060010180546001600160401b0384169290611285908490612120565b925050819055506112bf30826001600160401b031660405180602001604052806000815250604051806020016040528060008152506113c2565b6040516001600160401b038216906001600160a01b038416907fcfd6a5fd61d8e12d0c5d1c1e5bd4ace166cec6b33e227c4af25be2cbe17dd21f90600090a35050565b6000818311156113125781610cb8565b5090919050565b6000811161138f5760405162461bcd60e51b815260206004820152603d60248201527f54696d6544656c61795374616b696e67546f6b656e3a20706572696f64496e5360448201527f65636f6e6473206d7573742062652067726561746572207468616e20300000006064820152608401610665565b600a81905560405181907fdfcdd39fe8245a262861d5362cbc8dcb2805b9c7a8e3d2e4dd24fd1f98835c3f90600090a250565b6001600160a01b0384166114235760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610665565b3361143381866000878787611577565b6001600160a01b038516600090815260208190526040902054848110156114a85760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b6064820152608401610665565b6001600160a01b03861660009081526020819052604081208683039055600180548792906114d7908490612120565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161152593929190612137565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c91906120d5565b90506001600160a01b038116156110e257604051633ad5cbc160e11b81526001600160a01b038216906375ab978290611663908a908a908a908a908a908a9060040161216c565b600060405180830381600087803b15801561167d57600080fd5b505af1158015611691573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b038516600090815260208190526040902054838110156117175760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610665565b6001600160a01b0380871660009081526020819052604080822087850390559187168152908120805486929061174e908490612108565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc826146779878787876040516117a693929190612137565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516117f391815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a991906120d5565b90506001600160a01b03811615611925576040516223de2960e01b81526001600160a01b038216906223de29906118ee908b908b908b908b908b908b9060040161216c565b600060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506101f7565b81156101f7576001600160a01b0386163b156101f75760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401610665565b6001600160a01b038516611a155760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f20616464726573736044820152606401610665565b60003390508460016000828254611a2c9190612108565b90915550506001600160a01b03861660009081526020819052604081208054879290611a59908490612108565b90915550611a6f90508160008888888888611804565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d878787604051611ab693929190612137565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611567565b6001600160a01b038116811461072b57600080fd5b60008083601f840112611b2357600080fd5b5081356001600160401b03811115611b3a57600080fd5b602083019150836020828501011115611b5257600080fd5b9250929050565b60008060008060008060008060c0898b031215611b7557600080fd5b8835611b8081611afc565b97506020890135611b9081611afc565b96506040890135611ba081611afc565b95506060890135945060808901356001600160401b0380821115611bc357600080fd5b611bcf8c838d01611b11565b909650945060a08b0135915080821115611be857600080fd5b50611bf58b828c01611b11565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015611c4a5783516001600160a01b031683529284019291840191600101611c25565b50909695505050505050565b6000815180845260005b81811015611c7c57602081850181015186830182015201611c60565b81811115611c8e576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610cb86020830184611c56565b60008060408385031215611cc957600080fd5b8235611cd481611afc565b946020939093013593505050565b600080600060608486031215611cf757600080fd5b8335611d0281611afc565b92506020840135611d1281611afc565b929592945050506040919091013590565b80356001600160401b0381168114611d3a57600080fd5b919050565b60008060408385031215611d5257600080fd5b8235611d5d81611afc565b9150611d6b60208401611d23565b90509250929050565b600060208284031215611d8657600080fd5b8135610cb881611afc565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611db857600080fd5b81356001600160401b0380821115611dd257611dd2611d91565b604051601f8301601f19908116603f01168101908282118183101715611dfa57611dfa611d91565b81604052838152866020858801011115611e1357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215611e4b57600080fd5b8535611e5681611afc565b94506020860135611e6681611afc565b93506040860135925060608601356001600160401b0380821115611e8957600080fd5b611e9589838a01611da7565b93506080880135915080821115611eab57600080fd5b50611eb888828901611da7565b9150509295509295909350565b600060208284031215611ed757600080fd5b5035919050565b600080600060608486031215611ef357600080fd5b8335611efe81611afc565b92506020840135915060408401356001600160401b03811115611f2057600080fd5b611f2c86828701611da7565b9150509250925092565b600060208284031215611f4857600080fd5b610cb882611d23565b60008060408385031215611f6457600080fd5b8235611f6f81611afc565b91506020830135611f7f81611afc565b809150509250929050565b60008060008060808587031215611fa057600080fd5b8435611fab81611afc565b93506020850135925060408501356001600160401b0380821115611fce57600080fd5b611fda88838901611da7565b93506060870135915080821115611ff057600080fd5b50611ffd87828801611da7565b91505092959194509250565b6000806040838503121561201c57600080fd5b8235915060208301356001600160401b0381111561203957600080fd5b61204585828601611da7565b9150509250929050565b600181811c9082168061206357607f821691505b60208210810361208357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b6000602082840312156120e757600080fd5b8151610cb881611afc565b634e487b7160e01b600052601160045260246000fd5b6000821982111561211b5761211b6120f2565b500190565b600082821015612132576121326120f2565b500390565b8381526060602082015260006121506060830185611c56565b82810360408401526121628185611c56565b9695505050505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906121a790830185611c56565b82810360a08401526121b98185611c56565b999850505050505050505056fea164736f6c634300080d000ab281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b",
    "sourceMap": "1160:1167:14:-:0;;;1238:480;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1573:13;1600:18;1632:5;1461:8;1471:6;1494:4;1500:6;1522:1;1508:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1508:16:14;-1:-1:-1;2448:13:4;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2471:17:4;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;2499:42:4;;;;:22;;:42;;;;;:::i;:::-;;2556:9;2551:126;2575:17;:24;2571:1;:28;2551:126;;;2662:4;2620:17;:39;2638:17;2656:1;2638:20;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2620:39:4;;;;;;;;;;;-1:-1:-1;2620:39:4;:46;;-1:-1:-1;;2620:46:4;;;;;;;;;;2601:3;;;;:::i;:::-;;;;2551:126;;;-1:-1:-1;2718:97:4;;-1:-1:-1;;;2718:97:4;;2768:4;2718:97;;;2558:34:22;;;2775:24:4;2608:18:22;;;2601:34;2651:18;;;2644:43;1242:42:4;;2718:41;;2493:18:22;;2718:97:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2825:96:4;;-1:-1:-1;;;2825:96:4;;2875:4;2825:96;;;2558:34:22;;;2882:23:4;2608:18:22;;;2601:34;2651:18;;;2644:43;1242:42:4;;-1:-1:-1;2825:41:4;;-1:-1:-1;2493:18:22;;2825:96:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:612;;;833:1:20;824:6;:10;803:118;;;;-1:-1:-1;;;803:118:20;;2900:2:22;803:118:20;;;2882:21:22;2939:2;2919:18;;;2912:30;2978:34;2958:18;;;2951:62;3049:31;3029:18;;;3022:59;3098:19;;803:118:20;;;;;;;;;931:23;:34;;;975:16;:25;;;1010:153;;-1:-1:-1;;;1010:153:20;;1073:4;1010:153;;;2558:34:22;;;-1:-1:-1;;;;;;;;;;;2608:18:22;;;2601:34;2651:18;;;2644:43;1242:42:4;;1010:41:20;;2493:18:22;;1010:153:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;664:8:14;:21;;-1:-1:-1;;;;;;664:21:14;675:10;664:21;;;;;;656::17;:46;;;;-1:-1:-1;;;712:20:17;:44;;;;-1:-1:-1;766:24:17;:41;;;;664:8:14;817:25:17;:29;;;856:11;:15;;;1671:40:14::4;::::0;;::::4;::::0;;::::4;::::0;;;;;;;;;::::4;::::0;;;;;;::::4;::::0;675:10;1689:13;;1671:5:::4;:40::i;:::-;1238:480:::0;;;;;;1160:1167;;9852:222:4;10015:52;10021:7;10030:6;10038:8;10048:12;10062:4;10015:5;:52::i;:::-;9852:222;;;;:::o;10696:726::-;-1:-1:-1;;;;;10901:21:4;;10893:66;;;;-1:-1:-1;;;10893:66:4;;3330:2:22;10893:66:4;;;3312:21:22;;;3349:18;;;3342:30;3408:34;3388:18;;;3381:62;3460:18;;10893:66:4;3128:356:22;10893:66:4;10970:16;719:10:9;10970:31:4;-1:-1:-1;11132:6:4;11116:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;11148:18:4;;:9;:18;;;;;;;;;;:28;;11170:6;;11148:9;:28;;11170:6;;11148:28;:::i;:::-;;;;-1:-1:-1;11187:103:4;;-1:-1:-1;11207:8:4;11225:1;11229:7;11238:6;11246:8;11256:12;11270:19;11187;:103::i;:::-;11323:7;-1:-1:-1;;;;;11306:57:4;11313:8;-1:-1:-1;;;;;11306:57:4;;11332:6;11340:8;11350:12;11306:57;;;;;;;;:::i;:::-;;;;;;;;11378:37;;4483:25:22;;;-1:-1:-1;;;;;11378:37:4;;;11395:1;;11378:37;;4471:2:22;4456:18;11378:37:4;;;;;;;10883:539;10696:726;;;;;:::o;16434:676::-;16701:79;;-1:-1:-1;;;16701:79:4;;-1:-1:-1;;;;;4711:32:22;;16701:79:4;;;4693:51:22;-1:-1:-1;;;;;;;;;;;4760:18:22;;;4753:34;16679:19:4;;1242:42;;16701:41;;4666:18:22;;16701:79:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16679:101;-1:-1:-1;;;;;;16794:25:4;;;16790:314;;16835:96;;-1:-1:-1;;;16835:96:4;;-1:-1:-1;;;;;16835:44:4;;;;;:96;;16880:8;;16890:4;;16896:2;;16900:6;;16908:8;;16918:12;;16835:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16790:314;;;16952:19;16948:156;;;16996:15;:2;-1:-1:-1;;;;;16996:13:4;;;;;;:15;;:::i;:::-;16995:16;16987:106;;;;-1:-1:-1;;;16987:106:4;;6030:2:22;16987:106:4;;;6012:21:22;6069:2;6049:18;;;6042:30;6108:34;6088:18;;;6081:62;6179:34;6159:18;;;6152:62;-1:-1:-1;;;6230:19:22;;;6223:44;6284:19;;16987:106:4;5828:481:22;16987:106:4;16669:441;16434:676;;;;;;;:::o;1175:320:8:-;-1:-1:-1;;;;;1465:19:8;;:23;;;1175:320::o;1160:1167:14:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1160:1167:14;;;-1:-1:-1;1160:1167:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1160:1167:14;-1:-1:-1;;;;;1160:1167:14;;;;;;;;;;;-1:-1:-1;1160:1167:14;;;;;;;;;;;;;;;;;;;;;14:127:22;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:258;218:1;228:113;242:6;239:1;236:13;228:113;;;318:11;;;312:18;299:11;;;292:39;264:2;257:10;228:113;;;359:6;356:1;353:13;350:48;;;-1:-1:-1;;394:1:22;376:16;;369:27;146:258::o;409:686::-;463:5;516:3;509:4;501:6;497:17;493:27;483:55;;534:1;531;524:12;483:55;557:13;;-1:-1:-1;;;;;619:10:22;;;616:36;;;632:18;;:::i;:::-;707:2;701:9;675:2;761:13;;-1:-1:-1;;757:22:22;;;781:2;753:31;749:40;737:53;;;805:18;;;825:22;;;802:46;799:72;;;851:18;;:::i;:::-;891:10;887:2;880:22;926:2;918:6;911:18;972:3;965:4;960:2;952:6;948:15;944:26;941:35;938:55;;;989:1;986;979:12;938:55;1002:63;1062:2;1055:4;1047:6;1043:17;1036:4;1028:6;1024:17;1002:63;:::i;:::-;1083:6;409:686;-1:-1:-1;;;;;;409:686:22:o;1100:809::-;1235:6;1243;1251;1259;1267;1275;1328:3;1316:9;1307:7;1303:23;1299:33;1296:53;;;1345:1;1342;1335:12;1296:53;1372:16;;-1:-1:-1;;;;;1437:14:22;;;1434:34;;;1464:1;1461;1454:12;1434:34;1487:61;1540:7;1531:6;1520:9;1516:22;1487:61;:::i;:::-;1477:71;;1594:2;1583:9;1579:18;1573:25;1557:41;;1623:2;1613:8;1610:16;1607:36;;;1639:1;1636;1629:12;1607:36;;1662:63;1717:7;1706:8;1695:9;1691:24;1662:63;:::i;:::-;1652:73;;;1765:2;1754:9;1750:18;1744:25;1734:35;;1809:2;1798:9;1794:18;1788:25;1778:35;;1853:3;1842:9;1838:19;1832:26;1822:36;;1898:3;1887:9;1883:19;1877:26;1867:36;;1100:809;;;;;;;;:::o;1914:127::-;1975:10;1970:3;1966:20;1963:1;1956:31;2006:4;2003:1;1996:15;2030:4;2027:1;2020:15;2046:127;2107:10;2102:3;2098:20;2095:1;2088:31;2138:4;2135:1;2128:15;2162:4;2159:1;2152:15;2178:135;2217:3;2238:17;;;2235:43;;2258:18;;:::i;:::-;-1:-1:-1;2305:1:22;2294:13;;2178:135::o;3489:128::-;3529:3;3560:1;3556:6;3553:1;3550:13;3547:39;;;3566:18;;:::i;:::-;-1:-1:-1;3602:9:22;;3489:128::o;3622:257::-;3663:3;3701:5;3695:12;3728:6;3723:3;3716:19;3744:63;3800:6;3793:4;3788:3;3784:14;3777:4;3770:5;3766:16;3744:63;:::i;:::-;3861:2;3840:15;-1:-1:-1;;3836:29:22;3827:39;;;;3868:4;3823:50;;3622:257;-1:-1:-1;;3622:257:22:o;3884:448::-;4105:6;4094:9;4087:25;4148:2;4143;4132:9;4128:18;4121:30;4068:4;4174:44;4214:2;4203:9;4199:18;4191:6;4174:44;:::i;:::-;4266:9;4258:6;4254:22;4249:2;4238:9;4234:18;4227:50;4294:32;4319:6;4311;4294:32;:::i;4798:290::-;4868:6;4921:2;4909:9;4900:7;4896:23;4892:32;4889:52;;;4937:1;4934;4927:12;4889:52;4963:16;;-1:-1:-1;;;;;5008:31:22;;4998:42;;4988:70;;5054:1;5051;5044:12;4988:70;5077:5;4798:290;-1:-1:-1;;;4798:290:22:o;5093:730::-;-1:-1:-1;;;;;5436:15:22;;;5418:34;;5488:15;;;5483:2;5468:18;;5461:43;5540:15;;5535:2;5520:18;;5513:43;5587:2;5572:18;;5565:34;;;5636:3;5630;5615:19;;5608:32;;;5361:4;;5663:45;;5688:19;;5680:6;5663:45;:::i;:::-;5757:9;5749:6;5745:22;5739:3;5728:9;5724:19;5717:51;5785:32;5810:6;5802;5785:32;:::i;:::-;5777:40;5093:730;-1:-1:-1;;;;;;;;;5093:730:22:o;6314:380::-;6393:1;6389:12;;;;6436;;;6457:61;;6511:4;6503:6;6499:17;6489:27;;6457:61;6564:2;6556:6;6553:14;6533:18;6530:38;6527:161;;6610:10;6605:3;6601:20;6598:1;6591:31;6645:4;6642:1;6635:15;6673:4;6670:1;6663:15;6527:161;;6314:380;;;:::o;:::-;1160:1167:14;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106101e45760003560e01c8063959b8c3f1161010f578063d29ab87a116100a2578063f1082f1411610071578063f1082f141461044a578063fad8b32a14610452578063fc673c4f14610465578063fe9d93031461047857600080fd5b8063d29ab87a146103d8578063d3700604146103eb578063d95b6371146103fe578063dd62ed3e1461041157600080fd5b8063b55121a7116100de578063b55121a714610389578063b94ed2d114610392578063c1aadb4d146103a5578063c1dc0f07146103d057600080fd5b8063959b8c3f1461034857806395d89b411461035b5780639bd9bbc614610363578063a9059cbb1461037657600080fd5b8063313ce5671161018757806370a082311161015657806370a08231146102e65780638061766e1461030f578063813285381461032257806383f684a41461033557600080fd5b8063313ce5671461029157806342623360146102a0578063556f0dc7146102cc57806362ad1b83146102d357600080fd5b8063095ea7b3116101c3578063095ea7b31461023657806318160ddd1461025957806323b872dd1461026b5780632893c5b01461027e57600080fd5b806223de29146101e957806306e485381461020357806306fdde0314610221575b600080fd5b6102016101f7366004611b59565b5050505050505050565b005b61020b61048b565b6040516102189190611c09565b60405180910390f35b6102296104ed565b6040516102189190611ca3565b610249610244366004611cb6565b610576565b6040519015158152602001610218565b6001545b604051908152602001610218565b610249610279366004611ce2565b610590565b61020161028c366004611d3f565b6105d6565b60405160128152602001610218565b61025d6102ae366004611d74565b6001600160a01b03166000908152600b602052604090206001015490565b600161025d565b6102016102e1366004611e33565b61063f565b61025d6102f4366004611d74565b6001600160a01b031660009081526020819052604090205490565b61020161031d366004611ec5565b610684565b610201610330366004611d3f565b61072e565b610201610343366004611d3f565b61080a565b610201610356366004611d74565b610835565b610229610952565b610201610371366004611ede565b610961565b610249610384366004611cb6565b610984565b61025d600e5481565b6102016103a0366004611d74565b6109bc565b600c546103b8906001600160a01b031681565b6040516001600160a01b039091168152602001610218565b600a5461025d565b6102016103e6366004611f36565b610a0b565b6102016103f9366004611ec5565b610b76565b61024961040c366004611f51565b610c1d565b61025d61041f366004611f51565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b60095461025d565b610201610460366004611d74565b610cbf565b610201610473366004611f8a565b610dda565b610201610486366004612009565b610e12565b606060048054806020026020016040519081016040528092919081815260200182805480156104e357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116104c5575b5050505050905090565b6060600280546104fc9061204f565b80601f01602080910402602001604051908101604052809291908181526020018280546105289061204f565b80156104e35780601f1061054a576101008083540402835291602001916104e3565b820191906000526020600020905b81548152906001019060200180831161055857509395945050505050565b600033610584818585610e3c565b60019150505b92915050565b60003361059e858285610f63565b6105cb85858560405180602001604052806000815250604051806020016040528060008152506000610fef565b506001949350505050565b336105e057600080fd5b600c546001600160a01b031633146105f757600080fd5b61063b8261061661060760015490565b846001600160401b03166110eb565b6040518060200160405280600081525060405180602001604052806000815250611182565b5050565b6106493386610c1d565b61066e5760405162461bcd60e51b815260040161066590612089565b60405180910390fd5b61067d85858585856001610fef565b5050505050565b3361068e57600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070591906120d5565b6001600160a01b0316336001600160a01b03161461072257600080fd5b61072b81611190565b50565b6001600160a01b03821661074157600080fd5b6001600160a01b0382166000908152600b6020526040812060010180546001600160401b0384169290610775908490612108565b90915550506001600160a01b0382166000908152600b602090815260408083204290558051808301825283815281519283019091529181526107c591339130916001600160401b0386169161063f565b6040516001600160401b038216906001600160a01b0384169033907fb33072c506a67dc50f69d8b7e118912f66c80a3cfb306f174d7289adc3ac18b190600090a45050565b3361081457600080fd5b600c546001600160a01b0316331461082b57600080fd5b61063b82826111c3565b6001600160a01b03811633036108995760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b6064820152608401610665565b6001600160a01b03811660009081526005602052604090205460ff16156108ea573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610919565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546104fc9061204f565b61097f33848484604051806020016040528060008152506001610fef565b505050565b60006109b333848460405180602001604052806000815250604051806020016040528060008152506000610fef565b50600192915050565b600d546001600160a01b031633146109d357600080fd5b600c546001600160a01b0316156109e957600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600b6020526040902054600a54610a288242612120565b11610aaf5760405162461bcd60e51b815260206004820152604b60248201527f54696d6544656c61795374616b696e67546f6b656e3a204e6f7420656e6f756760448201527f682074696d6520686173207061737365642073696e636520746865206c61737460648201526a081dda5d1a191c985dd85b60aa1b608482015260a401610665565b6000610ae1610ac9600954856001600160401b0316611302565b336000908152600b6020526040902060010154611302565b9050610b1030338360405180602001604052806000815250604051806020016040528060008152506000610fef565b336000908152600b602052604081206001018054839290610b32908490612120565b9091555050336000818152600b6020526040808220429055518392917f84ebd516d047a386d279fa31aed3b1b821d8ffffebd13fadc56f9baee2e5501a91a3505050565b33610b8057600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf791906120d5565b6001600160a01b0316336001600160a01b031614610c1457600080fd5b61072b81611319565b6000816001600160a01b0316836001600160a01b03161480610c8857506001600160a01b03831660009081526005602052604090205460ff168015610c8857506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b80610cb857506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b336001600160a01b03821603610d215760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b6064820152608401610665565b6001600160a01b03811660009081526005602052604090205460ff1615610d75573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610da1565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b610de43385610c1d565b610e005760405162461bcd60e51b815260040161066590612089565b610e0c848484846113c2565b50505050565b61063b338383604051806020016040528060008152506113c2565b6001600160a01b03163b151590565b6001600160a01b038316610ea05760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610665565b6001600160a01b038216610f025760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610665565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600860209081526040808320938616835292905220546000198114610e0c5781811015610fe25760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610665565b610e0c8484848403610e3c565b6001600160a01b0386166110545760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b6064820152608401610665565b6001600160a01b0385166110b65760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610665565b336110c5818888888888611577565b6110d381888888888861169e565b6110e281888888888888611804565b50505050505050565b600080601254426110fc9190612120565b9050600f548111156111175760108490556000601155426012555b600e54836011546111289190612108565b1115611163576000601154600e546111409190612120565b905080601160008282546111549190612108565b9091555090925061058a915050565b82601160008282546111759190612108565b9091555092949350505050565b610e0c8484848460016119bf565b600981905560405181907ffbc4496ca6532747599b23a2368944516b905f7ac9c2c6cfc77d8952a1f0a22b90600090a250565b6001600160a01b0382166000908152600b60205260409020600101546001600160401b03821611156112515760405162461bcd60e51b815260206004820152603160248201527f54696d6544656c61795374616b696e67546f6b656e3a204e6f7420656e6f75676044820152700d040e8ded6cadce640e8de40e6d8c2e6d607b1b6064820152608401610665565b6001600160a01b0382166000908152600b6020526040812060010180546001600160401b0384169290611285908490612120565b925050819055506112bf30826001600160401b031660405180602001604052806000815250604051806020016040528060008152506113c2565b6040516001600160401b038216906001600160a01b038416907fcfd6a5fd61d8e12d0c5d1c1e5bd4ace166cec6b33e227c4af25be2cbe17dd21f90600090a35050565b6000818311156113125781610cb8565b5090919050565b6000811161138f5760405162461bcd60e51b815260206004820152603d60248201527f54696d6544656c61795374616b696e67546f6b656e3a20706572696f64496e5360448201527f65636f6e6473206d7573742062652067726561746572207468616e20300000006064820152608401610665565b600a81905560405181907fdfcdd39fe8245a262861d5362cbc8dcb2805b9c7a8e3d2e4dd24fd1f98835c3f90600090a250565b6001600160a01b0384166114235760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610665565b3361143381866000878787611577565b6001600160a01b038516600090815260208190526040902054848110156114a85760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b6064820152608401610665565b6001600160a01b03861660009081526020819052604081208683039055600180548792906114d7908490612120565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161152593929190612137565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c91906120d5565b90506001600160a01b038116156110e257604051633ad5cbc160e11b81526001600160a01b038216906375ab978290611663908a908a908a908a908a908a9060040161216c565b600060405180830381600087803b15801561167d57600080fd5b505af1158015611691573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b038516600090815260208190526040902054838110156117175760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610665565b6001600160a01b0380871660009081526020819052604080822087850390559187168152908120805486929061174e908490612108565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc826146779878787876040516117a693929190612137565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516117f391815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015611885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a991906120d5565b90506001600160a01b03811615611925576040516223de2960e01b81526001600160a01b038216906223de29906118ee908b908b908b908b908b908b9060040161216c565b600060405180830381600087803b15801561190857600080fd5b505af115801561191c573d6000803e3d6000fd5b505050506101f7565b81156101f7576001600160a01b0386163b156101f75760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401610665565b6001600160a01b038516611a155760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f20616464726573736044820152606401610665565b60003390508460016000828254611a2c9190612108565b90915550506001600160a01b03861660009081526020819052604081208054879290611a59908490612108565b90915550611a6f90508160008888888888611804565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d878787604051611ab693929190612137565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611567565b6001600160a01b038116811461072b57600080fd5b60008083601f840112611b2357600080fd5b5081356001600160401b03811115611b3a57600080fd5b602083019150836020828501011115611b5257600080fd5b9250929050565b60008060008060008060008060c0898b031215611b7557600080fd5b8835611b8081611afc565b97506020890135611b9081611afc565b96506040890135611ba081611afc565b95506060890135945060808901356001600160401b0380821115611bc357600080fd5b611bcf8c838d01611b11565b909650945060a08b0135915080821115611be857600080fd5b50611bf58b828c01611b11565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015611c4a5783516001600160a01b031683529284019291840191600101611c25565b50909695505050505050565b6000815180845260005b81811015611c7c57602081850181015186830182015201611c60565b81811115611c8e576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610cb86020830184611c56565b60008060408385031215611cc957600080fd5b8235611cd481611afc565b946020939093013593505050565b600080600060608486031215611cf757600080fd5b8335611d0281611afc565b92506020840135611d1281611afc565b929592945050506040919091013590565b80356001600160401b0381168114611d3a57600080fd5b919050565b60008060408385031215611d5257600080fd5b8235611d5d81611afc565b9150611d6b60208401611d23565b90509250929050565b600060208284031215611d8657600080fd5b8135610cb881611afc565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611db857600080fd5b81356001600160401b0380821115611dd257611dd2611d91565b604051601f8301601f19908116603f01168101908282118183101715611dfa57611dfa611d91565b81604052838152866020858801011115611e1357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215611e4b57600080fd5b8535611e5681611afc565b94506020860135611e6681611afc565b93506040860135925060608601356001600160401b0380821115611e8957600080fd5b611e9589838a01611da7565b93506080880135915080821115611eab57600080fd5b50611eb888828901611da7565b9150509295509295909350565b600060208284031215611ed757600080fd5b5035919050565b600080600060608486031215611ef357600080fd5b8335611efe81611afc565b92506020840135915060408401356001600160401b03811115611f2057600080fd5b611f2c86828701611da7565b9150509250925092565b600060208284031215611f4857600080fd5b610cb882611d23565b60008060408385031215611f6457600080fd5b8235611f6f81611afc565b91506020830135611f7f81611afc565b809150509250929050565b60008060008060808587031215611fa057600080fd5b8435611fab81611afc565b93506020850135925060408501356001600160401b0380821115611fce57600080fd5b611fda88838901611da7565b93506060870135915080821115611ff057600080fd5b50611ffd87828801611da7565b91505092959194509250565b6000806040838503121561201c57600080fd5b8235915060208301356001600160401b0381111561203957600080fd5b61204585828601611da7565b9150509250929050565b600181811c9082168061206357607f821691505b60208210810361208357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b6000602082840312156120e757600080fd5b8151610cb881611afc565b634e487b7160e01b600052601160045260246000fd5b6000821982111561211b5761211b6120f2565b500190565b600082821015612132576121326120f2565b500390565b8381526060602082015260006121506060830185611c56565b82810360408401526121628185611c56565b9695505050505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906121a790830185611c56565b82810360a08401526121b98185611c56565b999850505050505050505056fea164736f6c634300080d000a",
    "sourceMap": "1160:1167:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1961:201:20;;;;;;:::i;:::-;;;;;;;;;;;;6528:130:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2982:98;;;:::i;:::-;;;;;;;:::i;8286:197::-;;;;;;:::i;:::-;;:::i;:::-;;;3562:14:22;;3555:22;3537:41;;3525:2;3510:18;8286:197:4;3397:187:22;3775:123:4;3879:12;;3775:123;;;3735:25:22;;;3723:2;3708:18;3775:123:4;3589:177:22;8965:317:4;;;;;;:::i;:::-;;:::i;1830:143:14:-;;;;;;:::i;:::-;;:::i;3422:82:4:-;;;3495:2;4874:36:22;;4862:2;4847:18;3422:82:4;4732:184:22;3315:110:20;;;;;;:::i;:::-;-1:-1:-1;;;;;3395:16:20;3369:7;3395:16;;;:8;:16;;;;;:23;;;;3315:110;3619:95:4;3706:1;3619:95;;6777:366;;;;;;:::i;:::-;;:::i;3998:150::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4119:22:4;4093:7;4119:22;;;;;;;;;;;;3998:150;1979:184:14;;;;;;:::i;:::-;;:::i;3494:357:20:-;;;;;;:::i;:::-;;:::i;1724:100:14:-;;;;;;:::i;:::-;;:::i;5583:412:4:-;;;;;;:::i;:::-;;:::i;3136:102::-;;;:::i;4278:193::-;;;;;;:::i;:::-;;:::i;4702:183::-;;;;;;:::i;:::-;;:::i;237:36:17:-;;;;;;698:174:14;;;;;;:::i;:::-;;:::i;581:22::-;;;;;-1:-1:-1;;;;;581:22:14;;;;;;-1:-1:-1;;;;;8079:32:22;;;8061:51;;8049:2;8034:18;581:22:14;7899:219:22;2986:97:20;3060:16;;2986:97;;3941:665;;;;;;:::i;:::-;;:::i;2169:156:14:-;;;;;;:::i;:::-;;:::i;5205:311:4:-;;;;;;:::i;:::-;;:::i;7828:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7944:19:4;;;7918:7;7944:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7828:151;3157:111:20;3238:23;;3157:111;;6059:403:4;;;;;;:::i;:::-;;:::i;7264:325::-;;;;;;:::i;:::-;;:::i;5015:127::-;;;;;;:::i;:::-;;:::i;6528:130::-;6594:16;6629:22;6622:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6622:29:4;;;;;;;;;;;;;;;;;;;;;;;6528:130;:::o;2982:98::-;3036:13;3068:5;3061:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3061:12:4;;2982:98;-1:-1:-1;;;;;2982:98:4:o;8286:197::-;8368:4;719:10:9;8423:32:4;719:10:9;8440:7:4;8449:5;8423:8;:32::i;:::-;8472:4;8465:11;;;8286:197;;;;;:::o;8965:317::-;9101:4;719:10:9;9157:40:4;9173:6;719:10:9;9190:6:4;9157:15;:40::i;:::-;9207:47;9213:6;9221:9;9232:6;9207:47;;;;;;;;;;;;;;;;;;;;;;;;9248:5;9207;:47::i;:::-;-1:-1:-1;9271:4:4;;8965:317;-1:-1:-1;;;;8965:317:4:o;1830:143:14:-;919:10;911:33;;;;;;984:7;;-1:-1:-1;;;;;984:7:14;962:10;:30;954:39;;;;;;1900:66:::1;1906:2;1910:47;1935:13;3879:12:4::0;;;3775:123;1935:13:14::1;1950:6;-1:-1:-1::0;;;;;1910:47:14::1;:24;:47::i;:::-;1900:66;;;;;;;;;;;::::0;::::1;;;;;;;;;;;::::0;:5:::1;:66::i;:::-;1830:143:::0;;:::o;6777:366:4:-;6984:35;719:10:9;7012:6:4;6984:13;:35::i;:::-;6976:92;;;;-1:-1:-1;;;6976:92:4;;;;;;;:::i;:::-;;;;;;;;;7078:58;7084:6;7092:9;7103:6;7111:4;7117:12;7131:4;7078:5;:58::i;:::-;6777:366;;;;;:::o;1979:184:14:-;1064:10;1056:33;;;;;;1121:7;;;;;;;;;-1:-1:-1;;;;;1121:7:14;-1:-1:-1;;;;;1121:13:14;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1107:29:14;:10;-1:-1:-1;;;;;1107:29:14;;1099:38;;;;;;2103:53:::1;2130:25;2103:26;:53::i;:::-;1979:184:::0;:::o;3494:357:20:-;-1:-1:-1;;;;;3569:24:20;;3561:33;;;;;;-1:-1:-1;;;;;3605:20:20;;;;;;:8;:20;;;;;:27;;:37;;-1:-1:-1;;;;;3605:37:20;;;:20;:37;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;3652:20:20;;;;;;:8;:20;;;;;;;;3690:15;3652:53;;3764:9;;;;;;;;;;3775;;;;;;;;;;;3716:69;;3729:10;;3749:4;;-1:-1:-1;;;;;3716:69:20;;;:12;:69::i;:::-;3800:44;;-1:-1:-1;;;;;3800:44:20;;;-1:-1:-1;;;;;3800:44:20;;;3813:10;;3800:44;;;;;3494:357;;:::o;1724:100:14:-;919:10;911:33;;;;;;984:7;;-1:-1:-1;;;;;984:7:14;962:10;:30;954:39;;;;;;1797:20:::1;1804:4;1810:6;1797;:20::i;5583:412:4:-:0;-1:-1:-1;;;;;5670:24:4;;719:10:9;5670:24:4;5662:73;;;;-1:-1:-1;;;5662:73:4;;11367:2:22;5662:73:4;;;11349:21:22;11406:2;11386:18;;;11379:30;11445:34;11425:18;;;11418:62;-1:-1:-1;;;11496:18:22;;;11489:34;11540:19;;5662:73:4;11165:400:22;5662:73:4;-1:-1:-1;;;;;5750:27:4;;;;;;:17;:27;;;;;;;;5746:185;;;719:10:9;5800:38:4;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;5800:48:4;;;;;;;;;5793:55;;-1:-1:-1;;5793:55:4;;;5746:185;;;719:10:9;5879:24:4;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;5879:34:4;;;;;;;;;:41;;-1:-1:-1;;5879:41:4;5916:4;5879:41;;;5746:185;5946:42;;719:10:9;;-1:-1:-1;;;;;5946:42:4;;;;;;;;5583:412;:::o;3136:102::-;3192:13;3224:7;3217:14;;;;;:::i;4278:193::-;4410:54;719:10:9;4430:9:4;4441:6;4449:4;4410:54;;;;;;;;;;;;4459:4;4410:5;:54::i;:::-;4278:193;;;:::o;4702:183::-;4788:4;4804:53;719:10:9;4824:9:4;4835:6;4804:53;;;;;;;;;;;;;;;;;;;;;;;;4851:5;4804;:53::i;:::-;-1:-1:-1;4874:4:4;4702:183;;;;:::o;698:174:14:-;777:8;;-1:-1:-1;;;;;777:8:14;763:10;:22;755:31;;;;;;812:7;;-1:-1:-1;;;;;812:7:14;804:30;796:39;;;;;;845:7;:20;;-1:-1:-1;;;;;;845:20:14;-1:-1:-1;;;;;845:20:14;;;;;;;;;;698:174::o;3941:665:20:-;4024:10;3990:22;4015:20;;;:8;:20;;;;;:35;4117:16;;4082:32;4015:35;4082:15;:32;:::i;:::-;:51;4061:173;;;;-1:-1:-1;;;4061:173:20;;11902:2:22;4061:173:20;;;11884:21:22;11941:2;11921:18;;;11914:30;11980:34;11960:18;;;11953:62;12051:34;12031:18;;;12024:62;-1:-1:-1;;;12102:19:22;;;12095:42;12154:19;;4061:173:20;11700:479:22;4061:173:20;4245:13;4261:104;4278:36;4282:23;;4307:6;-1:-1:-1;;;;;4278:36:20;:3;:36::i;:::-;4337:10;4328:20;;;;:8;:20;;;;;:27;;;4261:3;:104::i;:::-;4245:120;;4375:68;4389:4;4396:10;4408:5;4415:9;;;;;;;;;;;;4426;;;;;;;;;;;;4437:5;4375;:68::i;:::-;4463:10;4454:20;;;;:8;:20;;;;;:27;;:36;;4485:5;;4454:20;:36;;4485:5;;4454:36;:::i;:::-;;;;-1:-1:-1;;4509:10:20;4500:20;;;;:8;:20;;;;;;4538:15;4500:53;;4568:31;4593:5;;4509:10;4568:31;;;3980:626;;3941:665;:::o;2169:156:14:-;1064:10;1056:33;;;;;;1121:7;;;;;;;;;-1:-1:-1;;;;;1121:7:14;-1:-1:-1;;;;;1121:13:14;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1107:29:14;:10;-1:-1:-1;;;;;1107:29:14;;1099:38;;;;;;2279:39:::1;2299:18;2279:19;:39::i;5205:311:4:-:0;5305:4;5352:11;-1:-1:-1;;;;;5340:23:4;:8;-1:-1:-1;;;;;5340:23:4;;:120;;;-1:-1:-1;;;;;;5380:27:4;;;;;;:17;:27;;;;;;;;:79;;;;-1:-1:-1;;;;;;5412:37:4;;;;;;;:24;:37;;;;;;;;:47;;;;;;;;;;;;5411:48;5380:79;5340:169;;;-1:-1:-1;;;;;;5476:23:4;;;;;;;:10;:23;;;;;;;;:33;;;;;;;;;;;;5340:169;5321:188;5205:311;-1:-1:-1;;;5205:311:4:o;6059:403::-;719:10:9;-1:-1:-1;;;;;6143:24:4;;;6135:70;;;;-1:-1:-1;;;6135:70:4;;12386:2:22;6135:70:4;;;12368:21:22;12425:2;12405:18;;;12398:30;12464:34;12444:18;;;12437:62;-1:-1:-1;;;12515:18:22;;;12508:31;12556:19;;6135:70:4;12184:397:22;6135:70:4;-1:-1:-1;;;;;6220:27:4;;;;;;:17;:27;;;;;;;;6216:185;;;719:10:9;6263:38:4;;;;:24;:38;;;;;;;;-1:-1:-1;;;;;6263:48:4;;;;;;;;;:55;;-1:-1:-1;;6263:55:4;6314:4;6263:55;;;6216:185;;;719:10:9;6356:24:4;;;;:10;:24;;;;;;;;-1:-1:-1;;;;;6356:34:4;;;;;;;;;6349:41;;-1:-1:-1;;6349:41:4;;;6216:185;6416:39;;719:10:9;;-1:-1:-1;;;;;6416:39:4;;;;;;;;6059:403;:::o;7264:325::-;7445:36;719:10:9;7473:7:4;7445:13;:36::i;:::-;7437:93;;;;-1:-1:-1;;;7437:93:4;;;;;;;:::i;:::-;7540:42;7546:7;7555:6;7563:4;7569:12;7540:5;:42::i;:::-;7264:325;;;;:::o;5015:127::-;5098:37;719:10:9;5118:6:4;5126:4;5098:37;;;;;;;;;;;;:5;:37::i;1175:320:8:-;-1:-1:-1;;;;;1465:19:8;;:23;;;1175:320::o;14427:373:4:-;-1:-1:-1;;;;;14558:20:4;;14550:70;;;;-1:-1:-1;;;14550:70:4;;12788:2:22;14550:70:4;;;12770:21:22;12827:2;12807:18;;;12800:30;12866:34;12846:18;;;12839:62;-1:-1:-1;;;12917:18:22;;;12910:35;12962:19;;14550:70:4;12586:401:22;14550:70:4;-1:-1:-1;;;;;14638:21:4;;14630:69;;;;-1:-1:-1;;;14630:69:4;;13194:2:22;14630:69:4;;;13176:21:22;13233:2;13213:18;;;13206:30;13272:34;13252:18;;;13245:62;-1:-1:-1;;;13323:18:22;;;13316:33;13366:19;;14630:69:4;12992:399:22;14630:69:4;-1:-1:-1;;;;;14710:19:4;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:36;;;14761:32;;3735:25:22;;;14761:32:4;;3708:18:22;14761:32:4;;;;;;;14427:373;;;:::o;17391:442::-;-1:-1:-1;;;;;7944:19:4;;;17521:24;7944:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;17587:37:4;;17583:244;;17668:6;17648:16;:26;;17640:69;;;;-1:-1:-1;;;17640:69:4;;13598:2:22;17640:69:4;;;13580:21:22;13637:2;13617:18;;;13610:30;13676:32;13656:18;;;13649:60;13726:18;;17640:69:4;13396:354:22;17640:69:4;17751:51;17760:5;17767:7;17795:6;17776:16;:25;17751:8;:51::i;11898:658::-;-1:-1:-1;;;;;12120:18:4;;12112:69;;;;-1:-1:-1;;;12112:69:4;;13957:2:22;12112:69:4;;;13939:21:22;13996:2;13976:18;;;13969:30;14035:34;14015:18;;;14008:62;-1:-1:-1;;;14086:18:22;;;14079:36;14132:19;;12112:69:4;13755:402:22;12112:69:4;-1:-1:-1;;;;;12199:16:4;;12191:65;;;;-1:-1:-1;;;12191:65:4;;14364:2:22;12191:65:4;;;14346:21:22;14403:2;14383:18;;;14376:30;14442:34;14422:18;;;14415:62;-1:-1:-1;;;14493:18:22;;;14486:34;14537:19;;12191:65:4;14162:400:22;12191:65:4;719:10:9;12309:69:4;719:10:9;12337:4:4;12343:2;12347:6;12355:8;12365:12;12309:17;:69::i;:::-;12389:57;12395:8;12405:4;12411:2;12415:6;12423:8;12433:12;12389:5;:57::i;:::-;12457:92;12477:8;12487:4;12493:2;12497:6;12505:8;12515:12;12529:19;12457;:92::i;:::-;12102:454;11898:658;;;;;;:::o;1001:965:17:-;1111:7;1134:21;1176:11;;1158:15;:29;;;;:::i;:::-;1134:53;;1278:20;;1262:13;:36;1258:193;;;1314:24;:40;;;1396:1;1368:25;:29;1425:15;1411:11;:29;1258:193;1605:21;;1593:9;1565:25;;:37;;;;:::i;:::-;:61;1561:280;;;1642:24;1709:25;;1669:21;;:65;;;;:::i;:::-;1642:92;;1777:16;1748:25;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;1814:16:17;;-1:-1:-1;1807:23:17;;-1:-1:-1;;1807:23:17;1561:280;1924:9;1895:25;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;1950:9:17;;1001:965;-1:-1:-1;;;;1001:965:17:o;9852:222:4:-;10015:52;10021:7;10030:6;10038:8;10048:12;10062:4;10015:5;:52::i;2403:191:20:-;2485:23;:43;;;2543:44;;2511:17;;2543:44;;;;;2403:191;:::o;4686:339::-;-1:-1:-1;;;;;4771:14:20;;;;;;:8;:14;;;;;:21;;;-1:-1:-1;;;;;4771:31:20;;-1:-1:-1;4771:31:20;4750:127;;;;-1:-1:-1;;;4750:127:20;;14769:2:22;4750:127:20;;;14751:21:22;14808:2;14788:18;;;14781:30;14847:34;14827:18;;;14820:62;-1:-1:-1;;;14898:18:22;;;14891:47;14955:19;;4750:127:20;14567:413:22;4750:127:20;-1:-1:-1;;;;;4888:14:20;;;;;;:8;:14;;;;;:21;;:31;;-1:-1:-1;;;;;4888:31:20;;;:14;:31;;;;;:::i;:::-;;;;;;;;4929:50;4943:4;4950:6;-1:-1:-1;;;;;4929:50:20;4958:9;;;;;;;;;;;;4969;;;;;;;;;;;;4929:5;:50::i;:::-;4994:24;;-1:-1:-1;;;;;4994:24:20;;;-1:-1:-1;;;;;4994:24:20;;;;;;;;4686:339;;:::o;124:105:19:-;182:7;213:1;208;:6;;:14;;221:1;208:14;;;-1:-1:-1;217:1:19;;124:105;-1:-1:-1;124:105:19:o;2668:265:20:-;2762:1;2753:6;:10;2732:118;;;;-1:-1:-1;;;2732:118:20;;15187:2:22;2732:118:20;;;15169:21:22;15226:2;15206:18;;;15199:30;15265:34;15245:18;;;15238:62;15336:31;15316:18;;;15309:59;15385:19;;2732:118:20;14985:425:22;2732:118:20;2860:16;:25;;;2900:26;;2879:6;;2900:26;;;;;2668:265;:::o;12861:811:4:-;-1:-1:-1;;;;;13025:18:4;;13017:65;;;;-1:-1:-1;;;13017:65:4;;15617:2:22;13017:65:4;;;15599:21:22;15656:2;15636:18;;;15629:30;15695:34;15675:18;;;15668:62;-1:-1:-1;;;15746:18:22;;;15739:32;15788:19;;13017:65:4;15415:398:22;13017:65:4;719:10:9;13135:73:4;719:10:9;13163:4:4;13093:16;13181:6;13189:4;13195:12;13135:17;:73::i;:::-;-1:-1:-1;;;;;13342:15:4;;13320:19;13342:15;;;;;;;;;;;13375:21;;;;13367:69;;;;-1:-1:-1;;;13367:69:4;;16020:2:22;13367:69:4;;;16002:21:22;16059:2;16039:18;;;16032:30;16098:34;16078:18;;;16071:62;-1:-1:-1;;;16149:18:22;;;16142:33;16192:19;;13367:69:4;15818:399:22;13367:69:4;-1:-1:-1;;;;;13470:15:4;;:9;:15;;;;;;;;;;13488:20;;;13470:38;;13528:12;:22;;13502:6;;13470:9;13528:22;;13502:6;;13528:22;:::i;:::-;;;;;;;;13583:4;-1:-1:-1;;;;;13566:50:4;13573:8;-1:-1:-1;;;;;13566:50:4;;13589:6;13597:4;13603:12;13566:50;;;;;;;;:::i;:::-;;;;;;;;13631:34;;3735:25:22;;;13654:1:4;;-1:-1:-1;;;;;13631:34:4;;;;;3723:2:22;3708:18;13631:34:4;;;;;;;;13007:665;;12861:811;;;;:::o;15273:472::-;15504:78;;-1:-1:-1;;;15504:78:4;;-1:-1:-1;;;;;16869:32:22;;15504:78:4;;;16851:51:22;1491:31:4;16918:18:22;;;16911:34;15482:19:4;;1242:42;;15504:41;;16824:18:22;;15504:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15482:100;-1:-1:-1;;;;;;15596:25:4;;;15592:147;;15637:91;;-1:-1:-1;;;15637:91:4;;-1:-1:-1;;;;;15637:39:4;;;;;:91;;15677:8;;15687:4;;15693:2;;15697:6;;15705:8;;15715:12;;15637:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15472:273;15273:472;;;;;;:::o;13678:611::-;-1:-1:-1;;;;;13956:15:4;;13934:19;13956:15;;;;;;;;;;;13989:21;;;;13981:73;;;;-1:-1:-1;;;13981:73:4;;17895:2:22;13981:73:4;;;17877:21:22;17934:2;17914:18;;;17907:30;17973:34;17953:18;;;17946:62;-1:-1:-1;;;18024:18:22;;;18017:37;18071:19;;13981:73:4;17693:403:22;13981:73:4;-1:-1:-1;;;;;14088:15:4;;;:9;:15;;;;;;;;;;;14106:20;;;14088:38;;14146:13;;;;;;;;:23;;14120:6;;14088:9;14146:23;;14120:6;;14146:23;:::i;:::-;;;;;;;;14206:2;-1:-1:-1;;;;;14185:56:4;14200:4;-1:-1:-1;;;;;14185:56:4;14190:8;-1:-1:-1;;;;;14185:56:4;;14210:6;14218:8;14228:12;14185:56;;;;;;;;:::i;:::-;;;;;;;;14271:2;-1:-1:-1;;;;;14256:26:4;14265:4;-1:-1:-1;;;;;14256:26:4;;14275:6;14256:26;;;;3735:25:22;;3723:2;3708:18;;3589:177;14256:26:4;;;;;;;;13865:424;13678:611;;;;;;:::o;16434:676::-;16701:79;;-1:-1:-1;;;16701:79:4;;-1:-1:-1;;;;;16869:32:22;;16701:79:4;;;16851:51:22;1588:34:4;16918:18:22;;;16911:34;16679:19:4;;1242:42;;16701:41;;16824:18:22;;16701:79:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16679:101;-1:-1:-1;;;;;;16794:25:4;;;16790:314;;16835:96;;-1:-1:-1;;;16835:96:4;;-1:-1:-1;;;;;16835:44:4;;;;;:96;;16880:8;;16890:4;;16896:2;;16900:6;;16908:8;;16918:12;;16835:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16790:314;;;16952:19;16948:156;;;-1:-1:-1;;;;;16996:13:4;;1465:19:8;:23;16987:106:4;;;;-1:-1:-1;;;16987:106:4;;18303:2:22;16987:106:4;;;18285:21:22;18342:2;18322:18;;;18315:30;18381:34;18361:18;;;18354:62;18452:34;18432:18;;;18425:62;-1:-1:-1;;;18503:19:22;;;18496:44;18557:19;;16987:106:4;18101:481:22;10696:726:4;-1:-1:-1;;;;;10901:21:4;;10893:66;;;;-1:-1:-1;;;10893:66:4;;18789:2:22;10893:66:4;;;18771:21:22;;;18808:18;;;18801:30;18867:34;18847:18;;;18840:62;18919:18;;10893:66:4;18587:356:22;10893:66:4;10970:16;719:10:9;10970:31:4;;11132:6;11116:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;11148:18:4;;:9;:18;;;;;;;;;;:28;;11170:6;;11148:9;:28;;11170:6;;11148:28;:::i;:::-;;;;-1:-1:-1;11187:103:4;;-1:-1:-1;11207:8:4;11225:1;11229:7;11238:6;11246:8;11256:12;11270:19;11187;:103::i;:::-;11323:7;-1:-1:-1;;;;;11306:57:4;11313:8;-1:-1:-1;;;;;11306:57:4;;11332:6;11340:8;11350:12;11306:57;;;;;;;;:::i;:::-;;;;;;;;11378:37;;3735:25:22;;;-1:-1:-1;;;;;11378:37:4;;;11395:1;;11378:37;;3723:2:22;3708:18;11378:37:4;3589:177:22;14:131;-1:-1:-1;;;;;89:31:22;;79:42;;69:70;;135:1;132;125:12;150:347;201:8;211:6;265:3;258:4;250:6;246:17;242:27;232:55;;283:1;280;273:12;232:55;-1:-1:-1;306:20:22;;-1:-1:-1;;;;;338:30:22;;335:50;;;381:1;378;371:12;335:50;418:4;410:6;406:17;394:29;;470:3;463:4;454:6;446;442:19;438:30;435:39;432:59;;;487:1;484;477:12;432:59;150:347;;;;;:::o;502:1205::-;628:6;636;644;652;660;668;676;684;737:3;725:9;716:7;712:23;708:33;705:53;;;754:1;751;744:12;705:53;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;919:2:22;904:18;;891:32;932:33;891:32;932:33;:::i;:::-;984:7;-1:-1:-1;1043:2:22;1028:18;;1015:32;1056:33;1015:32;1056:33;:::i;:::-;1108:7;-1:-1:-1;1162:2:22;1147:18;;1134:32;;-1:-1:-1;1217:3:22;1202:19;;1189:33;-1:-1:-1;;;;;1271:14:22;;;1268:34;;;1298:1;1295;1288:12;1268:34;1337:58;1387:7;1378:6;1367:9;1363:22;1337:58;:::i;:::-;1414:8;;-1:-1:-1;1311:84:22;-1:-1:-1;1502:3:22;1487:19;;1474:33;;-1:-1:-1;1519:16:22;;;1516:36;;;1548:1;1545;1538:12;1516:36;;1587:60;1639:7;1628:8;1617:9;1613:24;1587:60;:::i;:::-;502:1205;;;;-1:-1:-1;502:1205:22;;-1:-1:-1;502:1205:22;;;;;;1666:8;-1:-1:-1;;;502:1205:22:o;1712:658::-;1883:2;1935:21;;;2005:13;;1908:18;;;2027:22;;;1854:4;;1883:2;2106:15;;;;2080:2;2065:18;;;1854:4;2149:195;2163:6;2160:1;2157:13;2149:195;;;2228:13;;-1:-1:-1;;;;;2224:39:22;2212:52;;2319:15;;;;2284:12;;;;2260:1;2178:9;2149:195;;;-1:-1:-1;2361:3:22;;1712:658;-1:-1:-1;;;;;;1712:658:22:o;2375:472::-;2417:3;2455:5;2449:12;2482:6;2477:3;2470:19;2507:1;2517:162;2531:6;2528:1;2525:13;2517:162;;;2593:4;2649:13;;;2645:22;;2639:29;2621:11;;;2617:20;;2610:59;2546:12;2517:162;;;2697:6;2694:1;2691:13;2688:87;;;2763:1;2756:4;2747:6;2742:3;2738:16;2734:27;2727:38;2688:87;-1:-1:-1;2829:2:22;2808:15;-1:-1:-1;;2804:29:22;2795:39;;;;2836:4;2791:50;;2375:472;-1:-1:-1;;2375:472:22:o;2852:220::-;3001:2;2990:9;2983:21;2964:4;3021:45;3062:2;3051:9;3047:18;3039:6;3021:45;:::i;3077:315::-;3145:6;3153;3206:2;3194:9;3185:7;3181:23;3177:32;3174:52;;;3222:1;3219;3212:12;3174:52;3261:9;3248:23;3280:31;3305:5;3280:31;:::i;:::-;3330:5;3382:2;3367:18;;;;3354:32;;-1:-1:-1;;;3077:315:22:o;3771:456::-;3848:6;3856;3864;3917:2;3905:9;3896:7;3892:23;3888:32;3885:52;;;3933:1;3930;3923:12;3885:52;3972:9;3959:23;3991:31;4016:5;3991:31;:::i;:::-;4041:5;-1:-1:-1;4098:2:22;4083:18;;4070:32;4111:33;4070:32;4111:33;:::i;:::-;3771:456;;4163:7;;-1:-1:-1;;;4217:2:22;4202:18;;;;4189:32;;3771:456::o;4232:171::-;4299:20;;-1:-1:-1;;;;;4348:30:22;;4338:41;;4328:69;;4393:1;4390;4383:12;4328:69;4232:171;;;:::o;4408:319::-;4475:6;4483;4536:2;4524:9;4515:7;4511:23;4507:32;4504:52;;;4552:1;4549;4542:12;4504:52;4591:9;4578:23;4610:31;4635:5;4610:31;:::i;:::-;4660:5;-1:-1:-1;4684:37:22;4717:2;4702:18;;4684:37;:::i;:::-;4674:47;;4408:319;;;;;:::o;4921:247::-;4980:6;5033:2;5021:9;5012:7;5008:23;5004:32;5001:52;;;5049:1;5046;5039:12;5001:52;5088:9;5075:23;5107:31;5132:5;5107:31;:::i;5173:127::-;5234:10;5229:3;5225:20;5222:1;5215:31;5265:4;5262:1;5255:15;5289:4;5286:1;5279:15;5305:718;5347:5;5400:3;5393:4;5385:6;5381:17;5377:27;5367:55;;5418:1;5415;5408:12;5367:55;5454:6;5441:20;-1:-1:-1;;;;;5517:2:22;5513;5510:10;5507:36;;;5523:18;;:::i;:::-;5598:2;5592:9;5566:2;5652:13;;-1:-1:-1;;5648:22:22;;;5672:2;5644:31;5640:40;5628:53;;;5696:18;;;5716:22;;;5693:46;5690:72;;;5742:18;;:::i;:::-;5782:10;5778:2;5771:22;5817:2;5809:6;5802:18;5863:3;5856:4;5851:2;5843:6;5839:15;5835:26;5832:35;5829:55;;;5880:1;5877;5870:12;5829:55;5944:2;5937:4;5929:6;5925:17;5918:4;5910:6;5906:17;5893:54;5991:1;5984:4;5979:2;5971:6;5967:15;5963:26;5956:37;6011:6;6002:15;;;;;;5305:718;;;;:::o;6028:885::-;6141:6;6149;6157;6165;6173;6226:3;6214:9;6205:7;6201:23;6197:33;6194:53;;;6243:1;6240;6233:12;6194:53;6282:9;6269:23;6301:31;6326:5;6301:31;:::i;:::-;6351:5;-1:-1:-1;6408:2:22;6393:18;;6380:32;6421:33;6380:32;6421:33;:::i;:::-;6473:7;-1:-1:-1;6527:2:22;6512:18;;6499:32;;-1:-1:-1;6582:2:22;6567:18;;6554:32;-1:-1:-1;;;;;6635:14:22;;;6632:34;;;6662:1;6659;6652:12;6632:34;6685:49;6726:7;6717:6;6706:9;6702:22;6685:49;:::i;:::-;6675:59;;6787:3;6776:9;6772:19;6759:33;6743:49;;6817:2;6807:8;6804:16;6801:36;;;6833:1;6830;6823:12;6801:36;;6856:51;6899:7;6888:8;6877:9;6873:24;6856:51;:::i;:::-;6846:61;;;6028:885;;;;;;;;:::o;6918:180::-;6977:6;7030:2;7018:9;7009:7;7005:23;7001:32;6998:52;;;7046:1;7043;7036:12;6998:52;-1:-1:-1;7069:23:22;;6918:180;-1:-1:-1;6918:180:22:o;7103:523::-;7189:6;7197;7205;7258:2;7246:9;7237:7;7233:23;7229:32;7226:52;;;7274:1;7271;7264:12;7226:52;7313:9;7300:23;7332:31;7357:5;7332:31;:::i;:::-;7382:5;-1:-1:-1;7434:2:22;7419:18;;7406:32;;-1:-1:-1;7489:2:22;7474:18;;7461:32;-1:-1:-1;;;;;7505:30:22;;7502:50;;;7548:1;7545;7538:12;7502:50;7571:49;7612:7;7603:6;7592:9;7588:22;7571:49;:::i;:::-;7561:59;;;7103:523;;;;;:::o;8123:184::-;8181:6;8234:2;8222:9;8213:7;8209:23;8205:32;8202:52;;;8250:1;8247;8240:12;8202:52;8273:28;8291:9;8273:28;:::i;8312:388::-;8380:6;8388;8441:2;8429:9;8420:7;8416:23;8412:32;8409:52;;;8457:1;8454;8447:12;8409:52;8496:9;8483:23;8515:31;8540:5;8515:31;:::i;:::-;8565:5;-1:-1:-1;8622:2:22;8607:18;;8594:32;8635:33;8594:32;8635:33;:::i;:::-;8687:7;8677:17;;;8312:388;;;;;:::o;8705:743::-;8809:6;8817;8825;8833;8886:3;8874:9;8865:7;8861:23;8857:33;8854:53;;;8903:1;8900;8893:12;8854:53;8942:9;8929:23;8961:31;8986:5;8961:31;:::i;:::-;9011:5;-1:-1:-1;9063:2:22;9048:18;;9035:32;;-1:-1:-1;9118:2:22;9103:18;;9090:32;-1:-1:-1;;;;;9171:14:22;;;9168:34;;;9198:1;9195;9188:12;9168:34;9221:49;9262:7;9253:6;9242:9;9238:22;9221:49;:::i;:::-;9211:59;;9323:2;9312:9;9308:18;9295:32;9279:48;;9352:2;9342:8;9339:16;9336:36;;;9368:1;9365;9358:12;9336:36;;9391:51;9434:7;9423:8;9412:9;9408:24;9391:51;:::i;:::-;9381:61;;;8705:743;;;;;;;:::o;9453:388::-;9530:6;9538;9591:2;9579:9;9570:7;9566:23;9562:32;9559:52;;;9607:1;9604;9597:12;9559:52;9643:9;9630:23;9620:33;;9704:2;9693:9;9689:18;9676:32;-1:-1:-1;;;;;9723:6:22;9720:30;9717:50;;;9763:1;9760;9753:12;9717:50;9786:49;9827:7;9818:6;9807:9;9803:22;9786:49;:::i;:::-;9776:59;;;9453:388;;;;;:::o;9846:380::-;9925:1;9921:12;;;;9968;;;9989:61;;10043:4;10035:6;10031:17;10021:27;;9989:61;10096:2;10088:6;10085:14;10065:18;10062:38;10059:161;;10142:10;10137:3;10133:20;10130:1;10123:31;10177:4;10174:1;10167:15;10205:4;10202:1;10195:15;10059:161;;9846:380;;;:::o;10231:408::-;10433:2;10415:21;;;10472:2;10452:18;;;10445:30;10511:34;10506:2;10491:18;;10484:62;-1:-1:-1;;;10577:2:22;10562:18;;10555:42;10629:3;10614:19;;10231:408::o;10644:251::-;10714:6;10767:2;10755:9;10746:7;10742:23;10738:32;10735:52;;;10783:1;10780;10773:12;10735:52;10815:9;10809:16;10834:31;10859:5;10834:31;:::i;10900:127::-;10961:10;10956:3;10952:20;10949:1;10942:31;10992:4;10989:1;10982:15;11016:4;11013:1;11006:15;11032:128;11072:3;11103:1;11099:6;11096:1;11093:13;11090:39;;;11109:18;;:::i;:::-;-1:-1:-1;11145:9:22;;11032:128::o;11570:125::-;11610:4;11638:1;11635;11632:8;11629:34;;;11643:18;;:::i;:::-;-1:-1:-1;11680:9:22;;11570:125::o;16222:450::-;16443:6;16432:9;16425:25;16486:2;16481;16470:9;16466:18;16459:30;16406:4;16512:45;16553:2;16542:9;16538:18;16530:6;16512:45;:::i;:::-;16605:9;16597:6;16593:22;16588:2;16577:9;16573:18;16566:50;16633:33;16659:6;16651;16633:33;:::i;:::-;16625:41;16222:450;-1:-1:-1;;;;;;16222:450:22:o;16956:732::-;-1:-1:-1;;;;;17299:15:22;;;17281:34;;17351:15;;;17346:2;17331:18;;17324:43;17403:15;;17398:2;17383:18;;17376:43;17450:2;17435:18;;17428:34;;;17499:3;17493;17478:19;;17471:32;;;17224:4;;17526:46;;17552:19;;17544:6;17526:46;:::i;:::-;17621:9;17613:6;17609:22;17603:3;17592:9;17588:19;17581:51;17649:33;17675:6;17667;17649:33;:::i;:::-;17641:41;16956:732;-1:-1:-1;;;;;;;;;16956:732:22:o",
    "linkReferences": {}
  },
  "userdoc": {
    "version": 1,
    "kind": "user",
    "methods": {
      "maxNewSupplyPerPeriod()": {
        "notice": "The % increase in supply allowed per period."
      }
    }
  },
  "devdoc": {
    "version": 1,
    "kind": "dev",
    "methods": {
      "allowance(address,address)": {
        "details": "See {IERC20-allowance}. Note that operator and allowance concepts are orthogonal: operators may not have allowance, and accounts with allowance may not be operators themselves."
      },
      "approve(address,uint256)": {
        "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Note that accounts cannot have allowance issued by their operators."
      },
      "authorizeOperator(address)": {
        "details": "See {IERC777-authorizeOperator}."
      },
      "balanceOf(address)": {
        "details": "Returns the amount of tokens owned by an account (`tokenHolder`)."
      },
      "burn(uint256,bytes)": {
        "details": "See {IERC777-burn}. Also emits a {IERC20-Transfer} event for ERC20 compatibility."
      },
      "decimals()": {
        "details": "See {ERC20-decimals}. Always returns 18, as per the [ERC777 EIP](https://eips.ethereum.org/EIPS/eip-777#backward-compatibility)."
      },
      "defaultOperators()": {
        "details": "See {IERC777-defaultOperators}."
      },
      "granularity()": {
        "details": "See {IERC777-granularity}. This implementation always returns `1`."
      },
      "isOperatorFor(address,address)": {
        "details": "See {IERC777-isOperatorFor}."
      },
      "name()": {
        "details": "See {IERC777-name}."
      },
      "operatorBurn(address,uint256,bytes,bytes)": {
        "details": "See {IERC777-operatorBurn}. Emits {Burned} and {IERC20-Transfer} events."
      },
      "operatorSend(address,address,uint256,bytes,bytes)": {
        "details": "See {IERC777-operatorSend}. Emits {Sent} and {IERC20-Transfer} events."
      },
      "periodInSeconds()": {
        "details": "The length of the withdraw period"
      },
      "revokeOperator(address)": {
        "details": "See {IERC777-revokeOperator}."
      },
      "send(address,uint256,bytes)": {
        "details": "See {IERC777-send}. Also emits a {IERC20-Transfer} event for ERC20 compatibility."
      },
      "stake(address,uint64)": {
        "details": "Deposits tokens, as a stake, on behalf of a user."
      },
      "stakeOf(address)": {
        "details": "The stake amount of a user."
      },
      "stakeWithdrawPerPeriod()": {
        "details": "The amount of tokens that can be withdrawn per period."
      },
      "symbol()": {
        "details": "See {IERC777-symbol}."
      },
      "tokensReceived(address,address,address,uint256,bytes,bytes)": {
        "details": "Called by an {IERC777} token contract whenever tokens are being moved or created into a registered account (`to`). The type of operation is conveyed by `from` being the zero address or not. This call occurs _after_ the token contract's state is updated, so {IERC777-balanceOf}, etc., can be used to query the post-operation state. This function may revert to prevent the operation from being executed."
      },
      "totalSupply()": {
        "details": "See {IERC777-totalSupply}."
      },
      "transfer(address,uint256)": {
        "details": "See {IERC20-transfer}. Unlike `send`, `recipient` is _not_ required to implement the {IERC777Recipient} interface if it is a contract. Also emits a {Sent} event."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC20-transferFrom}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Note that operator and allowance concepts are orthogonal: operators cannot call `transferFrom` (unless they have allowance), and accounts with allowance cannot call `operatorSend` (unless they are operators). Emits {Sent}, {IERC20-Transfer} and {IERC20-Approval} events."
      },
      "unstake(uint64)": {
        "details": "withdraws a stake, if enough time has passed since the last withdrawal"
      }
    }
  },
  "ast": {
    "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Tokens.sol",
    "exportedSymbols": {
      "Address": [
        2382
      ],
      "Association": [
        4902
      ],
      "Charter": [
        4538
      ],
      "CharterConfig": [
        2820
      ],
      "CharterGovernanceToken": [
        4801
      ],
      "CharterStakingToken": [
        4752
      ],
      "Context": [
        2404
      ],
      "ERC20": [
        690
      ],
      "ERC777": [
        1884
      ],
      "Founded": [
        4641
      ],
      "IERC1820Registry": [
        2494
      ],
      "IERC20": [
        768
      ],
      "IERC20Metadata": [
        793
      ],
      "IERC777": [
        2047
      ],
      "IERC777Recipient": [
        2067
      ],
      "IERC777Sender": [
        2087
      ],
      "Limited": [
        5242
      ],
      "Math": [
        5394
      ],
      "Member": [
        5043
      ],
      "Ownable": [
        104
      ],
      "TimeDelayStakingToken": [
        5769
      ],
      "TrialDeposit": [
        2831
      ]
    },
    "id": 4802,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4540,
        "literals": [
          "solidity",
          "0.8",
          ".13"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:14"
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "id": 4541,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 691,
        "src": "57:64:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "id": 4542,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 1885,
        "src": "122:66:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "id": 4543,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 2068,
        "src": "189:76:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/access/Ownable.sol",
        "file": "openzeppelin-contracts/contracts/access/Ownable.sol",
        "id": 4544,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 105,
        "src": "266:61:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Charter.sol",
        "file": "./Charter.sol",
        "id": 4545,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 4539,
        "src": "329:23:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Association.sol",
        "file": "./lib/Association.sol",
        "id": 4546,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5044,
        "src": "353:31:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Stake.sol",
        "file": "./lib/Stake.sol",
        "id": 4547,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5770,
        "src": "385:25:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Limited.sol",
        "file": "./lib/Limited.sol",
        "id": 4548,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5243,
        "src": "411:27:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Founded",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 4549,
          "nodeType": "StructuredDocumentation",
          "src": "440:118:14",
          "text": "@dev Allows a \"founder\" to create a contract and then\n surrender control over the contract once and only once."
        },
        "fullyImplemented": true,
        "id": 4641,
        "linearizedBaseContracts": [
          4641
        ],
        "name": "Founded",
        "nameLocation": "567:7:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "c1aadb4d",
            "id": 4552,
            "mutability": "mutable",
            "name": "charter",
            "nameLocation": "596:7:14",
            "nodeType": "VariableDeclaration",
            "scope": 4641,
            "src": "581:22:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Charter_$4538",
              "typeString": "contract Charter"
            },
            "typeName": {
              "id": 4551,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 4550,
                "name": "Charter",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 4538,
                "src": "581:7:14"
              },
              "referencedDeclaration": 4538,
              "src": "581:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Charter_$4538",
                "typeString": "contract Charter"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4554,
            "mutability": "mutable",
            "name": "_founder",
            "nameLocation": "625:8:14",
            "nodeType": "VariableDeclaration",
            "scope": 4641,
            "src": "609:24:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4553,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "609:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 4562,
              "nodeType": "Block",
              "src": "654:38:14",
              "statements": [
                {
                  "expression": {
                    "id": 4560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4557,
                      "name": "_founder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4554,
                      "src": "664:8:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 4558,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "675:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "675:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "664:21:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4561,
                  "nodeType": "ExpressionStatement",
                  "src": "664:21:14"
                }
              ]
            },
            "id": 4563,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4555,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "651:2:14"
            },
            "returnParameters": {
              "id": 4556,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "654:0:14"
            },
            "scope": 4641,
            "src": "640:52:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4592,
              "nodeType": "Block",
              "src": "745:127:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4570,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "763:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "763:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 4572,
                          "name": "_founder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4554,
                          "src": "777:8:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "763:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4569,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "755:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "755:31:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4575,
                  "nodeType": "ExpressionStatement",
                  "src": "755:31:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 4579,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "812:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            ],
                            "id": 4578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "804:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4577,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "804:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "804:16:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "832:1:14",
                              "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": 4582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "824:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4581,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "824:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "824:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "804:30:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "796:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "796:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4587,
                  "nodeType": "ExpressionStatement",
                  "src": "796:39:14"
                },
                {
                  "expression": {
                    "id": 4590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4588,
                      "name": "charter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4552,
                      "src": "845:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Charter_$4538",
                        "typeString": "contract Charter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4589,
                      "name": "newCharter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4566,
                      "src": "855:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Charter_$4538",
                        "typeString": "contract Charter"
                      }
                    },
                    "src": "845:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  },
                  "id": 4591,
                  "nodeType": "ExpressionStatement",
                  "src": "845:20:14"
                }
              ]
            },
            "functionSelector": "b94ed2d1",
            "id": 4593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setCharter",
            "nameLocation": "707:10:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4566,
                  "mutability": "mutable",
                  "name": "newCharter",
                  "nameLocation": "726:10:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4593,
                  "src": "718:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Charter_$4538",
                    "typeString": "contract Charter"
                  },
                  "typeName": {
                    "id": 4565,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4564,
                      "name": "Charter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4538,
                      "src": "718:7:14"
                    },
                    "referencedDeclaration": 4538,
                    "src": "718:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "717:20:14"
            },
            "returnParameters": {
              "id": 4568,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "745:0:14"
            },
            "scope": 4641,
            "src": "698:174:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4616,
              "nodeType": "Block",
              "src": "901:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4596,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "919:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "919:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "941:1:14",
                              "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": 4599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "933:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4598,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "933:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "933:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "919:24:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4595,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "911:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "911:33:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4604,
                  "nodeType": "ExpressionStatement",
                  "src": "911:33:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4606,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "962:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "962:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 4610,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "984:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            ],
                            "id": 4609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "976:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4608,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "976:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "976:16:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "962:30:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4605,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "954:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "954:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4614,
                  "nodeType": "ExpressionStatement",
                  "src": "954:39:14"
                },
                {
                  "id": 4615,
                  "nodeType": "PlaceholderStatement",
                  "src": "1004:1:14"
                }
              ]
            },
            "id": 4617,
            "name": "onlyCharter",
            "nameLocation": "887:11:14",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "898:2:14"
            },
            "src": "878:134:14",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4639,
              "nodeType": "Block",
              "src": "1046:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4620,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1064:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1064:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1086:1:14",
                              "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": 4623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1078:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4622,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1078:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1078:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1064:24:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4619,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1056:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1056:33:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4628,
                  "nodeType": "ExpressionStatement",
                  "src": "1056:33:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4630,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1107:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1107:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4632,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "1121:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            },
                            "id": 4633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32,
                            "src": "1121:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 4634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1121:15:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1107:29:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4629,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1099:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1099:38:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4637,
                  "nodeType": "ExpressionStatement",
                  "src": "1099:38:14"
                },
                {
                  "id": 4638,
                  "nodeType": "PlaceholderStatement",
                  "src": "1148:1:14"
                }
              ]
            },
            "id": 4640,
            "name": "onlyCharterOwner",
            "nameLocation": "1027:16:14",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1043:2:14"
            },
            "src": "1018:138:14",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 4802,
        "src": "558:600:14",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4642,
              "name": "TimeDelayStakingToken",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5769,
              "src": "1192:21:14"
            },
            "id": 4643,
            "nodeType": "InheritanceSpecifier",
            "src": "1192:21:14"
          },
          {
            "baseName": {
              "id": 4644,
              "name": "Founded",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4641,
              "src": "1215:7:14"
            },
            "id": 4645,
            "nodeType": "InheritanceSpecifier",
            "src": "1215:7:14"
          },
          {
            "baseName": {
              "id": 4646,
              "name": "Limited",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5242,
              "src": "1224:7:14"
            },
            "id": 4647,
            "nodeType": "InheritanceSpecifier",
            "src": "1224:7:14"
          }
        ],
        "canonicalName": "CharterStakingToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4752,
        "linearizedBaseContracts": [
          4752,
          5242,
          4641,
          5769,
          5394,
          2067,
          1884,
          768,
          2047,
          2404
        ],
        "name": "CharterStakingToken",
        "nameLocation": "1169:19:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4690,
              "nodeType": "Block",
              "src": "1661:57:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4683,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1677:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1677:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4685,
                        "name": "initialSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4657,
                        "src": "1689:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1704:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "",
                        "id": 4687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1708:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4682,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1370,
                        1450
                      ],
                      "referencedDeclaration": 1370,
                      "src": "1671:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory,bytes memory)"
                      }
                    },
                    "id": 4688,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1671:40:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4689,
                  "nodeType": "ExpressionStatement",
                  "src": "1671:40:14"
                }
              ]
            },
            "id": 4691,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 4662,
                    "name": "withdraw",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4653,
                    "src": "1461:8:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4663,
                    "name": "period",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4655,
                    "src": "1471:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 4664,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4661,
                  "name": "TimeDelayStakingToken",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5769,
                  "src": "1439:21:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1439:39:14"
              },
              {
                "arguments": [
                  {
                    "id": 4666,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4649,
                    "src": "1494:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 4667,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4651,
                    "src": "1500:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 4671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1522:1:14",
                        "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": 4670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1508:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1512:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4669,
                        "nodeType": "ArrayTypeName",
                        "src": "1512:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 4672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1508:16:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  }
                ],
                "id": 4673,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4665,
                  "name": "ERC777",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1884,
                  "src": "1487:6:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1487:38:14"
              },
              {
                "arguments": [],
                "id": 4675,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4674,
                  "name": "Founded",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4641,
                  "src": "1534:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1534:9:14"
              },
              {
                "arguments": [
                  {
                    "id": 4677,
                    "name": "initialSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4657,
                    "src": "1573:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4678,
                    "name": "maxInflationPerDay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4659,
                    "src": "1600:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "hexValue": "3836343030",
                    "id": 4679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1632:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  }
                ],
                "id": 4680,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4676,
                  "name": "Limited",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5242,
                  "src": "1552:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1552:104:14"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4649,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "1273:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1259:18:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4648,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1259:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4651,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "1301:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1287:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4650,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4653,
                  "mutability": "mutable",
                  "name": "withdraw",
                  "nameLocation": "1325:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1317:16:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4655,
                  "mutability": "mutable",
                  "name": "period",
                  "nameLocation": "1351:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1343:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1343:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4657,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nameLocation": "1375:13:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1367:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4656,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1367:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4659,
                  "mutability": "mutable",
                  "name": "maxInflationPerDay",
                  "nameLocation": "1406:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1398:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1398:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1249:181:14"
            },
            "returnParameters": {
              "id": 4681,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1661:0:14"
            },
            "scope": 4752,
            "src": "1238:480:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4705,
              "nodeType": "Block",
              "src": "1787:37:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4701,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4693,
                        "src": "1804:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4702,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4695,
                        "src": "1810:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4700,
                      "name": "_slash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5768,
                      "src": "1797:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint64_$returns$__$",
                        "typeString": "function (address,uint64)"
                      }
                    },
                    "id": 4703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1797:20:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4704,
                  "nodeType": "ExpressionStatement",
                  "src": "1797:20:14"
                }
              ]
            },
            "functionSelector": "83f684a4",
            "id": 4706,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4698,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4697,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "1775:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1775:11:14"
              }
            ],
            "name": "slash",
            "nameLocation": "1733:5:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4693,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "1747:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4706,
                  "src": "1739:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4692,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1739:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4695,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1760:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4706,
                  "src": "1753:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 4694,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1738:29:14"
            },
            "returnParameters": {
              "id": 4699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1787:0:14"
            },
            "scope": 4752,
            "src": "1724:100:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4726,
              "nodeType": "Block",
              "src": "1890:83:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4716,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4708,
                        "src": "1906:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4718,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 991,
                              "src": "1935:11:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1935:13:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4720,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4710,
                            "src": "1950:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 4717,
                          "name": "_cappedNewSupplyToCreate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5241,
                          "src": "1910:24:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) returns (uint256)"
                          }
                        },
                        "id": 4721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1910:47:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1959:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "",
                        "id": 4723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1963:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4715,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1370,
                        1450
                      ],
                      "referencedDeclaration": 1370,
                      "src": "1900:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory,bytes memory)"
                      }
                    },
                    "id": 4724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1900:66:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4725,
                  "nodeType": "ExpressionStatement",
                  "src": "1900:66:14"
                }
              ]
            },
            "functionSelector": "2893c5b0",
            "id": 4727,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4713,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4712,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "1878:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1878:11:14"
              }
            ],
            "name": "mint",
            "nameLocation": "1839:4:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4708,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "1852:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4727,
                  "src": "1844:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4707,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1844:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4710,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1863:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4727,
                  "src": "1856:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 4709,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1856:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1843:27:14"
            },
            "returnParameters": {
              "id": 4714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1890:0:14"
            },
            "scope": 4752,
            "src": "1830:143:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4738,
              "nodeType": "Block",
              "src": "2093:70:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4735,
                        "name": "newStakeWithdrawPerPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4729,
                        "src": "2130:25:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4734,
                      "name": "_setStakeWithdrawPerPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5528,
                      "src": "2103:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2103:53:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4737,
                  "nodeType": "ExpressionStatement",
                  "src": "2103:53:14"
                }
              ]
            },
            "functionSelector": "8061766e",
            "id": 4739,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4732,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4731,
                  "name": "onlyCharterOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4640,
                  "src": "2072:16:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2072:16:14"
              }
            ],
            "name": "setStakeWithdrawPerPeriod",
            "nameLocation": "1988:25:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4729,
                  "mutability": "mutable",
                  "name": "newStakeWithdrawPerPeriod",
                  "nameLocation": "2022:25:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4739,
                  "src": "2014:33:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2014:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2013:35:14"
            },
            "returnParameters": {
              "id": 4733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2093:0:14"
            },
            "scope": 4752,
            "src": "1979:184:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4750,
              "nodeType": "Block",
              "src": "2269:56:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4747,
                        "name": "newPeriodInSeconds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4741,
                        "src": "2299:18:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4746,
                      "name": "_setPeriodInSeconds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5550,
                      "src": "2279:19:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2279:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4749,
                  "nodeType": "ExpressionStatement",
                  "src": "2279:39:14"
                }
              ]
            },
            "functionSelector": "d3700604",
            "id": 4751,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4744,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4743,
                  "name": "onlyCharterOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4640,
                  "src": "2248:16:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2248:16:14"
              }
            ],
            "name": "setPeriodInSeconds",
            "nameLocation": "2178:18:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4741,
                  "mutability": "mutable",
                  "name": "newPeriodInSeconds",
                  "nameLocation": "2205:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4751,
                  "src": "2197:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2197:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2196:28:14"
            },
            "returnParameters": {
              "id": 4745,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2269:0:14"
            },
            "scope": 4752,
            "src": "2169:156:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4802,
        "src": "1160:1167:14",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4753,
              "name": "ERC20",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 690,
              "src": "2364:5:14"
            },
            "id": 4754,
            "nodeType": "InheritanceSpecifier",
            "src": "2364:5:14"
          },
          {
            "baseName": {
              "id": 4755,
              "name": "Founded",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4641,
              "src": "2371:7:14"
            },
            "id": 4756,
            "nodeType": "InheritanceSpecifier",
            "src": "2371:7:14"
          },
          {
            "baseName": {
              "id": 4757,
              "name": "Limited",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5242,
              "src": "2380:7:14"
            },
            "id": 4758,
            "nodeType": "InheritanceSpecifier",
            "src": "2380:7:14"
          }
        ],
        "canonicalName": "CharterGovernanceToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4801,
        "linearizedBaseContracts": [
          4801,
          5242,
          5394,
          4641,
          690,
          793,
          768,
          2404
        ],
        "name": "CharterGovernanceToken",
        "nameLocation": "2338:22:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4784,
              "nodeType": "Block",
              "src": "2682:49:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4779,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2698:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2698:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4781,
                        "name": "initialSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4764,
                        "src": "2710:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4778,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 507,
                      "src": "2692:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2692:32:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4783,
                  "nodeType": "ExpressionStatement",
                  "src": "2692:32:14"
                }
              ]
            },
            "id": 4785,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 4769,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4760,
                    "src": "2551:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 4770,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4762,
                    "src": "2557:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 4771,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4768,
                  "name": "ERC20",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 690,
                  "src": "2545:5:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2545:19:14"
              },
              {
                "arguments": [
                  {
                    "id": 4773,
                    "name": "initialSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4764,
                    "src": "2594:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4774,
                    "name": "maxInflationPerDay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4766,
                    "src": "2621:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "hexValue": "3836343030",
                    "id": 4775,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2653:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  }
                ],
                "id": 4776,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4772,
                  "name": "Limited",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5242,
                  "src": "2573:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2573:104:14"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4760,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "2429:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2415:18:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4759,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2415:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4762,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "2457:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2443:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4761,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2443:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4764,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nameLocation": "2481:13:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2473:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2473:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4766,
                  "mutability": "mutable",
                  "name": "maxInflationPerDay",
                  "nameLocation": "2512:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2504:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2504:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2405:131:14"
            },
            "returnParameters": {
              "id": 4777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2682:0:14"
            },
            "scope": 4801,
            "src": "2394:337:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4799,
              "nodeType": "Block",
              "src": "2805:41:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4795,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4787,
                        "src": "2821:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4796,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4789,
                        "src": "2832:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4794,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 507,
                      "src": "2815:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2815:24:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4798,
                  "nodeType": "ExpressionStatement",
                  "src": "2815:24:14"
                }
              ]
            },
            "functionSelector": "40c10f19",
            "id": 4800,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4792,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4791,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "2793:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2793:11:14"
              }
            ],
            "name": "mint",
            "nameLocation": "2746:4:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4787,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "2759:9:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4800,
                  "src": "2751:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2751:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4789,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2778:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4800,
                  "src": "2770:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2770:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2750:35:14"
            },
            "returnParameters": {
              "id": 4793,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2805:0:14"
            },
            "scope": 4801,
            "src": "2737:109:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4802,
        "src": "2329:519:14",
        "usedErrors": []
      }
    ],
    "src": "32:2817:14"
  }
}