anchor.diff:    String type = "";
   }
   class GetPortMapInfoResult {
  +  String address;
     List<PortMapInfo> infos = [];
  +  GetPortMapInfoResult(String address) {
  +    this.address = address;
  +  }
     add(String ip, String internalPort, String externalPort, String description, String type) {
       infos.add(new PortMapInfo()
         ..description = description
  
positive.code:     return tryAddPortMap();
    }
  
    Future<DeleteAllPortMapResult> deletePortMapFromAppIdDesc({bool reuseRouter: false, newProtocol: UpnpPPPDevice.VALUE_PORT_MAPPING_PROTOCOL_TCP, eagerError: false}) {
      return getPortMapInfo(target: appIdDesc, reuseRouter: reuseRouter, eagerError: eagerError).then((List<GetPortMapInfoResult> results) {
        List<Future> r = [];
        List<int> externalPortList = [];
        for (GetPortMapInfoResult result in results) {
          for (PortMapInfo info in result.infos) {
            try {
              int v = int.parse(info.externalPort);
              if(!externalPortList.contains(v)) {
                externalPortList.add(v);
              }
            } catch (e) {
              ;
            }
          }
        }
        r.add(deleteAllPortMap(externalPortList, newProtocol: newProtocol, reuseRouter:true));
        return Future.wait(r, eagerError: eagerError).then((d) {
          return new DeleteAllPortMapResult();
        });
      });
    }
  
    Future<List<UpnpDeviceInfo>> searchRoutder({bool reuseRouter: false}) async {
      if (reuseRouter == true && _currentUpnpDeviceInfo.length > 0) {
        return _currentUpnpDeviceInfo;
  
negative.code: 
    Future<GetPortMapInfoResult> _getPortMapInfoFromUpnpDeviceInfo(UpnpDeviceInfo info, String target) {
      int index = 0;
      GetPortMapInfoResult result = new GetPortMapInfoResult(info.helperOptAddress);
  
      tryGetPortMapInfo() async {
        UpnpPPPDevice pppDevice = new UpnpPPPDevice(info, verbose: _verbose);
  