{
  "contractName": "CountTransferManager",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "ADMIN",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "takeFee",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxHolderCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "FEE_ADMIN",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_securityToken",
          "type": "address"
        },
        {
          "name": "_polyAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_oldHolderCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_newHolderCount",
          "type": "uint256"
        }
      ],
      "name": "LogModifyHolderCount",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestammp",
          "type": "uint256"
        }
      ],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Unpause",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "bool"
        }
      ],
      "name": "verifyTransfer",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_maxHolderCount",
          "type": "uint256"
        }
      ],
      "name": "configure",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitFunction",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_maxHolderCount",
          "type": "uint256"
        }
      ],
      "name": "changeHolderCount",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526002805460a060020a60ff021916905534801561002057600080fd5b50604051604080610f1783398101604052805160209091015160018054600160a060020a03938416600160a060020a0319918216179091556000805482163317905560028054939092169216919091179055610e96806100816000396000f3006080604052600436106100c15763ffffffff60e060020a6000350416631613ec9d81146100c65780631eb25e0a146101105780632a0acc6a1461012a5780633f4ba83a146101515780635c975abb146101665780635f7619a41461018f5780636faa22a5146101a75780637915c9e0146101d85780638456cb591461022b578063ae89a29e14610240578063b84dfbd214610255578063c3a07df61461026a578063c45a0155146102cf578063d70afa96146102e4578063ec8cae23146102f9575b600080fd5b3480156100d257600080fd5b506100db610311565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561011c57600080fd5b50610128600435610346565b005b34801561013657600080fd5b5061013f6103ad565b60408051918252519081900360200190f35b34801561015d57600080fd5b506101286103d1565b34801561017257600080fd5b5061017b6104b9565b604080519115158252519081900360200190f35b34801561019b57600080fd5b5061017b6004356104c9565b3480156101b357600080fd5b506101bc610808565b60408051600160a060020a039092168252519081900360200190f35b3480156101e457600080fd5b50610207600160a060020a03600435811690602435166044356064351515610817565b6040518082600381111561021757fe5b60ff16815260200191505060405180910390f35b34801561023757600080fd5b50610128610962565b34801561024c57600080fd5b5061013f610a48565b34801561026157600080fd5b506101bc610a4e565b34801561027657600080fd5b5061027f610a5d565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bb5781810151838201526020016102a3565b505050509050019250505060405180910390f35b3480156102db57600080fd5b506101bc610ac1565b3480156102f057600080fd5b5061013f610ad0565b34801561030557600080fd5b50610128600435610af4565b604080517f636f6e6669677572652875696e743235362900000000000000000000000000008152905190819003601201902090565b600054600160a060020a031633146103a8576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206973206e6f7420666163746f72790000000000000000000000604482015290519081900360640190fd5b600355565b7f41444d494e00000000000000000000000000000000000000000000000000000081565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561042457600080fd5b505af1158015610438573d6000803e3d6000fd5b505050506040513d602081101561044e57600080fd5b5051600160a060020a031633146104af576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6104b7610cf9565b565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561054257600080fd5b505af1158015610556573d6000803e3d6000fd5b505050506040513d602081101561056c57600080fd5b505160005433600160a060020a03928316811494509116149050818061058f5750805b806106355750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561060857600080fd5b505af115801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b50515b151561068b576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b505115156107fd576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600254600160a060020a031681565b60025460009060a060020a900460ff1615156107fd57600160009054906101000a9004600160a060020a0316600160a060020a031663d7e64c006040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561088057600080fd5b505af1158015610894573d6000803e3d6000fd5b505050506040513d60208110156108aa57600080fd5b505160035410156107fd57600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152915191909216916370a082319160248083019260209291908290030181600087803b15801561091d57600080fd5b505af1158015610931573d6000803e3d6000fd5b505050506040513d602081101561094757600080fd5b5051156109565750600161095a565b5060005b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156109b557600080fd5b505af11580156109c9573d6000803e3d6000fd5b505050506040513d60208110156109df57600080fd5b5051600160a060020a03163314610a40576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6104b7610daf565b60035481565b600154600160a060020a031681565b604080516001808252818301909252606091829190602080830190803883390190505090507f41444d494e000000000000000000000000000000000000000000000000000000816000815181101515610ab257fe5b60209081029091010152905090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b7f41444d494e000000000000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b505050506040513d6020811015610b9557600080fd5b505160005433600160a060020a039283168114945091161490508180610bb85750805b80610c5e5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050506040513d6020811015610c5b57600080fd5b50515b1515610cb4576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b600354604080519182526020820186905280517f452eda26db39d49c3cb52e776f82f30611e06f6be9700ce6259869554d4c63a59281900390910190a1505050600355565b60025460a060020a900460ff161515610d5c576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60025460a060020a900460ff1615610e11576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a15600a165627a7a72305820239277cafe55f37a5eed5418393c20014c96c3819cdc0f635d4905d359b689bb0029",
  "deployedBytecode": "0x6080604052600436106100c15763ffffffff60e060020a6000350416631613ec9d81146100c65780631eb25e0a146101105780632a0acc6a1461012a5780633f4ba83a146101515780635c975abb146101665780635f7619a41461018f5780636faa22a5146101a75780637915c9e0146101d85780638456cb591461022b578063ae89a29e14610240578063b84dfbd214610255578063c3a07df61461026a578063c45a0155146102cf578063d70afa96146102e4578063ec8cae23146102f9575b600080fd5b3480156100d257600080fd5b506100db610311565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561011c57600080fd5b50610128600435610346565b005b34801561013657600080fd5b5061013f6103ad565b60408051918252519081900360200190f35b34801561015d57600080fd5b506101286103d1565b34801561017257600080fd5b5061017b6104b9565b604080519115158252519081900360200190f35b34801561019b57600080fd5b5061017b6004356104c9565b3480156101b357600080fd5b506101bc610808565b60408051600160a060020a039092168252519081900360200190f35b3480156101e457600080fd5b50610207600160a060020a03600435811690602435166044356064351515610817565b6040518082600381111561021757fe5b60ff16815260200191505060405180910390f35b34801561023757600080fd5b50610128610962565b34801561024c57600080fd5b5061013f610a48565b34801561026157600080fd5b506101bc610a4e565b34801561027657600080fd5b5061027f610a5d565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bb5781810151838201526020016102a3565b505050509050019250505060405180910390f35b3480156102db57600080fd5b506101bc610ac1565b3480156102f057600080fd5b5061013f610ad0565b34801561030557600080fd5b50610128600435610af4565b604080517f636f6e6669677572652875696e743235362900000000000000000000000000008152905190819003601201902090565b600054600160a060020a031633146103a8576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206973206e6f7420666163746f72790000000000000000000000604482015290519081900360640190fd5b600355565b7f41444d494e00000000000000000000000000000000000000000000000000000081565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561042457600080fd5b505af1158015610438573d6000803e3d6000fd5b505050506040513d602081101561044e57600080fd5b5051600160a060020a031633146104af576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6104b7610cf9565b565b60025460a060020a900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561054257600080fd5b505af1158015610556573d6000803e3d6000fd5b505050506040513d602081101561056c57600080fd5b505160005433600160a060020a03928316811494509116149050818061058f5750805b806106355750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561060857600080fd5b505af115801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b50515b151561068b576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d60208110156107a557600080fd5b505115156107fd576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b600254600160a060020a031681565b60025460009060a060020a900460ff1615156107fd57600160009054906101000a9004600160a060020a0316600160a060020a031663d7e64c006040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561088057600080fd5b505af1158015610894573d6000803e3d6000fd5b505050506040513d60208110156108aa57600080fd5b505160035410156107fd57600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152915191909216916370a082319160248083019260209291908290030181600087803b15801561091d57600080fd5b505af1158015610931573d6000803e3d6000fd5b505050506040513d602081101561094757600080fd5b5051156109565750600161095a565b5060005b949350505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156109b557600080fd5b505af11580156109c9573d6000803e3d6000fd5b505050506040513d60208110156109df57600080fd5b5051600160a060020a03163314610a40576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6104b7610daf565b60035481565b600154600160a060020a031681565b604080516001808252818301909252606091829190602080830190803883390190505090507f41444d494e000000000000000000000000000000000000000000000000000000816000815181101515610ab257fe5b60209081029091010152905090565b600054600160a060020a031681565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b7f41444d494e000000000000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b6b57600080fd5b505af1158015610b7f573d6000803e3d6000fd5b505050506040513d6020811015610b9557600080fd5b505160005433600160a060020a039283168114945091161490508180610bb85750805b80610c5e5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050506040513d6020811015610c5b57600080fd5b50515b1515610cb4576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b600354604080519182526020820186905280517f452eda26db39d49c3cb52e776f82f30611e06f6be9700ce6259869554d4c63a59281900390910190a1505050600355565b60025460a060020a900460ff161515610d5c576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60025460a060020a900460ff1615610e11576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a1790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a15600a165627a7a72305820239277cafe55f37a5eed5418393c20014c96c3819cdc0f635d4905d359b689bb0029",
  "sourceMap": "300:2379:46:-;;;216:26:2;;;-1:-1:-1;;;;;;216:26:2;;;730:123:46;5:2:-1;;;;30:1;27;20:12;5:2;730:123:46;;;;;;;;;;;;;;;;;;;624:13:13;:30;;-1:-1:-1;;;;;624:30:13;;;-1:-1:-1;;;;;;624:30:13;;;;;;;:13;664:20;;;;674:10;664:20;;;694:9;:31;;;;;;;;;;;;;;300:2379:46;;;;;;",
  "deployedSourceMap": "300:2379:46:-;;;;;;;;-1:-1:-1;300:2379:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:119:46;;;;;;;;;;;;;;;;;;;;;;;1680:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1680:112:46;;;;;;;447:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;447:39:46;;;;;;;;;;;;;;;;;;;;711:69:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:69:50;;;;216:26:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:26:2;;;;;;;;;;;;;;;;;;;;;;1890:223:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1890:223:13;;;;;365:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;365:22:13;;;;;;;;-1:-1:-1;;;;;365:22:13;;;;;;;;;;;;;;974:546:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;974:546:46;-1:-1:-1;;;;;974:546:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;786:65:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;786:65:50;;;;411:29:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;411:29:46;;;;276:28:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;276:28:13;;;;2486:190:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2486:190:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2486:190:46;;;;;;;;;;;;;;;;;247:22:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:22:13;;;;311:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;311:47:13;;;;2183:192:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2183:192:46;;;;;1887:119;1967:31;;;;;;;;;;;;;;;;1887:119;:::o;1680:112::-;1457:7:13;;-1:-1:-1;;;;;1457:7:13;1443:10;:21;1435:55;;;;;-1:-1:-1;;;;;1435:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1753:14:46;:32;1680:112::o;447:39::-;;;:::o;711:69:50:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:16:50;:14;:16::i;:::-;711:69::o;216:26:2:-;;;-1:-1:-1;216:26:2;;;;;:::o;1890:223:13:-;1029:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;1959:4;;1940:9;;1959:4;;;;-1:-1:-1;;;;;1029:13:13;;1014:35;;:37;;;;;;;;;;;;;;1959:4;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1983:9;;;2036:7;;2021:31;;;-1:-1:-1;;;;;2021:31:13;;;;-1:-1:-1;;;;;1983:9:13;;;;:22;;2014:4;;2036:7;;;;;2021:29;;:31;;;;;;;;;;;;;;;;2036:7;2021:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2021:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:31:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2021:31:13;1983:79;;;;;;-1:-1:-1;1983:79:13;;;-1:-1:-1;;;;;1983:79:13;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:31;;1983:79;;;;;;;-1:-1:-1;1983:79:13;;;;5:2:-1;;;;30:1;27;20:12;5:2;1983:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1983:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1983:79:13;1975:110;;;;;;;-1:-1:-1;;;;;1975:110:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:4:13;;1890:223;-1:-1:-1;;;;1890:223:13:o;365:22::-;;;-1:-1:-1;;;;;365:22:13;;:::o;974:546:46:-;1117:6;;1094;;-1:-1:-1;1117:6:46;;;;1116:7;1112:376;;;1175:13;;1160:45;;;;;;;;-1:-1:-1;;;;;1175:13:46;;;;1160:43;;:45;;;;;;;;;;;;;;;1175:13;;1160:45;;;5:2:-1;;;;30:1;27;20:12;5:2;1160:45:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1160:45:46;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1160:45:46;1143:14;;:62;1139:309;;;1302:13;;1287:44;;;;;;-1:-1:-1;;;;;1287:44:46;;;;;;;;;1302:13;;;;;1287:39;;:44;;;;;;;;;;;;;;-1:-1:-1;1302:13:46;1287:44;;;5:2:-1;;;;30:1;27;20:12;5:2;1287:44:46;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1287:44:46;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1287:44:46;:49;1283:112;;-1:-1:-1;1367:9:46;1360:16;;1283:112;-1:-1:-1;1419:14:46;974:546;;;;;;;:::o;786:65:50:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;830:14:50;:12;:14::i;411:29:46:-;;;;:::o;276:28:13:-;;;-1:-1:-1;;;;;276:28:13;;:::o;2486:190:46:-;2587:16;;;2601:1;2587:16;;;;;;;;;2532:9;;;;2587:16;;;;;;;105:10:-1;2587:16:46;88:34:-1;136:17;;-1:-1;2587:16:46;2553:50;;2633:5;2613:14;2628:1;2613:17;;;;;;;;;;;;;;;;;;:25;2655:14;-1:-1:-1;2486:190:46;:::o;247:22:13:-;;;-1:-1:-1;;;;;247:22:13;;:::o;311:47::-;;;:::o;2183:192:46:-;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;2251:5:46;;985:12:13;;;;-1:-1:-1;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;985:12;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2294:14:46;;2273:53;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2336:14:46;:32;2183:192::o;915:98:2:-;590:6;;-1:-1:-1;590:6:2;;;;582:41;;;;;;;-1:-1:-1;;;;;582:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:6;:14;;-1:-1:-1;;965:14:2;;;994:12;;;1002:3;994:12;;;;;;;;;;;;;915:98::o;728:96::-;397:6;;-1:-1:-1;397:6:2;;;;396:7;388:38;;;;;-1:-1:-1;;;;;388:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:6;:13;;-1:-1:-1;;779:13:2;-1:-1:-1;;;779:13:2;;;807:10;;;813:3;807:10;;;;;;;;;;;;;728:96::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./ITransferManager.sol\";\n\n/////////////////////\n// Module permissions\n/////////////////////\n//                           Owner       ADMIN\n// changeHolderCount           X           X\n\n\n/**\n * @title Transfer Manager for limiting maximum number of token holders\n */\ncontract CountTransferManager is ITransferManager {\n\n    // The maximum number of concurrent token holders\n    uint256 public maxHolderCount;\n\n    bytes32 public constant ADMIN = \"ADMIN\";\n\n    event LogModifyHolderCount(uint256 _oldHolderCount, uint256 _newHolderCount);\n\n    /**\n     * @notice Constructor\n     * @param _securityToken Address of the security token\n     * @param _polyAddress Address of the polytoken\n     */\n    constructor (address _securityToken, address _polyAddress)\n    public\n    IModule(_securityToken, _polyAddress)\n    {\n    }\n\n    /// @notice Used to verify the transfer transaction according to the rule implemented in the trnasfer managers\n    function verifyTransfer(address /* _from */, address _to, uint256 /* _amount */, bool /* _isTransfer */) public returns(Result) {\n        if (!paused) {\n            if (maxHolderCount < ISecurityToken(securityToken).investorCount()) {\n                // Allow transfers to existing maxHolders\n                if (ISecurityToken(securityToken).balanceOf(_to) != 0) {\n                    return Result.NA;\n                }\n                return Result.INVALID;\n            }\n            return Result.NA;\n        }\n        return Result.NA;\n    }\n\n    /**\n     * @notice Used to intialize the variables of the contract\n     * @param _maxHolderCount Maximum no. of holders for the securityToken\n     */\n    function configure(uint256 _maxHolderCount) public onlyFactory {\n        maxHolderCount = _maxHolderCount;\n    }\n\n    /**\n     * @notice This function returns the signature of configure function\n     */\n    function getInitFunction() public pure returns (bytes4) {\n        return bytes4(keccak256(\"configure(uint256)\"));\n    }\n\n    /**\n    * @notice sets the maximum percentage that an individual token holder can hold\n    * @param _maxHolderCount is the new maximum amount a holder can hold\n    */\n    function changeHolderCount(uint256 _maxHolderCount) public withPerm(ADMIN) {\n        emit LogModifyHolderCount(maxHolderCount, _maxHolderCount);\n        maxHolderCount = _maxHolderCount;\n    }\n\n    /**\n     * @notice Return the permissions flag that are associated with CountTransferManager\n     */\n    function getPermissions() public view returns(bytes32[]) {\n        bytes32[] memory allPermissions = new bytes32[](1);\n        allPermissions[0] = ADMIN;\n        return allPermissions;\n    }\n\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/CountTransferManager.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/CountTransferManager.sol",
    "exportedSymbols": {
      "CountTransferManager": [
        17349
      ]
    },
    "id": 17350,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17206,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:46"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ITransferManager.sol",
        "file": "./ITransferManager.sol",
        "id": 17207,
        "nodeType": "ImportDirective",
        "scope": 17350,
        "sourceUnit": 18395,
        "src": "26:32:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17208,
              "name": "ITransferManager",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18394,
              "src": "333:16:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITransferManager_$18394",
                "typeString": "contract ITransferManager"
              }
            },
            "id": 17209,
            "nodeType": "InheritanceSpecifier",
            "src": "333:16:46"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          18394
        ],
        "contractKind": "contract",
        "documentation": "@title Transfer Manager for limiting maximum number of token holders",
        "fullyImplemented": true,
        "id": 17349,
        "linearizedBaseContracts": [
          17349,
          18394,
          471,
          9717
        ],
        "name": "CountTransferManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 17211,
            "name": "maxHolderCount",
            "nodeType": "VariableDeclaration",
            "scope": 17349,
            "src": "411:29:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17210,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "411:7:46",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 17214,
            "name": "ADMIN",
            "nodeType": "VariableDeclaration",
            "scope": 17349,
            "src": "447:39:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17212,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "447:7:46",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "41444d494e",
              "id": 17213,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "479:7:46",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_df8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42",
                "typeString": "literal_string \"ADMIN\""
              },
              "value": "ADMIN"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17220,
            "name": "LogModifyHolderCount",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17216,
                  "indexed": false,
                  "name": "_oldHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17220,
                  "src": "520:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17215,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "520:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17218,
                  "indexed": false,
                  "name": "_newHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17220,
                  "src": "545:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17217,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "545:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "519:50:46"
            },
            "src": "493:77:46"
          },
          {
            "body": {
              "id": 17231,
              "nodeType": "Block",
              "src": "846:7:46",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 17232,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17227,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17222,
                    "src": "812:14:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 17228,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17224,
                    "src": "828:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 17229,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17226,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "804:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "804:37:46"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17222,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 17232,
                  "src": "743:22:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "743:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17224,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17232,
                  "src": "767:20:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17223,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "742:46:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17230,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "846:0:46"
            },
            "scope": 17349,
            "src": "730:123:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17280,
              "nodeType": "Block",
              "src": "1102:418:46",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 17246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1116:7:46",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 17245,
                      "name": "paused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "1117:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17276,
                  "nodeType": "IfStatement",
                  "src": "1112:376:46",
                  "trueBody": {
                    "id": 17275,
                    "nodeType": "Block",
                    "src": "1125:363:46",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17247,
                            "name": "maxHolderCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17211,
                            "src": "1143:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17249,
                                    "name": "securityToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9561,
                                    "src": "1175:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17248,
                                  "name": "ISecurityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10159,
                                  "src": "1160:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                    "typeString": "type(contract ISecurityToken)"
                                  }
                                },
                                "id": 17250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1160:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                  "typeString": "contract ISecurityToken"
                                }
                              },
                              "id": 17251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "investorCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10096,
                              "src": "1160:43:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 17252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1160:45:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1143:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17271,
                        "nodeType": "IfStatement",
                        "src": "1139:309:46",
                        "trueBody": {
                          "id": 17270,
                          "nodeType": "Block",
                          "src": "1207:241:46",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17258,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17236,
                                      "src": "1327:3:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 17255,
                                          "name": "securityToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9561,
                                          "src": "1302:13:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 17254,
                                        "name": "ISecurityToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10159,
                                        "src": "1287:14:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                          "typeString": "type(contract ISecurityToken)"
                                        }
                                      },
                                      "id": 17256,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1287:29:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                        "typeString": "contract ISecurityToken"
                                      }
                                    },
                                    "id": 17257,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22759,
                                    "src": "1287:39:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 17259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1287:44:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1335:1:46",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1287:49:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17266,
                              "nodeType": "IfStatement",
                              "src": "1283:112:46",
                              "trueBody": {
                                "id": 17265,
                                "nodeType": "Block",
                                "src": "1338:57:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17262,
                                        "name": "Result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18358,
                                        "src": "1367:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                          "typeString": "type(enum ITransferManager.Result)"
                                        }
                                      },
                                      "id": 17263,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "NA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1367:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Result_$18358",
                                        "typeString": "enum ITransferManager.Result"
                                      }
                                    },
                                    "functionReturnParameters": 17244,
                                    "id": 17264,
                                    "nodeType": "Return",
                                    "src": "1360:16:46"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17267,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "1419:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 17268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "INVALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1419:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17244,
                              "id": 17269,
                              "nodeType": "Return",
                              "src": "1412:21:46"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17272,
                            "name": "Result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18358,
                            "src": "1468:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                              "typeString": "type(enum ITransferManager.Result)"
                            }
                          },
                          "id": 17273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "NA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1468:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Result_$18358",
                            "typeString": "enum ITransferManager.Result"
                          }
                        },
                        "functionReturnParameters": 17244,
                        "id": 17274,
                        "nodeType": "Return",
                        "src": "1461:16:46"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 17277,
                      "name": "Result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18358,
                      "src": "1504:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                        "typeString": "type(enum ITransferManager.Result)"
                      }
                    },
                    "id": 17278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "NA",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1504:9:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "functionReturnParameters": 17244,
                  "id": 17279,
                  "nodeType": "Return",
                  "src": "1497:16:46"
                }
              ]
            },
            "documentation": "@notice Used to verify the transfer transaction according to the rule implemented in the trnasfer managers",
            "id": 17281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17241,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17234,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "998:7:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17233,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "998:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17236,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1019:11:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17235,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17238,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1032:7:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17237,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1032:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17240,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1055:4:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17239,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1055:4:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "997:81:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17244,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17243,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1094:6:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Result_$18358",
                    "typeString": "enum ITransferManager.Result"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17242,
                    "name": "Result",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18358,
                    "src": "1094:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1093:8:46"
            },
            "scope": 17349,
            "src": "974:546:46",
            "stateMutability": "nonpayable",
            "superFunction": 18371,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17292,
              "nodeType": "Block",
              "src": "1743:49:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17288,
                      "name": "maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17211,
                      "src": "1753:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17289,
                      "name": "_maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17283,
                      "src": "1770:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1753:32:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17291,
                  "nodeType": "ExpressionStatement",
                  "src": "1753:32:46"
                }
              ]
            },
            "documentation": "@notice Used to intialize the variables of the contract\n@param _maxHolderCount Maximum no. of holders for the securityToken",
            "id": 17293,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 17286,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17285,
                  "name": "onlyFactory",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9665,
                  "src": "1731:11:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1731:11:46"
              }
            ],
            "name": "configure",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17283,
                  "name": "_maxHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17293,
                  "src": "1699:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17282,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1699:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1698:25:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17287,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1743:0:46"
            },
            "scope": 17349,
            "src": "1680:112:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17304,
              "nodeType": "Block",
              "src": "1943:63:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "636f6e6669677572652875696e7432353629",
                            "id": 17300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1977:20:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            },
                            "value": "configure(uint256)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            }
                          ],
                          "id": 17299,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23125,
                          "src": "1967:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 17301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1967:31:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1960:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 17302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1960:39:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 17297,
                  "id": 17303,
                  "nodeType": "Return",
                  "src": "1953:46:46"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 17305,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1911:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17297,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17296,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17305,
                  "src": "1935:6:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17295,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1935:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1934:8:46"
            },
            "scope": 17349,
            "src": "1887:119:46",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17322,
              "nodeType": "Block",
              "src": "2258:117:46",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17314,
                        "name": "maxHolderCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17211,
                        "src": "2294:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17315,
                        "name": "_maxHolderCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17307,
                        "src": "2310:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17313,
                      "name": "LogModifyHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17220,
                      "src": "2273:20:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 17316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2273:53:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17317,
                  "nodeType": "EmitStatement",
                  "src": "2268:58:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17318,
                      "name": "maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17211,
                      "src": "2336:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17319,
                      "name": "_maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17307,
                      "src": "2353:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2336:32:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17321,
                  "nodeType": "ExpressionStatement",
                  "src": "2336:32:46"
                }
              ]
            },
            "documentation": "@notice sets the maximum percentage that an individual token holder can hold\n@param _maxHolderCount is the new maximum amount a holder can hold",
            "id": 17323,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17310,
                    "name": "ADMIN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17214,
                    "src": "2251:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17311,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17309,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "2242:8:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2242:15:46"
              }
            ],
            "name": "changeHolderCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17307,
                  "name": "_maxHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17323,
                  "src": "2210:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2210:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2209:25:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17312,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2258:0:46"
            },
            "scope": 17349,
            "src": "2183:192:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17347,
              "nodeType": "Block",
              "src": "2543:133:46",
              "statements": [
                {
                  "assignments": [
                    17332
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17332,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 17348,
                      "src": "2553:31:46",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17330,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2553:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 17331,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2553:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17338,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 17336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2601:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 17335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2587:13:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17333,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2591:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 17334,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2591:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 17337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2587:16:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2553:50:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17339,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17332,
                        "src": "2613:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 17341,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 17340,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2628:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2613:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17342,
                      "name": "ADMIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17214,
                      "src": "2633:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2613:25:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 17344,
                  "nodeType": "ExpressionStatement",
                  "src": "2613:25:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17345,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17332,
                    "src": "2655:14:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 17328,
                  "id": 17346,
                  "nodeType": "Return",
                  "src": "2648:21:46"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with CountTransferManager",
            "id": 17348,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2509:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17327,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17348,
                  "src": "2532:9:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17325,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2532:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 17326,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2532:9:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2531:11:46"
            },
            "scope": 17349,
            "src": "2486:190:46",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          }
        ],
        "scope": 17350,
        "src": "300:2379:46"
      }
    ],
    "src": "0:2680:46"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/CountTransferManager.sol",
    "exportedSymbols": {
      "CountTransferManager": [
        17349
      ]
    },
    "id": 17350,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17206,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:46"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/TransferManager/ITransferManager.sol",
        "file": "./ITransferManager.sol",
        "id": 17207,
        "nodeType": "ImportDirective",
        "scope": 17350,
        "sourceUnit": 18395,
        "src": "26:32:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17208,
              "name": "ITransferManager",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18394,
              "src": "333:16:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITransferManager_$18394",
                "typeString": "contract ITransferManager"
              }
            },
            "id": 17209,
            "nodeType": "InheritanceSpecifier",
            "src": "333:16:46"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          18394
        ],
        "contractKind": "contract",
        "documentation": "@title Transfer Manager for limiting maximum number of token holders",
        "fullyImplemented": true,
        "id": 17349,
        "linearizedBaseContracts": [
          17349,
          18394,
          471,
          9717
        ],
        "name": "CountTransferManager",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 17211,
            "name": "maxHolderCount",
            "nodeType": "VariableDeclaration",
            "scope": 17349,
            "src": "411:29:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17210,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "411:7:46",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 17214,
            "name": "ADMIN",
            "nodeType": "VariableDeclaration",
            "scope": 17349,
            "src": "447:39:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17212,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "447:7:46",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "41444d494e",
              "id": 17213,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "479:7:46",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_df8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42",
                "typeString": "literal_string \"ADMIN\""
              },
              "value": "ADMIN"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17220,
            "name": "LogModifyHolderCount",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17216,
                  "indexed": false,
                  "name": "_oldHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17220,
                  "src": "520:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17215,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "520:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17218,
                  "indexed": false,
                  "name": "_newHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17220,
                  "src": "545:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17217,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "545:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "519:50:46"
            },
            "src": "493:77:46"
          },
          {
            "body": {
              "id": 17231,
              "nodeType": "Block",
              "src": "846:7:46",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 17232,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17227,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17222,
                    "src": "812:14:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 17228,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17224,
                    "src": "828:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 17229,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17226,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "804:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "804:37:46"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17222,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 17232,
                  "src": "743:22:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17221,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "743:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17224,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 17232,
                  "src": "767:20:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17223,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "742:46:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17230,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "846:0:46"
            },
            "scope": 17349,
            "src": "730:123:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17280,
              "nodeType": "Block",
              "src": "1102:418:46",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 17246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1116:7:46",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 17245,
                      "name": "paused",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "1117:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 17276,
                  "nodeType": "IfStatement",
                  "src": "1112:376:46",
                  "trueBody": {
                    "id": 17275,
                    "nodeType": "Block",
                    "src": "1125:363:46",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 17247,
                            "name": "maxHolderCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17211,
                            "src": "1143:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 17249,
                                    "name": "securityToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9561,
                                    "src": "1175:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17248,
                                  "name": "ISecurityToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10159,
                                  "src": "1160:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                    "typeString": "type(contract ISecurityToken)"
                                  }
                                },
                                "id": 17250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1160:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                  "typeString": "contract ISecurityToken"
                                }
                              },
                              "id": 17251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "investorCount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10096,
                              "src": "1160:43:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 17252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1160:45:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1143:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 17271,
                        "nodeType": "IfStatement",
                        "src": "1139:309:46",
                        "trueBody": {
                          "id": 17270,
                          "nodeType": "Block",
                          "src": "1207:241:46",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 17258,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17236,
                                      "src": "1327:3:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 17255,
                                          "name": "securityToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9561,
                                          "src": "1302:13:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 17254,
                                        "name": "ISecurityToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10159,
                                        "src": "1287:14:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ISecurityToken_$10159_$",
                                          "typeString": "type(contract ISecurityToken)"
                                        }
                                      },
                                      "id": 17256,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1287:29:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ISecurityToken_$10159",
                                        "typeString": "contract ISecurityToken"
                                      }
                                    },
                                    "id": 17257,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22759,
                                    "src": "1287:39:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 17259,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1287:44:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 17260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1335:1:46",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1287:49:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 17266,
                              "nodeType": "IfStatement",
                              "src": "1283:112:46",
                              "trueBody": {
                                "id": 17265,
                                "nodeType": "Block",
                                "src": "1338:57:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 17262,
                                        "name": "Result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18358,
                                        "src": "1367:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                          "typeString": "type(enum ITransferManager.Result)"
                                        }
                                      },
                                      "id": 17263,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "NA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1367:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Result_$18358",
                                        "typeString": "enum ITransferManager.Result"
                                      }
                                    },
                                    "functionReturnParameters": 17244,
                                    "id": 17264,
                                    "nodeType": "Return",
                                    "src": "1360:16:46"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17267,
                                  "name": "Result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18358,
                                  "src": "1419:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                                    "typeString": "type(enum ITransferManager.Result)"
                                  }
                                },
                                "id": 17268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "INVALID",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1419:14:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Result_$18358",
                                  "typeString": "enum ITransferManager.Result"
                                }
                              },
                              "functionReturnParameters": 17244,
                              "id": 17269,
                              "nodeType": "Return",
                              "src": "1412:21:46"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17272,
                            "name": "Result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18358,
                            "src": "1468:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                              "typeString": "type(enum ITransferManager.Result)"
                            }
                          },
                          "id": 17273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "NA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1468:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Result_$18358",
                            "typeString": "enum ITransferManager.Result"
                          }
                        },
                        "functionReturnParameters": 17244,
                        "id": 17274,
                        "nodeType": "Return",
                        "src": "1461:16:46"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 17277,
                      "name": "Result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18358,
                      "src": "1504:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_Result_$18358_$",
                        "typeString": "type(enum ITransferManager.Result)"
                      }
                    },
                    "id": 17278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "NA",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1504:9:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "functionReturnParameters": 17244,
                  "id": 17279,
                  "nodeType": "Return",
                  "src": "1497:16:46"
                }
              ]
            },
            "documentation": "@notice Used to verify the transfer transaction according to the rule implemented in the trnasfer managers",
            "id": 17281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "verifyTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17241,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17234,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "998:7:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17233,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "998:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17236,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1019:11:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17235,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17238,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1032:7:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17237,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1032:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17240,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1055:4:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17239,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1055:4:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "997:81:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17244,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17243,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17281,
                  "src": "1094:6:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Result_$18358",
                    "typeString": "enum ITransferManager.Result"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17242,
                    "name": "Result",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 18358,
                    "src": "1094:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Result_$18358",
                      "typeString": "enum ITransferManager.Result"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1093:8:46"
            },
            "scope": 17349,
            "src": "974:546:46",
            "stateMutability": "nonpayable",
            "superFunction": 18371,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17292,
              "nodeType": "Block",
              "src": "1743:49:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17288,
                      "name": "maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17211,
                      "src": "1753:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17289,
                      "name": "_maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17283,
                      "src": "1770:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1753:32:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17291,
                  "nodeType": "ExpressionStatement",
                  "src": "1753:32:46"
                }
              ]
            },
            "documentation": "@notice Used to intialize the variables of the contract\n@param _maxHolderCount Maximum no. of holders for the securityToken",
            "id": 17293,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 17286,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17285,
                  "name": "onlyFactory",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9665,
                  "src": "1731:11:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1731:11:46"
              }
            ],
            "name": "configure",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17283,
                  "name": "_maxHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17293,
                  "src": "1699:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17282,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1699:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1698:25:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17287,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1743:0:46"
            },
            "scope": 17349,
            "src": "1680:112:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17304,
              "nodeType": "Block",
              "src": "1943:63:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "636f6e6669677572652875696e7432353629",
                            "id": 17300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1977:20:46",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            },
                            "value": "configure(uint256)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            }
                          ],
                          "id": 17299,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23125,
                          "src": "1967:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 17301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1967:31:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1960:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 17302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1960:39:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 17297,
                  "id": 17303,
                  "nodeType": "Return",
                  "src": "1953:46:46"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 17305,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1911:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17297,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17296,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17305,
                  "src": "1935:6:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17295,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1935:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1934:8:46"
            },
            "scope": 17349,
            "src": "1887:119:46",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17322,
              "nodeType": "Block",
              "src": "2258:117:46",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17314,
                        "name": "maxHolderCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17211,
                        "src": "2294:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17315,
                        "name": "_maxHolderCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17307,
                        "src": "2310:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17313,
                      "name": "LogModifyHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17220,
                      "src": "2273:20:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 17316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2273:53:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17317,
                  "nodeType": "EmitStatement",
                  "src": "2268:58:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 17318,
                      "name": "maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17211,
                      "src": "2336:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17319,
                      "name": "_maxHolderCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17307,
                      "src": "2353:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2336:32:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17321,
                  "nodeType": "ExpressionStatement",
                  "src": "2336:32:46"
                }
              ]
            },
            "documentation": "@notice sets the maximum percentage that an individual token holder can hold\n@param _maxHolderCount is the new maximum amount a holder can hold",
            "id": 17323,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 17310,
                    "name": "ADMIN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17214,
                    "src": "2251:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17311,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 17309,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "2242:8:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2242:15:46"
              }
            ],
            "name": "changeHolderCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17307,
                  "name": "_maxHolderCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 17323,
                  "src": "2210:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2210:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2209:25:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17312,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2258:0:46"
            },
            "scope": 17349,
            "src": "2183:192:46",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17347,
              "nodeType": "Block",
              "src": "2543:133:46",
              "statements": [
                {
                  "assignments": [
                    17332
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17332,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 17348,
                      "src": "2553:31:46",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17330,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2553:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 17331,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2553:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17338,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 17336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2601:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 17335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2587:13:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17333,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2591:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 17334,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2591:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 17337,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2587:16:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2553:50:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 17339,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17332,
                        "src": "2613:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 17341,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 17340,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2628:1:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2613:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17342,
                      "name": "ADMIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17214,
                      "src": "2633:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2613:25:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 17344,
                  "nodeType": "ExpressionStatement",
                  "src": "2613:25:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17345,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17332,
                    "src": "2655:14:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 17328,
                  "id": 17346,
                  "nodeType": "Return",
                  "src": "2648:21:46"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with CountTransferManager",
            "id": 17348,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2509:2:46"
            },
            "payable": false,
            "returnParameters": {
              "id": 17328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17327,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 17348,
                  "src": "2532:9:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17325,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2532:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 17326,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2532:9:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2531:11:46"
            },
            "scope": 17349,
            "src": "2486:190:46",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          }
        ],
        "scope": 17350,
        "src": "300:2379:46"
      }
    ],
    "src": "0:2680:46"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:12.578Z"
}