anchor.diff:  %% ===================================================================
   
   get_service(Config) ->
  -    Region = to_bin(maps:get(region, Config, ?DEFAULT_REGION)),
  -    Service = to_bin(maps:get(service, Config, s3)),
  -    Scheme = to_bin(maps:get(scheme, Config, <<"https">>)),
  +    #{service:=Service, scheme:=Scheme} = Config,
  +    Region = maps:get(region, Config, ?DEFAULT_REGION),
       DefPort = case Scheme of <<"http">> -> 80; <<"https">> -> 443 end,
       Port = to_bin(maps:get(port, Config, DefPort)),
       Host = case maps:find(host, Config) of
           {ok, ConfigHost} ->
  -            to_bin(ConfigHost);
  +            ConfigHost;
           error ->
               <<Service/binary, $., Region/binary, ".amazonaws.com">>
       end,
  -    FullHost = case Port==<<"80">> orelse Port==<<"443">> of
  +    FullHost = case Port==80 orelse Port==443 of
           true ->
               Host;
           false ->
  
positive.code: 
  value_to_string(String) when is_list(String) ->
      unicode:characters_to_binary(String).
  %%
  %%
  %%%% @private
  %%url_encode(Binary) when is_binary(Binary) ->
  %%    url_encode(unicode:characters_to_list(Binary));
  %%
  %%url_encode(Atom) when is_atom(Atom) ->
  %%    url_encode(atom_to_binary(Atom, utf8));
  %%
  %%url_encode(String) ->
  %%    url_encode(String, []).
  %%
  %%url_encode([], Acc) ->
  %%    list_to_binary(lists:reverse(Acc));
  %%
  %%url_encode([Char|String], Acc)
  %%    when Char >= $A, Char =< $Z;
  %%    Char >= $a, Char =< $z;
  %%    Char >= $0, Char =< $9;
  %%    Char =:= $-; Char =:= $_;
  %%    Char =:= $.; Char =:= $~ ->
  %%    url_encode(String, [Char|Acc]);
  %%
  %%url_encode([Char|String], Acc) ->
  %%    url_encode(String, utf8_encode_char(Char) ++ Acc).
  %%
  %%
  %%%% @private
  %%url_encode_loose(Binary) when is_binary(Binary) ->
  %%    url_encode_loose(binary_to_list(Binary));
  %%
  %%url_encode_loose(Atom) when is_atom(Atom) ->
  %%    url_encode_loose(atom_to_binary(Atom, utf8));
  %%
  %%url_encode_loose(String) ->
  %%    url_encode_loose(String, []).
  %%
  %%url_encode_loose([], Acc) ->
  %%    list_to_binary(lists:reverse(Acc));
  %%
  %%url_encode_loose([Char|String], Acc)
  %%    when Char >= $A, Char =< $Z;
  %%    Char >= $a, Char =< $z;
  %%    Char >= $0, Char =< $9;
  %%    Char =:= $-; Char =:= $_;
  %%    Char =:= $.; Char =:= $~;
  %%    Char =:= $/ ->
  %%    url_encode_loose(String, [Char|Acc]);
  %%
  %%url_encode_loose([Char|String], Acc)
  %%    when Char >=0, Char =< 255 ->
  %%    url_encode_loose(String, [hex_char(Char rem 16), hex_char(Char div 16), $% | Acc]).
  %%
  %%
  %%%% @private
  %%utf8_encode_char(Char) when Char > 16#FFFF, Char =< 16#10FFFF ->
  %%    encode_char(Char band 16#3F + 16#80)
  %%    ++ encode_char((16#3F band (Char bsr 6)) + 16#80)
  %%        ++ encode_char((16#3F band (Char bsr 12)) + 16#80)
  %%        ++ encode_char((Char bsr 18) + 16#F0);
  %%
  %%utf8_encode_char(Char) when Char > 16#7FF, Char =< 16#FFFF ->
  %%    encode_char(Char band 16#3F + 16#80)
  %%    ++ encode_char((16#3F band (Char bsr 6)) + 16#80)
  %%        ++ encode_char((Char bsr 12) + 16#E0);
  %%
  %%utf8_encode_char(Char) when Char > 16#7F, Char =< 16#7FF ->
  %%    encode_char(Char band 16#3F + 16#80)
  %%    ++ encode_char((Char bsr 6) + 16#C0);
  %%
  %%utf8_encode_char(Char) when Char =< 16#7F ->
  %%    encode_char(Char).
  %%
  %%encode_char(Char) ->
  %%    [hex_char(Char rem 16), hex_char(Char div 16), $%].
  %%
  %%
  %%%% @private
  %%hex_char(C) when C < 10 -> $0 + C;
  %%hex_char(C) when C < 16 -> $A + C - 10.
  
  
  %% @private
  
negative.code:     {Uri::binary(), Headers::[{binary(), binary()}]}.
  
  request_v4(Config) ->
      lager:error("NKLOG C ~p", [Config]),
  
      case nklib_syntax:parse(Config, syntax()) of
          {ok, Config2, _} ->
              do_request_v4(Config2);
          {error, Error} ->
              {error, Error}
      end.
  
  
  %% @private
  do_request_v4(Config) ->
      {Region, Service, Host, Url} = get_service(Config),
      Date = iso_8601_basic_time(),
      HexHash = case maps:find(hash, Config) of
  