+my $etag;
+if ($cgi_var{info} and not defined $cgi_var{dot}) {
+ $etag = etag_does_not_match(cgi=>$q,
+ additional_data=>[grep {defined $_ ? $_ : ()}
+ @cgi_var{(qw(package ignore_boring),
+ qw(collapse))
+ },
+ $this,
+ $VERSION],
+ );
+ if (not $etag) {
+ print $q->header(-status => 304);
+ print "304: Not modified\n";
+ exit 0;
+ }
+ print $q->header(-status => 200,
+ -cache_control => 'public, max-age=86400',
+ -etag => $etag,
+ -content_type => 'text/html',
+ );
+ print <<END;
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+END
+ print '<head><title>'.html_escape($cgi_var{package}).' Version Graph</title></head>'."\n";
+ print "<body>\n";
+ print '<a href="'.html_escape(munge_url($this,ignore_boring=>$cgi_var{ignore_boring}?0:1)).
+ '">['.($cgi_var{ignore_boring}?"Don't i":'I').'gnore boring]</a> ';
+ print '<a href="'.html_escape(munge_url($this,collapse=>$cgi_var{collapse}?0:1)).
+ '">['.($cgi_var{collapse}?"Don't c":'C').'ollapse]</a> ';
+ print '<a href="'.html_escape(munge_url($this,dot=>1)).
+ '">[Dot]</a><br>';
+ print '<img src="'.html_escape(munge_url($this,info=>0)).'">';
+ print <<END;
+</body>
+</html>
+END
+ exit 0;
+}
+
+# we want to first load the appropriate file,
+# then figure out which versions are there in which architectures,
+my %versions;
+my %version_to_dist;
+for my $dist (@{$config{distributions}}) {
+ $versions{$dist} = [get_versions(package => [split /\s*,\s*/, $cgi_var{package}],
+ dist => $dist,
+ source => 1,
+ @schema_arg,
+ )];
+ # make version_to_dist
+ foreach my $version (@{$versions{$dist}}){
+ push @{$version_to_dist{$version}}, $dist;
+ }
+}
+