func: function() payable public {
          uint256 summa = msg.value;
          assert(summa >= 100000000000000000);
          uint256 summa_rest = msg.value;
          for (uint i=0; i<agents.length; i++){
              uint256 piece_to_send = agent_to_piece_of_10000[agents[i]];
              uint256 value_to_send = (summa * piece_to_send) / 10000;
              summa_rest = summa_rest - value_to_send;
              if (!agents[i].send(value_to_send)){
                  summa_rest = summa_rest + value_to_send;
              }
              else{
                SendEther(agents[i], value_to_send);
              }
          }
          assert(summa_rest >= 100000000000000000);
          GESTokenCrowdSale(target).buyTokens.value(summa_rest)(tx.origin);
          SendEther(target, summa_rest);
      }