public final void CompleteTrade() {
	for (final IItem item : exchangeItems) {
	    byte flag = item.getFlag();

	    if (ItemFlag.KARMA_EQ.check(flag)) {
		item.setFlag((byte) (flag - ItemFlag.KARMA_EQ.getValue()));
	    } else if (ItemFlag.KARMA_USE.check(flag)) {
		item.setFlag((byte) (flag - ItemFlag.KARMA_USE.getValue()));
	    }
	    MapleInventoryManipulator.addFromDrop(chr.getClient(), item, false);
	}
	if (exchangeMeso > 0) {
	    chr.gainMeso(exchangeMeso - GameConstants.getTaxAmount(exchangeMeso), false, true, false);
	}
	exchangeMeso = 0;
	if (exchangeItems != null) { // just to be on the safe side...
	    exchangeItems.clear();
	}
	chr.getClient().getSession().write(MaplePacketCreator.TradeMessage(tradingslot, (byte) 0x06));
    }