static function getMultiValueMapFromString($s)
 {
     $map = new haxe_ds_StringMap();
     $_g = 0;
     $_g1 = _hx_explode("&", $s);
     while ($_g < $_g1->length) {
         $part = $_g1[$_g];
         ++$_g;
         $index = _hx_index_of($part, "=", null);
         if ($index > 0) {
             $name = _hx_substr($part, 0, $index);
             $val = _hx_substr($part, $index + 1, null);
             ufront_core__MultiValueMap_MultiValueMap_Impl_::add($map, $name, $val);
             unset($val, $name);
         }
         unset($part, $index);
     }
     return $map;
 }
 static function combine($maps)
 {
     $qm = new haxe_ds_StringMap();
     $_g = 0;
     while ($_g < $maps->length) {
         $map = $maps[$_g];
         ++$_g;
         if (null == $map) {
             throw new HException('null iterable');
         }
         $__hx__it = $map->keys();
         while ($__hx__it->hasNext()) {
             unset($key);
             $key = $__hx__it->next();
             $_g1 = 0;
             $_g2 = ufront_core__MultiValueMap_MultiValueMap_Impl_::getAll($map, $key);
             while ($_g1 < $_g2->length) {
                 $val = $_g2[$_g1];
                 ++$_g1;
                 ufront_core__MultiValueMap_MultiValueMap_Impl_::add($qm, $key, $val);
                 unset($val);
             }
             unset($_g2, $_g1);
         }
         unset($map);
     }
     return $qm;
 }
function ufront_web_upload_TmpFileUploadMiddleware_2(&$_g, &$ctx, &$dateStr, &$dir, &$file, &$onData, &$onPart, &$origFileName, &$postName, &$size, &$tmpFilePath)
{
    if ($file !== null) {
        $file->close();
        $file = null;
        $tmpFile = new ufront_web_upload_TmpFileUpload($tmpFilePath, $postName, $origFileName, $size);
        ufront_core__MultiValueMap_MultiValueMap_Impl_::add($ctx->request->get_files(), $postName, $tmpFile);
        $_g->files->push($tmpFile);
    }
    return ufront_core_SurpriseTools::success();
}