anchor.diff:  			ok
   	end,
   	IsFileNew = fun(Path,Time) ->
  -								{ok,ICsv} = file:read_file_info(Path),
  -								CStime = butil:sec(ICsv#file_info.mtime),
  -								{CStime > Time,CStime}
  -							end,
  -	% 
  +		{ok,ICsv} = file:read_file_info(Path),
  +		CStime = butil:sec(ICsv#file_info.mtime),
  +		{CStime > Time,CStime}
  +	end,
   	case catch IsFileNew(CSV,P#gip.ipv4time) of
   		{true,I4Time} ->
   			ok;
  
positive.code: code_change(_, State, _) ->
  	{ok, State}.
  init(_) ->
  	% filelib:ensure_dir(butil:project_rootpath()++"/priv/geoip/"),
  	C = ets:new(countries,[set,private,{keypos,#ci.country}]),
  	% [ets:insert(C,{Ctry}) || Ctry <- tuple_to_list(?COUNTRIES)],
  	% [ets:insert(C,{{langs, Ctry},L}) || {Ctry,L} <- ?LANGUAGES],
  	ets:insert(C,consci(europe(), [])),
  	ets:insert(C,consci(asia(), [])),
  	ets:insert(C,consci(america(), [])),
  	Loclangs = dict:from_list(loclangs()),
  	case filelib:is_dir(butil:project_rootpath()++"/priv/geoip/") of
  		true ->
  			self() ! {check_file,0};
  		_ ->
  			ok
  	end,
  	{ok, #gip{countries = C,loclangs = Loclangs}}.
  
  check_update_csv() ->
  	case application:get_env(bkdcore,geoipv4) of
  
negative.code: 
  print_info() ->
  	gen_server:cast(?MODULE, {print_info}).
  
  