code: func (ct *costTracker) makeCostList() RequestCostList {
  	maxCost := func(avgTime, inSize, outSize uint64) uint64 {
  		globalFactor := ct.globalFactor()
  
  		cost := avgTime * maxCostFactor
  		inSizeCost := uint64(float64(inSize) * ct.inSizeFactor * globalFactor * maxCostFactor)
  		if inSizeCost > cost {
  			cost = inSizeCost
  		}
  		outSizeCost := uint64(float64(outSize) * ct.outSizeFactor * globalFactor * maxCostFactor)
  		if outSizeCost > cost {
  			cost = outSizeCost
  		}
  		return cost
  	}
  	var list RequestCostList
  	for code, data := range reqAvgTimeCost {
  		list = append(list, requestCostListItem{
  			MsgCode:  code,
  			BaseCost: maxCost(data.baseCost, reqMaxInSize[code].baseCost, reqMaxOutSize[code].baseCost),
  			ReqCost:  maxCost(data.reqCost, reqMaxInSize[code].reqCost, reqMaxOutSize[code].reqCost),
  		})
  	}
  	return list
  }
docs: // makeCostList returns upper cost estimates based on the hardcoded cost estimate
  // tables and the optionally specified incoming/outgoing bandwidth limits