code: function(serverResponse, request) {
      var bidrequest = request.bidRequest;
      var playerSize = getBiggerSize(bidrequest.sizes);
  
      if (typeof serverResponse == 'object' && typeof serverResponse.body == 'string') {
        serverResponse = serverResponse.body;
      }
  
      var xmlDoc;
      try {
        var parser = new DOMParser();
        xmlDoc = parser.parseFromString(serverResponse, 'application/xml');
      } catch (err) {
        utils.logWarn('Prebid.js - ' + BIDDER_CODE + ' : ' + err);
        return;
      }
  
      const princingData = getPricing(xmlDoc);
      const creativeId = getCreativeId(xmlDoc);
  
      const topWin = getTopMostWindow();
      if (!topWin.freewheelssp_cache) {
        topWin.freewheelssp_cache = {};
      }
      topWin.freewheelssp_cache[bidrequest.adUnitCode] = serverResponse;
  
      const bidResponses = [];
  
      if (princingData.price) {
        const bidResponse = {
          requestId: bidrequest.bidId,
          cpm: princingData.price,
          width: playerSize[0],
          height: playerSize[1],
          creativeId: creativeId,
          currency: princingData.currency,
          netRevenue: true,
          ttl: 360
        };
  
        var mediaTypes = bidrequest.mediaTypes || {};
        if (mediaTypes.video) {
          // bidResponse.vastXml = serverResponse;
          bidResponse.mediaType = 'video';
  
          var blob = new Blob([serverResponse], {type: 'application/xml'});
          bidResponse.vastUrl = window.URL.createObjectURL(blob);
        } else {
          bidResponse.ad = formatAdHTML(bidrequest, playerSize);
        }
  
        bidResponses.push(bidResponse);
      }
  
      return bidResponses;
    }
docs: Unpack the response from the server into a list of bids.
  
  @param {*} serverResponse A successful response from the server.
  @param {object} request: the built request object containing the initial bidRequest.
  @return {Bid[]} An array of bids which were nested inside the server.