code: def parse_cmode_string(self, mode_string, channel):
          
          with self.lock:
              modes = mode_string.split()
              targets = modes[1:]
              modes = modes[0][1:].split()
  
              if mode_string[0] == '+':
                  plus_mode = True
              else:
                  plus_mode = False
              for mode in modes:
                  if mode in self.priv_types:
                      target = targets[modes.index(mode)]
                      if plus_mode:
                          if mode == 'q':
                              self.channels[channel]['USERS'][target][0] = '~'
                          elif mode == 'a':
                              self.channels[channel]['USERS'][target][1] = '&'
                          elif mode == 'o':
                              self.channels[channel]['USERS'][target][2] = '@'
                          elif mode == 'h':
                              self.channels[channel]['USERS'][target][3] = '%'
                          elif mode == 'v':
                              self.channels[channel]['USERS'][target][4] = '+'
                      else:
                          if mode == 'q':
                              self.channels[channel]['USERS'][target][0] = ''
                          elif mode == 'a':
                              self.channels[channel]['USERS'][target][1] = ''
                          elif mode == 'o':
                              self.channels[channel]['USERS'][target][2] = ''
                          elif mode == 'h':
                              self.channels[channel]['USERS'][target][3] = ''
                          elif mode == 'v':
                              self.channels[channel]['USERS'][target][4] = ''
docs: Parse a channel mode string and update the IRC.channels dictionary.
          Required arguments:
          * mode_string - Mode string to parse.
          * channel - Channel of which the modes were set.