diff -u'rNF^function' iproute2-2.6.16-060323_orig/include/linux/pkt_sched.h iproute2-2.6.16-060323/include/linux/pkt_sched.h --- iproute2-2.6.16-060323_orig/include/linux/pkt_sched.h 2005-12-10 00:27:44.000000000 +0100 +++ iproute2-2.6.16-060323/include/linux/pkt_sched.h 2006-09-21 12:52:21.000000000 +0200 @@ -430,6 +430,8 @@ TCA_NETEM_DELAY_DIST, TCA_NETEM_REORDER, TCA_NETEM_CORRUPT, + TCA_NETEM_TRACE, + TCA_NETEM_STATS, __TCA_NETEM_MAX, }; @@ -445,6 +447,37 @@ __u32 jitter; /* random jitter in latency (us) */ }; +struct tc_netem_stats +{ + int packetcount; + int packetok; + int normaldelay; + int drops; + int dupl; + int corrupt; + int novaliddata; + int uninitialized; + int bufferunderrun; + int bufferinuseempty; + int noemptybuffer; + int readbehindbuffer; + int buffer1_reloads; + int buffer2_reloads; + int tobuffer1_switch; + int tobuffer2_switch; + int switch_to_emptybuffer1; + int switch_to_emptybuffer2; +}; + + +struct tc_netem_trace +{ + __u32 fid; + __u32 def; + __u32 ticks; +}; + + struct tc_netem_corr { __u32 delay_corr; /* delay correlation */ diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/distribution/experimental.dat iproute2-2.6.16-060323/netem/distribution/experimental.dat --- iproute2-2.6.16-060323_orig/netem/distribution/experimental.dat 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/distribution/experimental.dat 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,13448 @@ +211.6 +205.6 +203.0 +218.6 +213.9 +199.1 +208.7 +207.7 +203.4 +201.7 +200.3 +213.8 +213.4 +209.8 +204.3 +201.8 +196.3 +216.2 +208.9 +202.4 +205.2 +211.1 +210.9 +208.5 +199.9 +211.6 +211.9 +204.6 +215.4 +202.5 +206.5 +201.1 +198.4 +220.2 +203.7 +219.5 +199.1 +207.6 +205.3 +202.3 +219.7 +230.0 +211.0 +202.7 +209.9 +215.4 +202.9 +209.6 +200.5 +197.3 +212.3 +207.6 +210.5 +202.7 +205.7 +211.2 +208.0 +211.0 +209.4 +204.8 +204.8 +208.7 +210.1 +205.3 +202.5 +210.4 +209.4 +204.5 +204.7 +215.0 +202.6 +209.9 +220.2 +203.8 +206.3 +199.4 +221.8 +200.0 +199.6 +209.3 +206.2 +215.8 +196.9 +211.6 +198.4 +201.2 +209.4 +204.3 +219.0 +212.7 +214.6 +196.3 +202.0 +201.9 +197.5 +229.5 +207.5 +213.8 +209.2 +212.9 +193.9 +200.8 +208.6 +196.8 +201.3 +204.9 +204.7 +209.5 +211.3 +215.3 +203.7 +190.1 +235.6 +203.8 +210.0 +209.7 +214.3 +213.0 +206.3 +197.7 +208.2 +226.3 +216.5 +198.0 +201.3 +211.3 +195.8 +210.9 +208.1 +201.2 +201.7 +213.1 +207.9 +206.6 +207.1 +202.2 +199.6 +205.5 +207.3 +219.7 +204.1 +204.4 +209.0 +212.7 +196.4 +214.0 +208.8 +209.7 +217.2 +196.2 +195.0 +227.7 +207.2 +233.3 +207.9 +204.0 +194.4 +219.2 +208.7 +198.6 +205.0 +204.0 +223.7 +207.4 +209.2 +208.7 +205.4 +212.8 +207.8 +203.0 +204.1 +221.0 +198.4 +217.7 +218.4 +374.2 +220.1 +210.8 +212.1 +214.3 +213.3 +210.3 +202.4 +209.7 +218.1 +205.0 +204.5 +220.3 +209.8 +218.3 +216.6 +206.0 +208.9 +221.0 +213.0 +202.1 +204.2 +220.6 +212.4 +226.1 +208.8 +206.1 +220.7 +219.3 +210.9 +211.2 +213.0 +201.4 +210.5 +206.2 +201.9 +224.5 +219.3 +201.1 +195.6 +223.6 +196.7 +213.7 +202.3 +215.6 +211.4 +209.6 +207.6 +212.4 +203.4 +205.4 +216.1 +216.7 +205.3 +213.9 +208.9 +208.4 +205.1 +199.3 +200.6 +199.1 +203.2 +207.6 +203.8 +201.9 +208.5 +196.4 +213.6 +217.6 +201.5 +210.1 +213.5 +203.8 +214.1 +211.9 +201.5 +186.9 +199.7 +209.1 +200.2 +205.8 +206.7 +200.0 +198.1 +209.3 +207.8 +208.7 +208.0 +208.6 +231.3 +214.5 +210.1 +200.8 +208.9 +216.9 +205.7 +214.9 +236.8 +200.9 +219.1 +204.6 +210.0 +214.0 +222.6 +209.6 +207.0 +196.3 +207.7 +207.9 +208.0 +220.2 +198.2 +204.9 +204.1 +201.0 +204.8 +213.3 +203.9 +222.5 +205.2 +203.5 +209.7 +212.1 +210.1 +221.1 +210.2 +208.0 +201.4 +209.0 +211.9 +201.6 +214.4 +199.6 +198.8 +210.2 +207.3 +206.5 +204.8 +196.3 +199.8 +206.4 +195.3 +202.8 +202.7 +203.8 +211.2 +208.4 +198.6 +202.0 +214.9 +204.2 +201.1 +195.9 +196.1 +211.2 +197.0 +207.7 +196.6 +205.7 +211.4 +201.4 +205.0 +195.5 +198.9 +214.4 +207.3 +204.2 +207.2 +198.5 +220.7 +214.1 +213.2 +207.7 +203.6 +265.8 +221.0 +213.1 +195.4 +197.3 +213.0 +207.7 +206.0 +198.4 +202.3 +213.9 +218.6 +207.6 +206.1 +212.8 +216.8 +213.7 +209.8 +198.1 +202.4 +205.3 +207.0 +209.2 +209.9 +204.4 +199.6 +205.5 +203.9 +216.0 +213.1 +202.4 +199.0 +219.5 +193.9 +197.3 +212.2 +216.7 +217.5 +201.0 +206.2 +202.9 +211.3 +203.1 +218.0 +208.6 +217.8 +209.0 +211.8 +220.1 +212.7 +207.2 +221.2 +215.2 +196.9 +216.6 +203.1 +207.1 +216.7 +206.7 +215.0 +219.3 +204.3 +219.6 +207.1 +211.8 +210.2 +217.2 +207.9 +219.9 +205.4 +201.1 +214.1 +205.8 +212.5 +222.8 +211.9 +217.4 +203.8 +222.9 +206.6 +207.6 +197.5 +206.2 +218.5 +220.3 +207.7 +203.5 +226.4 +216.8 +206.0 +193.2 +198.2 +201.3 +202.4 +208.5 +212.6 +205.0 +202.2 +210.0 +202.4 +203.9 +193.3 +212.4 +203.4 +212.1 +206.1 +206.9 +207.0 +216.1 +201.1 +204.7 +202.4 +207.5 +203.9 +200.9 +210.0 +207.1 +217.2 +197.4 +199.2 +210.8 +209.2 +218.4 +200.2 +211.7 +213.6 +203.3 +197.9 +203.0 +204.2 +207.9 +209.4 +225.4 +237.3 +209.5 +208.2 +207.5 +207.0 +203.0 +219.3 +228.3 +213.5 +205.1 +198.9 +212.7 +201.5 +210.0 +206.5 +203.3 +206.1 +210.1 +219.7 +206.8 +215.4 +220.4 +217.3 +211.4 +206.0 +208.3 +207.3 +205.5 +210.8 +209.3 +197.2 +207.2 +191.7 +204.2 +207.2 +216.1 +209.1 +203.8 +201.8 +208.7 +212.4 +214.5 +213.8 +201.3 +219.7 +214.8 +211.9 +223.8 +208.6 +203.5 +207.4 +207.0 +198.0 +208.2 +218.6 +205.1 +214.6 +215.2 +215.3 +204.3 +210.1 +221.9 +210.7 +198.2 +205.2 +201.1 +219.0 +207.2 +205.9 +203.8 +200.5 +217.5 +208.7 +208.4 +192.6 +211.0 +209.1 +206.5 +197.4 +202.1 +210.0 +198.3 +222.2 +211.9 +212.3 +222.2 +195.1 +200.7 +212.1 +208.3 +211.8 +211.7 +206.5 +211.8 +207.6 +214.2 +207.7 +204.7 +208.2 +208.4 +207.9 +212.1 +223.2 +206.3 +205.6 +201.8 +211.9 +207.6 +203.0 +221.2 +206.3 +222.4 +253.5 +204.4 +218.9 +211.9 +210.9 +214.0 +226.7 +214.4 +199.7 +213.8 +207.0 +201.8 +206.6 +203.1 +202.1 +203.6 +213.9 +196.9 +200.4 +204.6 +333.4 +204.5 +220.9 +207.3 +212.1 +203.7 +200.9 +198.2 +204.0 +201.4 +198.2 +209.6 +211.5 +201.2 +200.4 +207.4 +200.7 +213.8 +207.7 +188.0 +210.0 +210.5 +207.3 +198.6 +206.1 +186.9 +201.4 +204.0 +200.8 +207.8 +211.7 +198.7 +206.1 +213.0 +214.8 +212.8 +208.8 +210.4 +206.5 +210.1 +201.7 +202.7 +201.3 +194.1 +200.8 +196.8 +204.2 +217.5 +209.0 +198.7 +203.2 +213.8 +198.0 +207.1 +204.0 +215.3 +199.5 +214.1 +200.1 +206.9 +219.9 +204.8 +208.6 +207.8 +207.5 +203.8 +210.9 +210.6 +205.3 +202.1 +212.9 +214.8 +210.9 +217.2 +218.3 +221.5 +201.8 +212.7 +215.0 +206.7 +222.8 +210.9 +211.5 +202.0 +208.1 +268.9 +205.8 +204.0 +198.4 +206.3 +209.3 +206.4 +207.4 +226.9 +209.9 +199.6 +206.5 +210.9 +224.1 +211.9 +214.4 +212.2 +211.5 +209.4 +205.3 +204.8 +207.7 +208.9 +213.7 +201.0 +217.4 +198.1 +219.0 +206.5 +229.1 +220.1 +196.8 +203.1 +208.8 +201.7 +195.7 +207.0 +202.4 +206.6 +204.9 +196.6 +204.3 +198.6 +203.9 +215.8 +194.9 +202.7 +225.5 +205.9 +201.4 +213.1 +214.2 +218.8 +209.4 +204.4 +206.7 +209.8 +198.4 +211.8 +212.1 +209.1 +202.3 +213.7 +215.5 +218.3 +209.1 +216.6 +214.8 +206.4 +205.6 +214.4 +209.2 +211.7 +211.3 +211.0 +205.6 +204.2 +191.7 +213.8 +204.9 +205.3 +212.0 +199.9 +198.3 +211.8 +203.0 +212.2 +203.0 +201.8 +214.4 +214.1 +199.6 +205.3 +208.2 +196.7 +196.7 +209.1 +205.1 +212.5 +213.1 +197.3 +208.8 +218.0 +220.0 +198.4 +206.3 +206.9 +253.2 +194.3 +202.6 +210.6 +219.1 +197.8 +197.1 +194.0 +211.6 +209.6 +198.3 +213.0 +207.7 +207.0 +213.3 +206.9 +197.6 +204.8 +202.0 +200.0 +215.2 +204.5 +206.3 +206.7 +203.2 +194.9 +206.3 +209.9 +210.6 +214.2 +208.6 +207.4 +213.9 +210.4 +210.0 +200.6 +203.8 +202.7 +204.2 +202.7 +210.2 +192.5 +215.4 +211.7 +208.3 +204.8 +203.3 +197.7 +216.7 +200.9 +203.6 +208.6 +206.5 +209.9 +200.1 +198.4 +203.3 +210.4 +211.6 +202.0 +203.1 +204.0 +204.0 +215.0 +211.4 +202.0 +197.2 +197.6 +209.9 +205.4 +213.1 +199.1 +212.4 +216.1 +218.3 +214.6 +224.1 +206.9 +199.4 +213.4 +261.2 +199.4 +208.8 +209.9 +205.7 +203.1 +203.2 +204.6 +201.6 +210.6 +213.2 +214.8 +203.8 +204.9 +220.7 +201.5 +212.5 +216.8 +209.7 +203.1 +213.3 +204.7 +218.2 +215.5 +215.6 +211.6 +214.2 +205.1 +216.6 +216.3 +203.5 +200.8 +213.7 +221.9 +215.0 +210.2 +217.1 +214.7 +208.8 +217.4 +231.1 +213.7 +215.0 +213.5 +216.7 +207.7 +201.0 +210.4 +210.9 +206.7 +203.7 +199.2 +209.3 +206.3 +202.4 +210.1 +212.3 +202.2 +207.2 +197.8 +205.9 +202.0 +214.2 +203.5 +204.4 +200.0 +204.0 +193.8 +192.3 +229.0 +204.5 +194.8 +213.6 +215.9 +214.8 +221.6 +208.5 +201.5 +204.4 +206.4 +194.5 +199.4 +201.5 +209.7 +212.5 +202.1 +208.2 +205.4 +204.5 +199.4 +194.5 +199.6 +201.5 +206.2 +219.9 +198.5 +216.2 +195.7 +205.0 +208.0 +204.9 +195.9 +207.4 +216.9 +195.9 +204.4 +208.3 +206.1 +188.5 +202.3 +201.7 +200.5 +206.2 +191.5 +218.6 +206.5 +208.9 +209.9 +201.5 +212.7 +203.2 +209.7 +212.1 +208.4 +207.2 +206.5 +204.5 +222.7 +207.6 +207.4 +210.3 +212.2 +219.1 +215.2 +211.1 +205.9 +205.5 +205.9 +203.1 +205.4 +184.5 +205.0 +194.8 +213.5 +209.8 +195.4 +202.9 +205.3 +196.3 +202.0 +198.2 +201.5 +195.3 +230.9 +207.8 +212.6 +202.7 +204.8 +205.0 +202.8 +206.2 +200.2 +202.7 +203.5 +205.5 +196.9 +209.4 +212.1 +200.8 +205.0 +208.0 +207.1 +198.0 +204.8 +205.8 +200.9 +202.1 +202.4 +206.9 +209.1 +199.7 +197.1 +206.9 +200.2 +193.7 +195.0 +250.8 +207.5 +204.5 +208.8 +209.8 +194.8 +200.2 +205.1 +197.3 +208.3 +200.4 +204.7 +211.1 +203.4 +218.2 +194.6 +201.5 +202.2 +202.9 +198.8 +218.2 +201.7 +189.8 +210.1 +208.0 +204.3 +205.8 +204.2 +207.8 +200.2 +197.9 +198.9 +208.1 +202.4 +196.2 +195.5 +204.6 +211.0 +205.0 +193.6 +197.2 +198.6 +193.8 +198.9 +232.4 +201.8 +212.2 +208.6 +204.5 +199.3 +211.2 +203.1 +209.7 +214.3 +203.9 +200.3 +203.3 +206.1 +206.9 +209.1 +209.1 +199.3 +199.4 +198.8 +198.9 +199.9 +193.7 +204.6 +203.4 +199.7 +212.6 +200.7 +208.1 +198.8 +200.5 +209.2 +208.4 +205.7 +197.1 +202.6 +199.5 +208.4 +200.1 +204.9 +202.9 +201.5 +207.6 +200.6 +204.2 +210.0 +207.1 +205.1 +198.5 +204.9 +196.5 +208.0 +202.4 +202.7 +196.2 +206.9 +201.5 +203.3 +198.7 +211.9 +208.4 +206.7 +209.4 +204.0 +202.3 +205.0 +205.3 +206.0 +213.1 +205.7 +199.3 +206.2 +204.6 +209.3 +205.7 +202.7 +213.3 +202.3 +197.8 +196.5 +193.4 +211.6 +209.9 +195.5 +196.2 +210.2 +207.1 +207.0 +221.8 +217.2 +215.4 +207.0 +200.1 +207.5 +206.0 +200.7 +190.9 +209.8 +213.5 +206.3 +196.0 +213.1 +202.7 +211.6 +196.5 +209.9 +212.3 +199.9 +206.8 +225.1 +203.9 +204.3 +197.7 +203.5 +203.2 +193.5 +200.9 +201.4 +189.1 +203.9 +194.5 +205.4 +204.8 +204.9 +201.3 +208.4 +196.9 +206.8 +207.7 +201.6 +210.3 +211.6 +209.8 +200.2 +205.2 +197.6 +195.9 +212.8 +206.4 +201.0 +208.2 +207.5 +202.5 +193.3 +206.5 +221.2 +198.8 +216.6 +217.0 +209.1 +206.6 +197.7 +211.0 +199.9 +198.0 +210.4 +200.5 +211.7 +219.6 +206.8 +207.2 +210.6 +205.4 +203.8 +207.4 +206.2 +205.1 +208.7 +196.3 +204.7 +210.8 +214.4 +196.3 +206.5 +210.8 +193.2 +203.3 +203.9 +207.7 +194.9 +203.7 +195.5 +218.7 +201.1 +199.5 +207.6 +209.3 +207.5 +205.7 +203.9 +205.4 +201.3 +205.8 +205.4 +208.8 +214.3 +203.4 +207.5 +188.9 +205.5 +200.7 +212.5 +197.9 +219.0 +213.6 +197.3 +202.7 +216.3 +205.0 +210.2 +203.2 +203.9 +206.8 +213.6 +200.1 +204.4 +211.4 +213.4 +200.2 +208.4 +209.1 +198.8 +207.4 +195.0 +205.6 +200.5 +204.3 +201.9 +206.4 +199.0 +196.1 +207.6 +195.4 +197.2 +200.7 +190.8 +211.9 +191.5 +201.4 +193.5 +205.1 +206.8 +199.5 +207.4 +209.8 +199.1 +194.6 +201.6 +211.6 +206.8 +203.9 +196.8 +206.3 +210.1 +200.6 +227.4 +201.9 +210.8 +205.8 +217.2 +205.8 +196.1 +200.7 +213.8 +205.4 +211.6 +212.3 +213.6 +201.7 +199.9 +203.2 +212.6 +211.0 +208.1 +198.1 +201.7 +211.6 +207.4 +212.4 +207.3 +214.9 +214.5 +214.5 +202.7 +200.1 +206.4 +213.4 +189.7 +203.4 +202.2 +198.2 +206.5 +213.7 +207.6 +202.8 +209.2 +205.5 +196.4 +207.6 +207.4 +207.3 +188.8 +215.6 +195.4 +207.7 +208.2 +200.9 +208.4 +203.3 +210.8 +199.6 +208.3 +206.7 +201.6 +202.9 +197.5 +206.4 +209.0 +208.4 +211.6 +204.4 +210.0 +190.9 +199.3 +207.6 +202.5 +197.0 +200.8 +203.1 +204.0 +199.0 +208.0 +204.6 +196.6 +200.8 +205.2 +198.8 +203.0 +208.3 +200.1 +205.5 +203.7 +202.2 +203.8 +211.5 +201.8 +213.2 +207.4 +207.8 +202.2 +208.2 +204.2 +200.4 +186.1 +188.5 +220.4 +212.8 +193.3 +196.9 +203.0 +207.3 +202.4 +201.7 +204.8 +192.2 +218.7 +226.3 +209.5 +201.4 +207.3 +202.6 +210.7 +208.4 +208.4 +207.4 +210.4 +191.2 +203.6 +197.1 +207.5 +197.8 +206.2 +214.5 +208.2 +207.3 +204.7 +199.6 +206.3 +189.0 +214.4 +209.4 +208.1 +199.9 +190.5 +223.0 +198.8 +201.1 +192.4 +204.0 +209.0 +206.7 +204.3 +198.7 +210.9 +212.0 +204.8 +204.2 +199.5 +203.5 +203.0 +190.6 +207.9 +207.9 +193.2 +210.9 +200.1 +207.6 +193.6 +204.9 +197.7 +200.9 +213.0 +215.0 +204.4 +196.6 +209.6 +209.9 +199.8 +198.8 +202.1 +203.4 +205.4 +204.4 +196.2 +190.7 +210.9 +197.7 +194.7 +204.0 +201.5 +195.3 +209.0 +203.6 +196.1 +205.2 +206.7 +206.6 +191.4 +193.4 +206.6 +205.9 +207.9 +201.7 +213.3 +199.4 +202.8 +196.1 +208.3 +206.4 +205.2 +191.9 +207.3 +191.5 +210.8 +200.9 +210.4 +208.3 +211.0 +202.7 +198.8 +196.8 +202.7 +196.9 +214.6 +210.2 +226.1 +220.8 +213.5 +194.9 +210.4 +203.7 +203.7 +180.8 +213.7 +208.0 +209.8 +209.7 +213.8 +185.5 +208.5 +203.5 +212.8 +193.1 +199.2 +211.0 +217.4 +211.0 +202.7 +205.0 +208.6 +197.5 +197.1 +201.0 +195.9 +208.4 +205.7 +205.8 +194.0 +204.4 +194.5 +194.3 +200.1 +209.5 +218.0 +202.8 +197.5 +206.7 +199.8 +205.2 +201.4 +205.2 +186.0 +208.4 +218.4 +206.7 +201.9 +209.7 +208.0 +203.9 +193.1 +202.0 +198.0 +199.5 +211.0 +191.8 +198.7 +197.3 +195.6 +202.9 +203.4 +206.1 +205.6 +207.5 +220.8 +204.7 +207.7 +252.5 +203.9 +203.2 +201.3 +200.1 +201.1 +196.8 +197.6 +206.4 +209.6 +197.9 +199.4 +212.6 +205.4 +200.9 +197.5 +202.2 +199.5 +206.7 +215.1 +216.4 +221.9 +199.2 +246.4 +196.0 +205.1 +205.4 +207.8 +192.6 +204.6 +209.2 +213.4 +198.9 +205.3 +205.8 +201.1 +195.2 +199.4 +200.8 +210.5 +202.3 +217.9 +208.4 +220.8 +218.4 +195.7 +199.4 +198.8 +192.0 +210.9 +218.5 +194.5 +203.6 +195.0 +208.8 +197.4 +204.1 +200.7 +201.0 +206.6 +202.2 +208.7 +213.1 +198.3 +212.2 +201.9 +206.3 +203.4 +198.0 +198.0 +205.3 +199.6 +196.6 +202.8 +201.7 +208.7 +195.6 +199.4 +205.4 +205.2 +202.2 +193.3 +191.9 +195.1 +201.1 +210.5 +208.7 +196.9 +193.4 +200.8 +199.6 +204.1 +200.4 +197.6 +204.1 +206.9 +205.2 +206.9 +194.7 +200.4 +198.8 +201.7 +201.8 +207.0 +193.2 +199.9 +201.3 +192.5 +197.9 +206.9 +190.0 +203.8 +208.8 +200.9 +203.3 +194.5 +192.6 +204.9 +205.5 +196.6 +194.8 +197.9 +198.1 +211.2 +198.8 +202.2 +205.9 +199.5 +204.7 +201.6 +201.2 +203.4 +204.2 +190.7 +206.7 +205.4 +208.4 +203.1 +204.2 +198.4 +194.3 +191.6 +198.9 +203.5 +198.7 +192.2 +198.4 +194.5 +181.1 +200.9 +200.0 +209.2 +210.4 +200.0 +201.1 +193.9 +207.0 +193.4 +202.6 +192.8 +196.0 +203.8 +184.2 +179.3 +202.3 +191.4 +199.7 +195.4 +189.9 +197.0 +187.5 +192.1 +198.3 +202.2 +205.0 +212.3 +198.0 +205.5 +210.1 +197.6 +198.7 +206.6 +203.4 +194.3 +181.2 +199.0 +202.4 +189.1 +181.6 +200.4 +188.1 +180.1 +203.1 +201.1 +195.5 +201.6 +201.3 +197.6 +196.0 +205.5 +184.9 +186.5 +190.8 +188.6 +207.2 +199.5 +198.6 +199.8 +212.2 +208.1 +196.9 +199.6 +205.3 +196.9 +188.9 +205.4 +212.5 +197.5 +201.8 +188.8 +187.1 +199.9 +195.4 +188.7 +198.7 +185.0 +191.6 +193.3 +191.8 +209.4 +197.4 +195.2 +189.4 +189.7 +199.9 +199.3 +188.7 +188.3 +190.9 +181.6 +209.8 +194.6 +198.2 +199.9 +198.1 +186.8 +195.3 +190.9 +198.8 +189.3 +207.5 +179.2 +188.8 +185.6 +206.2 +184.8 +190.7 +203.5 +199.2 +202.0 +197.6 +197.2 +196.4 +210.4 +200.1 +194.8 +186.7 +198.2 +197.8 +186.5 +200.2 +192.7 +192.7 +190.4 +220.9 +207.5 +188.6 +198.5 +203.0 +202.2 +189.6 +177.3 +194.8 +195.2 +243.9 +196.5 +180.6 +214.6 +196.4 +220.6 +194.7 +200.5 +193.7 +199.7 +203.0 +201.4 +187.7 +199.8 +191.8 +203.9 +203.8 +191.3 +206.6 +201.7 +202.1 +202.6 +200.0 +203.6 +195.9 +204.8 +212.8 +199.2 +203.3 +206.6 +192.2 +205.0 +198.9 +205.3 +195.0 +198.1 +190.4 +203.7 +188.2 +204.2 +211.1 +192.5 +194.5 +198.3 +205.7 +198.5 +210.2 +206.8 +195.4 +200.8 +202.7 +220.0 +204.1 +209.5 +200.2 +187.1 +205.4 +202.6 +203.3 +214.1 +193.8 +207.4 +208.2 +204.9 +215.9 +202.6 +198.0 +193.8 +198.2 +206.2 +203.9 +190.6 +210.8 +195.6 +207.6 +206.6 +195.4 +189.9 +199.7 +203.1 +207.1 +192.2 +197.3 +197.6 +193.3 +207.9 +201.3 +206.8 +201.9 +195.7 +204.1 +201.1 +192.5 +206.7 +213.1 +195.2 +205.1 +196.2 +203.5 +195.5 +200.3 +194.7 +194.5 +200.6 +211.2 +202.1 +194.6 +199.9 +212.6 +206.8 +196.2 +205.8 +202.8 +201.6 +205.2 +205.8 +193.1 +202.0 +196.2 +208.1 +209.5 +199.8 +208.8 +192.3 +207.9 +201.3 +205.7 +205.9 +208.6 +210.3 +202.2 +212.1 +210.3 +199.6 +200.8 +209.1 +202.5 +215.0 +201.5 +209.2 +207.0 +215.3 +205.6 +213.7 +203.7 +199.8 +201.4 +194.7 +194.3 +188.7 +200.9 +203.8 +203.2 +212.5 +207.0 +211.3 +204.3 +204.5 +194.0 +210.7 +207.1 +207.5 +200.7 +200.8 +200.7 +200.1 +203.7 +191.1 +201.8 +194.8 +195.2 +197.4 +190.5 +192.7 +206.6 +200.8 +204.3 +206.5 +209.8 +202.5 +207.6 +198.4 +203.3 +202.1 +200.6 +198.4 +191.0 +203.5 +198.6 +184.3 +183.7 +189.1 +205.4 +187.8 +194.5 +199.2 +196.4 +210.9 +176.8 +191.6 +182.7 +181.3 +205.7 +203.2 +186.3 +187.6 +189.1 +180.8 +180.2 +187.6 +194.9 +192.8 +185.2 +198.3 +209.3 +177.5 +193.9 +193.1 +203.4 +192.1 +200.9 +182.6 +204.9 +197.6 +212.8 +206.9 +193.3 +201.0 +195.3 +197.1 +189.6 +198.5 +190.4 +188.8 +197.7 +189.9 +200.7 +196.8 +186.3 +181.5 +184.9 +200.2 +198.7 +205.8 +200.2 +198.3 +207.9 +206.1 +201.5 +197.8 +199.5 +198.1 +211.3 +201.6 +202.4 +196.0 +197.7 +209.2 +199.3 +205.5 +191.6 +206.4 +196.5 +209.5 +203.4 +201.4 +200.1 +205.2 +190.9 +205.1 +197.5 +196.1 +194.4 +194.7 +188.9 +180.8 +206.5 +199.8 +193.1 +195.2 +192.7 +199.2 +199.5 +188.1 +180.2 +191.0 +206.9 +208.2 +202.5 +200.0 +207.0 +201.6 +195.6 +195.6 +195.0 +196.3 +190.2 +194.0 +182.9 +192.1 +206.5 +181.4 +192.3 +199.6 +201.6 +192.4 +200.5 +207.1 +198.5 +198.8 +190.8 +200.3 +199.3 +200.5 +187.7 +208.3 +205.6 +189.3 +198.4 +204.9 +197.4 +198.7 +190.6 +214.5 +212.5 +207.6 +196.9 +183.4 +185.1 +205.8 +226.5 +202.5 +201.8 +202.9 +210.4 +189.7 +195.6 +198.7 +193.0 +198.8 +193.1 +202.5 +195.2 +195.0 +198.3 +203.6 +208.3 +195.9 +200.8 +189.4 +207.9 +182.8 +194.9 +199.7 +180.7 +187.2 +189.5 +196.1 +190.1 +192.5 +185.7 +212.2 +204.2 +191.9 +184.5 +182.5 +198.5 +191.0 +192.0 +195.6 +201.1 +193.7 +203.8 +200.5 +199.1 +190.3 +209.5 +195.0 +184.0 +193.6 +203.3 +191.4 +194.9 +195.5 +193.5 +182.7 +189.7 +196.1 +178.9 +199.5 +195.3 +185.9 +199.1 +210.0 +195.7 +193.8 +196.4 +195.3 +201.4 +209.5 +205.6 +197.5 +188.9 +193.8 +185.3 +193.3 +198.1 +201.4 +184.7 +182.5 +183.7 +185.5 +199.8 +200.3 +194.1 +176.9 +192.2 +200.0 +186.4 +191.6 +200.1 +202.3 +205.1 +186.4 +182.3 +194.7 +177.5 +201.4 +189.6 +195.5 +185.4 +194.8 +204.1 +188.0 +182.1 +181.7 +184.5 +234.2 +209.4 +193.3 +204.0 +184.7 +194.3 +193.4 +191.1 +188.3 +193.9 +198.2 +202.8 +198.1 +191.2 +200.9 +205.4 +203.6 +193.8 +215.8 +185.8 +195.4 +204.7 +190.3 +190.7 +177.7 +182.1 +193.2 +178.3 +199.3 +203.5 +187.3 +198.8 +187.8 +187.7 +186.7 +200.0 +190.0 +203.1 +181.7 +207.2 +183.8 +180.3 +193.5 +190.2 +193.7 +198.6 +195.6 +192.1 +200.5 +188.6 +190.9 +188.0 +192.8 +191.4 +179.9 +197.6 +200.6 +206.1 +201.3 +199.6 +198.8 +201.0 +180.2 +202.9 +197.3 +186.1 +200.5 +182.4 +192.7 +194.5 +182.8 +193.9 +195.1 +187.7 +201.0 +196.1 +194.0 +198.8 +192.8 +186.1 +200.6 +186.3 +187.6 +178.0 +175.8 +198.9 +199.3 +193.4 +193.3 +198.7 +194.5 +180.9 +197.3 +189.7 +193.0 +208.2 +200.1 +193.9 +211.2 +206.6 +210.2 +185.5 +180.8 +206.8 +185.5 +195.8 +199.3 +187.9 +194.9 +175.8 +198.1 +199.0 +200.6 +300.8 +194.0 +199.7 +181.2 +189.9 +195.3 +209.6 +198.1 +184.9 +192.5 +188.8 +193.8 +201.4 +208.2 +192.5 +199.9 +185.0 +207.5 +196.5 +198.8 +193.3 +200.1 +186.7 +194.4 +194.3 +197.2 +198.4 +192.8 +194.3 +188.6 +194.7 +190.7 +192.1 +194.5 +185.7 +194.6 +177.5 +203.6 +180.8 +185.0 +178.9 +205.7 +187.4 +185.9 +192.9 +182.7 +197.3 +198.0 +194.5 +194.7 +194.7 +198.2 +184.7 +199.0 +200.9 +195.4 +198.7 +188.1 +187.5 +190.6 +179.2 +190.2 +195.9 +188.8 +205.7 +191.9 +204.0 +193.3 +199.5 +200.7 +179.3 +190.4 +206.4 +199.8 +189.5 +194.1 +203.3 +196.9 +200.1 +179.6 +217.2 +199.0 +184.0 +177.4 +200.5 +205.3 +193.2 +198.8 +187.2 +191.2 +186.6 +188.3 +199.4 +192.8 +209.8 +181.5 +192.8 +176.0 +189.9 +203.5 +192.5 +193.1 +190.3 +193.1 +203.0 +194.6 +188.4 +199.8 +199.6 +195.0 +200.3 +195.5 +198.5 +203.1 +193.4 +203.6 +195.6 +186.2 +206.4 +197.3 +265.4 +203.7 +205.7 +197.0 +194.9 +193.6 +201.1 +200.6 +197.1 +196.0 +196.3 +195.4 +194.2 +198.4 +202.6 +197.1 +209.4 +204.7 +195.9 +192.8 +203.4 +193.3 +188.5 +190.7 +190.3 +197.6 +197.7 +199.1 +193.0 +198.3 +205.0 +191.4 +197.2 +201.3 +197.6 +197.7 +202.9 +203.4 +198.5 +198.8 +205.4 +194.6 +189.5 +193.3 +190.4 +193.0 +202.5 +198.2 +194.7 +198.5 +184.3 +187.8 +193.3 +190.8 +194.9 +190.3 +201.8 +192.9 +198.5 +195.9 +195.8 +210.1 +194.2 +202.6 +194.5 +197.6 +200.1 +191.8 +192.8 +199.4 +199.7 +199.3 +194.2 +196.9 +195.7 +189.9 +197.1 +205.9 +191.1 +196.5 +200.9 +200.6 +199.1 +203.0 +204.2 +198.7 +192.2 +194.9 +188.6 +194.3 +198.5 +190.6 +189.4 +205.8 +207.0 +200.9 +198.0 +196.9 +196.6 +187.3 +199.9 +196.1 +196.5 +200.0 +186.0 +182.7 +193.3 +195.2 +190.0 +195.9 +190.0 +201.7 +187.1 +199.1 +203.5 +191.8 +199.5 +195.1 +207.3 +205.6 +191.9 +200.1 +196.5 +205.4 +190.8 +195.9 +194.6 +190.2 +197.4 +204.4 +210.5 +289.6 +197.2 +191.4 +199.2 +196.6 +201.4 +191.7 +194.4 +191.9 +193.1 +182.9 +191.5 +202.0 +186.8 +195.5 +193.4 +189.8 +181.3 +199.9 +200.3 +193.5 +196.5 +190.5 +200.6 +209.8 +197.7 +199.5 +200.9 +205.0 +199.4 +206.3 +205.7 +202.7 +189.0 +203.6 +198.9 +188.4 +193.7 +204.1 +198.4 +208.8 +201.4 +198.0 +188.7 +208.9 +196.9 +235.5 +198.1 +202.8 +195.8 +193.2 +203.0 +204.2 +201.2 +201.4 +202.8 +213.8 +197.2 +197.0 +191.2 +196.2 +210.8 +203.5 +193.4 +211.7 +194.0 +204.6 +197.0 +200.0 +197.9 +204.2 +196.6 +184.4 +188.6 +194.4 +188.1 +202.4 +203.0 +204.4 +194.1 +195.8 +195.3 +201.9 +194.7 +205.8 +201.9 +208.6 +195.5 +209.5 +194.8 +202.7 +202.2 +204.4 +197.1 +205.9 +196.2 +197.1 +197.4 +198.6 +198.8 +201.1 +203.9 +200.3 +199.5 +224.5 +199.2 +196.2 +197.7 +194.7 +194.1 +202.5 +191.2 +203.1 +199.1 +197.5 +201.0 +198.7 +207.9 +191.7 +192.1 +191.7 +208.7 +178.3 +202.0 +200.4 +202.1 +206.8 +194.2 +197.0 +203.3 +195.1 +210.0 +193.9 +191.1 +200.1 +192.9 +202.3 +189.5 +193.9 +200.8 +205.5 +198.7 +205.4 +184.7 +198.6 +189.7 +187.8 +202.5 +196.2 +203.5 +213.4 +199.7 +207.5 +207.3 +204.7 +190.5 +194.9 +184.7 +198.0 +200.9 +189.8 +208.9 +189.5 +218.6 +202.8 +189.0 +202.2 +204.3 +191.5 +193.6 +201.6 +204.6 +197.0 +200.9 +186.0 +205.9 +194.1 +203.3 +197.3 +200.3 +195.9 +207.3 +206.7 +206.7 +193.0 +203.1 +238.1 +192.2 +193.3 +197.4 +212.3 +202.5 +197.5 +204.1 +196.6 +183.8 +204.5 +188.1 +217.6 +194.5 +199.1 +210.9 +200.9 +187.7 +199.2 +195.0 +191.0 +198.3 +194.1 +191.9 +213.8 +199.0 +201.8 +197.5 +201.5 +195.6 +207.5 +200.6 +194.2 +210.5 +192.7 +188.1 +203.0 +237.1 +204.7 +205.1 +205.2 +200.3 +188.5 +202.2 +213.1 +195.0 +201.4 +204.2 +195.9 +186.5 +192.2 +206.5 +177.5 +189.9 +192.0 +214.9 +204.0 +194.2 +200.9 +197.1 +200.0 +196.4 +197.2 +189.0 +194.3 +206.5 +192.5 +190.5 +204.1 +196.7 +194.4 +181.9 +193.0 +190.6 +193.6 +178.0 +178.2 +200.9 +189.5 +194.2 +182.1 +183.6 +183.7 +176.9 +181.7 +194.9 +190.7 +187.4 +178.6 +182.0 +186.5 +183.7 +182.1 +186.2 +199.6 +192.4 +189.2 +194.7 +176.3 +184.6 +203.2 +201.9 +195.2 +192.7 +186.7 +195.2 +187.0 +201.1 +202.1 +187.7 +195.9 +181.7 +189.7 +179.9 +177.3 +180.3 +198.3 +184.6 +183.3 +196.9 +178.6 +184.3 +185.3 +183.2 +193.9 +194.7 +195.5 +199.6 +192.0 +189.4 +195.0 +193.6 +200.5 +177.6 +181.0 +200.0 +190.3 +189.7 +205.5 +178.5 +201.7 +192.7 +196.8 +189.2 +177.6 +198.0 +191.8 +178.6 +206.8 +190.0 +192.3 +180.1 +194.6 +179.7 +207.1 +195.6 +200.5 +186.7 +190.1 +178.6 +205.7 +346.2 +188.8 +204.4 +200.7 +176.5 +193.8 +195.9 +193.0 +186.5 +189.5 +190.6 +178.0 +188.6 +186.7 +180.9 +193.8 +194.0 +180.6 +196.7 +178.7 +180.1 +187.7 +179.6 +201.3 +219.2 +184.0 +206.3 +186.7 +192.0 +179.4 +190.1 +187.0 +191.6 +194.7 +195.5 +194.2 +195.8 +200.6 +180.3 +195.6 +209.9 +197.2 +201.1 +196.9 +186.3 +202.7 +182.7 +200.4 +201.2 +196.2 +181.1 +182.6 +187.2 +225.3 +186.8 +197.6 +192.0 +185.0 +199.8 +191.7 +187.4 +192.5 +189.1 +210.9 +187.0 +191.2 +190.9 +207.1 +198.7 +208.8 +190.6 +193.7 +186.5 +182.9 +178.7 +194.1 +184.3 +194.0 +185.4 +215.7 +194.6 +207.9 +204.7 +183.7 +189.3 +196.0 +202.6 +206.2 +190.1 +216.6 +179.8 +206.9 +188.4 +190.8 +181.7 +197.7 +195.7 +178.3 +179.0 +179.3 +203.2 +178.4 +180.1 +175.7 +194.1 +193.0 +203.2 +192.6 +194.0 +190.7 +193.0 +194.2 +183.7 +197.2 +188.4 +176.1 +184.3 +192.2 +195.7 +186.0 +193.7 +196.2 +183.7 +180.7 +181.0 +189.4 +199.3 +201.5 +199.8 +197.2 +201.7 +199.9 +192.2 +188.2 +187.5 +176.6 +205.3 +199.0 +190.0 +202.4 +201.8 +216.8 +208.2 +197.4 +194.3 +205.9 +179.0 +193.5 +182.9 +188.0 +198.3 +197.7 +177.6 +183.8 +182.3 +198.8 +192.5 +183.2 +208.4 +192.4 +193.8 +198.6 +196.2 +183.9 +186.2 +197.8 +180.6 +204.7 +195.3 +182.8 +192.5 +216.3 +203.8 +197.4 +179.5 +188.5 +196.8 +194.4 +189.2 +199.8 +200.7 +205.1 +183.4 +181.5 +193.6 +207.9 +177.4 +191.5 +197.3 +189.8 +191.9 +189.5 +201.2 +211.0 +201.4 +205.5 +201.1 +199.3 +193.5 +203.5 +191.6 +194.0 +196.7 +188.5 +189.8 +195.9 +181.1 +193.2 +197.2 +201.0 +186.2 +200.9 +183.5 +183.0 +207.9 +189.7 +193.8 +182.9 +232.1 +186.2 +200.3 +194.6 +184.2 +192.2 +182.9 +193.6 +207.4 +203.3 +185.6 +197.6 +205.9 +193.0 +182.3 +190.1 +193.3 +200.2 +183.9 +195.7 +186.9 +200.1 +189.6 +194.2 +195.5 +178.3 +183.9 +183.0 +179.2 +209.8 +199.6 +185.4 +210.9 +188.6 +188.9 +185.4 +177.0 +183.0 +186.1 +191.7 +190.7 +192.1 +195.2 +185.0 +186.6 +194.2 +189.5 +187.7 +187.9 +191.8 +181.1 +180.2 +180.0 +185.6 +181.8 +187.9 +192.9 +198.7 +182.0 +182.7 +175.8 +202.0 +190.6 +195.3 +191.0 +201.4 +194.3 +179.5 +185.0 +240.3 +187.1 +197.8 +204.8 +210.7 +203.2 +202.0 +197.8 +203.5 +205.1 +190.0 +190.3 +204.1 +197.9 +198.6 +199.3 +182.1 +200.8 +196.0 +197.1 +203.5 +198.6 +200.7 +201.1 +189.1 +175.8 +199.9 +203.7 +192.2 +182.5 +185.0 +195.9 +204.1 +197.0 +195.5 +202.0 +201.5 +187.1 +186.7 +198.2 +211.8 +197.6 +178.5 +198.5 +196.4 +188.1 +185.0 +199.5 +200.9 +201.7 +193.5 +188.3 +180.9 +190.6 +202.8 +183.9 +190.1 +205.3 +198.6 +183.2 +198.0 +200.9 +198.8 +194.8 +198.3 +195.8 +204.6 +202.6 +207.0 +185.9 +201.9 +195.9 +207.6 +197.4 +206.7 +188.2 +184.7 +183.9 +198.3 +186.4 +191.0 +208.8 +209.4 +187.7 +208.0 +198.4 +191.9 +187.1 +188.5 +189.2 +190.7 +179.9 +204.1 +195.5 +183.7 +183.1 +183.7 +194.6 +187.9 +183.5 +184.7 +203.2 +197.8 +179.4 +185.8 +205.3 +179.8 +194.8 +186.7 +191.5 +197.4 +197.0 +209.2 +194.1 +187.8 +192.9 +202.2 +194.4 +206.6 +191.6 +190.8 +187.5 +193.5 +205.2 +185.1 +185.6 +189.9 +196.0 +203.6 +195.4 +209.9 +196.5 +200.8 +190.1 +191.5 +232.8 +209.2 +193.1 +183.4 +199.5 +187.2 +199.4 +203.6 +198.3 +204.1 +196.4 +202.0 +180.6 +191.6 +202.9 +184.9 +180.8 +192.3 +205.2 +205.5 +179.0 +183.3 +203.1 +184.1 +188.6 +180.9 +195.8 +195.0 +181.1 +198.3 +190.7 +191.8 +192.1 +191.5 +257.4 +197.3 +206.5 +213.4 +184.2 +193.5 +208.6 +209.8 +192.0 +201.5 +198.6 +205.2 +198.9 +212.6 +195.9 +213.7 +215.9 +209.2 +215.2 +207.4 +208.9 +192.2 +192.3 +193.8 +185.1 +206.0 +179.1 +199.9 +198.3 +201.6 +186.8 +202.3 +190.4 +183.6 +191.8 +190.6 +194.7 +184.1 +184.4 +193.8 +194.0 +195.6 +204.5 +194.9 +196.1 +201.1 +196.1 +210.9 +198.7 +192.1 +208.3 +192.8 +193.6 +205.1 +191.5 +190.7 +179.2 +191.6 +192.1 +182.3 +176.1 +185.5 +187.1 +183.4 +191.9 +176.1 +178.0 +185.2 +191.3 +181.3 +178.1 +181.7 +200.3 +187.5 +201.6 +192.3 +177.7 +180.6 +192.9 +185.4 +183.1 +178.4 +196.9 +191.9 +186.1 +195.7 +177.7 +184.1 +195.4 +184.2 +188.8 +179.6 +182.0 +182.9 +185.1 +183.8 +189.3 +216.9 +196.6 +185.7 +235.5 +184.9 +181.8 +180.0 +186.6 +188.4 +190.7 +185.4 +210.9 +184.1 +203.0 +203.5 +198.9 +204.2 +199.7 +182.1 +178.1 +205.1 +179.4 +184.5 +180.7 +200.5 +197.3 +178.2 +178.8 +180.9 +219.2 +180.2 +192.5 +198.6 +238.0 +201.1 +182.4 +203.3 +182.0 +188.9 +201.2 +184.6 +182.7 +187.7 +188.5 +202.5 +199.8 +189.4 +191.1 +181.2 +191.7 +194.6 +181.3 +185.3 +192.8 +182.4 +191.6 +188.3 +202.6 +212.1 +179.6 +185.9 +183.4 +187.8 +184.4 +186.8 +197.0 +191.3 +186.7 +201.9 +187.2 +195.7 +178.5 +187.3 +190.8 +198.4 +198.8 +189.1 +189.6 +197.6 +201.0 +185.0 +182.2 +184.2 +193.2 +191.6 +187.4 +196.3 +190.7 +184.5 +206.1 +200.7 +193.0 +196.2 +195.1 +177.1 +180.7 +187.3 +188.3 +181.5 +180.7 +216.9 +185.7 +196.1 +193.2 +185.5 +186.9 +190.4 +189.7 +196.1 +193.9 +193.6 +185.7 +190.3 +199.8 +190.4 +187.4 +195.5 +190.0 +188.7 +190.2 +195.6 +195.2 +184.7 +186.9 +187.4 +179.3 +184.7 +206.7 +194.3 +198.9 +179.0 +185.7 +185.2 +206.7 +184.3 +202.8 +183.5 +178.9 +238.3 +181.1 +189.5 +176.7 +178.7 +183.4 +180.3 +192.4 +193.6 +186.6 +190.0 +184.0 +188.5 +188.6 +196.3 +182.2 +191.9 +191.1 +197.7 +188.4 +194.2 +201.7 +204.3 +199.6 +190.7 +183.0 +189.9 +192.9 +187.6 +182.8 +203.3 +189.3 +194.0 +189.4 +188.0 +194.4 +211.7 +186.3 +185.3 +187.2 +182.9 +194.9 +187.4 +190.4 +197.5 +184.5 +184.8 +180.0 +197.9 +205.9 +189.2 +196.5 +188.1 +185.4 +195.5 +185.0 +203.1 +188.6 +202.3 +180.6 +191.3 +204.4 +208.2 +189.2 +226.9 +200.0 +178.8 +181.5 +197.7 +204.1 +184.8 +178.5 +186.5 +190.9 +190.4 +181.4 +189.8 +179.2 +189.8 +179.6 +203.8 +205.4 +184.2 +192.8 +204.7 +186.6 +195.5 +203.7 +197.2 +178.0 +180.3 +187.0 +179.1 +187.5 +187.9 +183.4 +181.8 +184.1 +181.3 +184.0 +180.6 +230.8 +193.0 +190.5 +200.4 +187.9 +175.9 +204.2 +206.5 +183.2 +194.2 +187.2 +200.2 +189.6 +188.6 +188.6 +175.4 +184.2 +174.0 +177.2 +180.6 +181.5 +182.3 +187.1 +180.0 +184.7 +179.3 +195.7 +180.5 +179.5 +184.8 +204.0 +202.1 +178.7 +189.4 +196.4 +190.8 +184.3 +189.2 +182.8 +184.6 +178.4 +183.9 +185.0 +184.6 +179.2 +179.0 +182.4 +197.0 +188.4 +188.5 +196.0 +179.6 +188.1 +180.3 +196.1 +189.0 +178.4 +176.5 +186.4 +179.3 +187.7 +187.9 +184.8 +176.9 +188.7 +182.8 +192.3 +190.0 +197.2 +191.6 +197.8 +182.3 +184.2 +187.3 +188.2 +207.3 +189.2 +190.7 +202.3 +191.7 +195.4 +196.2 +190.1 +204.2 +194.8 +187.8 +209.1 +192.1 +193.1 +199.3 +192.1 +204.9 +190.8 +186.5 +189.3 +181.9 +193.3 +182.4 +195.2 +189.1 +196.8 +200.8 +187.6 +201.1 +197.0 +196.6 +177.7 +188.9 +186.2 +186.0 +199.9 +203.8 +190.2 +190.2 +186.3 +179.1 +198.8 +186.3 +192.4 +201.5 +190.2 +191.0 +178.0 +194.1 +197.9 +189.9 +180.2 +176.2 +193.5 +201.9 +201.3 +200.7 +190.3 +198.4 +186.0 +190.2 +182.7 +186.0 +190.0 +196.8 +193.0 +201.5 +184.7 +187.7 +190.8 +187.2 +183.5 +178.1 +178.9 +195.8 +178.2 +188.0 +177.2 +182.5 +184.2 +180.7 +189.6 +203.4 +181.7 +185.1 +177.5 +180.9 +194.0 +190.1 +190.1 +182.9 +184.4 +201.8 +191.1 +184.9 +197.7 +193.3 +190.3 +197.2 +188.2 +191.5 +190.0 +188.0 +187.5 +182.5 +186.6 +183.6 +193.9 +187.5 +186.9 +197.3 +187.2 +177.2 +186.8 +191.9 +186.9 +198.7 +179.7 +191.7 +193.6 +184.2 +178.4 +187.4 +203.3 +196.8 +195.4 +182.9 +187.7 +189.4 +192.5 +190.0 +190.0 +185.4 +194.6 +183.7 +180.2 +199.6 +190.5 +205.9 +176.4 +182.8 +179.0 +199.9 +186.7 +188.8 +189.5 +189.8 +193.5 +203.0 +183.8 +204.2 +176.4 +206.5 +184.7 +174.9 +183.2 +174.4 +196.2 +179.1 +183.7 +180.2 +174.5 +185.5 +203.5 +174.7 +186.1 +175.1 +198.2 +200.3 +184.2 +180.4 +187.9 +194.3 +194.9 +181.3 +180.2 +186.0 +187.6 +180.2 +188.1 +196.5 +175.9 +184.0 +194.4 +186.3 +207.6 +188.1 +185.2 +207.5 +177.7 +204.2 +203.3 +180.8 +176.0 +181.5 +202.3 +191.6 +186.8 +183.0 +189.7 +191.2 +179.2 +196.2 +185.9 +184.3 +183.3 +186.8 +179.3 +188.6 +184.8 +176.7 +189.6 +177.5 +186.3 +197.2 +178.1 +189.8 +175.8 +178.9 +191.9 +176.9 +186.8 +186.6 +194.1 +179.3 +178.7 +183.9 +220.3 +181.6 +183.7 +196.7 +180.2 +176.9 +189.5 +187.5 +185.8 +184.3 +179.9 +186.0 +178.5 +179.5 +227.6 +187.1 +199.2 +183.4 +177.2 +181.3 +190.7 +197.8 +180.1 +203.4 +198.1 +196.8 +184.3 +188.5 +189.6 +187.9 +200.7 +187.1 +193.3 +183.0 +199.1 +187.3 +181.8 +184.0 +178.0 +198.7 +177.4 +195.6 +184.1 +183.4 +186.0 +183.1 +181.8 +190.6 +188.8 +184.8 +196.5 +186.2 +184.7 +182.6 +187.4 +194.1 +185.3 +181.6 +198.4 +190.1 +200.2 +214.9 +195.1 +192.9 +190.8 +179.4 +194.9 +206.0 +193.2 +186.6 +214.1 +216.1 +189.0 +184.2 +201.1 +182.1 +200.2 +188.5 +193.0 +184.8 +188.8 +186.6 +188.3 +193.9 +202.4 +196.8 +214.5 +202.1 +186.7 +197.3 +184.2 +186.5 +202.6 +187.3 +204.3 +176.1 +183.9 +189.2 +189.7 +180.8 +199.4 +185.7 +193.3 +192.7 +192.8 +204.9 +188.7 +196.5 +187.9 +177.4 +189.6 +177.2 +197.3 +183.9 +189.7 +184.6 +191.0 +195.4 +175.7 +179.1 +184.4 +193.2 +180.4 +191.2 +187.2 +181.1 +203.5 +189.2 +186.4 +176.3 +191.5 +193.6 +187.0 +186.8 +187.3 +184.8 +197.6 +207.3 +191.8 +187.1 +196.3 +206.9 +199.9 +186.3 +189.9 +179.8 +200.0 +193.8 +190.9 +180.9 +176.3 +189.1 +180.4 +190.9 +182.4 +182.8 +181.1 +193.9 +184.0 +185.9 +199.1 +199.5 +204.2 +181.9 +199.0 +184.1 +207.4 +194.8 +216.5 +188.4 +206.7 +199.2 +179.3 +186.7 +200.7 +186.3 +195.5 +204.9 +194.0 +187.5 +196.3 +181.4 +186.0 +197.8 +198.1 +196.1 +184.3 +183.3 +211.3 +192.8 +187.9 +183.4 +192.9 +187.4 +194.2 +177.1 +200.0 +199.3 +177.2 +180.1 +178.6 +182.3 +189.1 +191.3 +197.7 +187.6 +187.3 +203.9 +204.4 +180.4 +186.5 +188.4 +176.1 +206.5 +187.7 +194.1 +193.5 +203.7 +186.8 +200.1 +187.0 +203.3 +196.3 +208.1 +192.7 +202.1 +204.7 +183.9 +186.7 +198.2 +189.4 +186.4 +188.3 +195.2 +203.3 +202.3 +201.1 +180.1 +191.3 +180.4 +187.7 +193.4 +196.5 +208.8 +185.3 +186.8 +203.6 +179.0 +185.0 +181.1 +193.8 +196.9 +201.0 +187.3 +189.6 +190.8 +188.9 +197.6 +203.0 +193.2 +185.6 +195.6 +199.1 +191.8 +178.7 +183.6 +184.1 +192.0 +182.4 +183.8 +209.5 +205.7 +187.0 +187.6 +200.6 +187.1 +187.2 +184.9 +180.3 +189.4 +182.7 +196.8 +184.7 +185.8 +184.0 +194.1 +180.5 +199.1 +181.7 +205.3 +182.6 +186.8 +180.2 +181.9 +187.4 +187.9 +191.8 +204.8 +178.5 +181.6 +181.6 +179.5 +181.9 +190.1 +194.1 +180.0 +179.1 +181.2 +175.0 +186.3 +184.8 +182.6 +186.8 +185.3 +181.2 +190.0 +195.3 +186.9 +190.6 +187.3 +193.4 +176.9 +190.5 +194.6 +181.0 +175.8 +187.9 +183.2 +187.7 +191.4 +183.1 +178.6 +193.4 +185.5 +190.1 +194.6 +191.0 +177.7 +187.3 +201.3 +188.6 +182.5 +196.3 +176.2 +184.9 +189.6 +186.9 +227.9 +188.1 +185.0 +182.9 +196.4 +183.1 +179.8 +186.5 +185.2 +199.7 +187.7 +191.6 +191.9 +194.8 +183.9 +185.3 +188.2 +192.7 +180.8 +183.5 +199.8 +196.8 +184.2 +179.5 +204.2 +183.5 +175.4 +207.3 +192.5 +191.9 +208.6 +194.7 +195.2 +190.3 +180.8 +182.6 +203.2 +191.4 +189.7 +183.9 +185.7 +192.3 +190.7 +206.8 +182.9 +195.2 +193.1 +201.2 +177.0 +188.1 +182.3 +185.0 +198.5 +186.4 +183.9 +189.4 +181.8 +199.9 +198.7 +183.7 +191.8 +187.5 +209.4 +201.8 +178.0 +201.8 +198.0 +187.2 +185.5 +178.1 +195.7 +200.1 +174.8 +176.4 +187.6 +177.3 +178.1 +197.5 +183.7 +207.7 +180.6 +176.6 +190.8 +191.0 +180.1 +180.4 +178.8 +185.5 +194.8 +188.1 +185.8 +179.5 +181.0 +196.1 +192.6 +179.2 +180.7 +206.3 +175.9 +196.8 +179.4 +195.1 +187.5 +183.9 +183.8 +184.6 +208.6 +195.5 +202.9 +191.9 +187.0 +189.2 +178.5 +176.1 +186.6 +195.1 +181.6 +201.0 +192.1 +192.9 +202.2 +191.0 +205.8 +204.3 +191.8 +185.1 +190.1 +193.6 +192.4 +185.2 +180.6 +192.6 +185.7 +187.5 +189.2 +184.0 +189.1 +200.6 +185.2 +182.8 +182.0 +185.4 +178.3 +188.4 +193.2 +194.9 +197.1 +194.4 +184.8 +179.2 +195.6 +182.6 +204.3 +203.1 +180.0 +187.7 +187.7 +197.8 +178.7 +186.5 +194.6 +194.8 +176.4 +202.5 +195.4 +180.5 +220.0 +191.0 +217.1 +178.4 +196.1 +182.5 +190.8 +191.7 +202.0 +196.8 +199.4 +183.8 +183.2 +186.5 +178.1 +198.6 +186.1 +195.4 +196.6 +199.3 +196.5 +177.9 +186.3 +180.5 +198.9 +190.2 +188.5 +184.1 +188.6 +201.4 +185.4 +176.4 +182.0 +176.9 +184.4 +179.0 +178.4 +183.8 +190.9 +185.5 +184.4 +179.6 +197.5 +184.3 +179.1 +193.4 +194.2 +179.1 +189.0 +191.2 +180.8 +184.5 +187.9 +191.7 +177.2 +185.4 +183.6 +190.7 +187.5 +188.8 +199.7 +190.0 +176.0 +204.4 +191.1 +188.3 +182.1 +181.6 +191.4 +191.8 +193.1 +186.0 +188.1 +178.4 +193.7 +175.1 +179.0 +186.7 +185.3 +179.7 +182.7 +198.0 +180.2 +189.5 +183.1 +177.1 +182.3 +174.7 +175.6 +186.4 +189.2 +178.9 +180.4 +181.3 +182.3 +180.3 +180.8 +180.1 +197.2 +204.7 +181.6 +182.3 +184.0 +176.5 +214.9 +194.7 +178.3 +175.1 +174.3 +176.5 +190.9 +183.1 +176.8 +177.1 +183.8 +178.5 +189.2 +180.8 +177.6 +175.3 +185.3 +183.4 +175.2 +183.6 +177.0 +181.9 +180.3 +185.1 +179.1 +188.1 +184.4 +181.6 +188.0 +181.6 +190.6 +177.9 +182.7 +177.4 +183.2 +189.3 +187.6 +179.8 +192.3 +188.1 +194.6 +186.7 +181.6 +191.8 +195.6 +187.4 +185.5 +190.0 +184.0 +178.5 +178.0 +200.8 +199.2 +186.5 +174.9 +181.3 +181.0 +187.6 +186.8 +183.3 +183.8 +195.6 +190.6 +193.8 +176.4 +179.1 +182.9 +193.4 +184.4 +186.2 +180.3 +194.7 +182.6 +186.7 +196.4 +196.7 +196.2 +192.3 +189.1 +178.4 +182.3 +195.2 +184.1 +189.0 +184.7 +189.3 +184.1 +177.3 +189.5 +186.1 +186.4 +180.5 +196.1 +187.5 +188.4 +195.8 +192.0 +192.9 +182.4 +199.6 +189.6 +180.2 +176.1 +220.4 +206.6 +195.5 +176.5 +202.2 +187.5 +185.0 +205.6 +195.7 +192.8 +192.8 +174.9 +187.3 +181.9 +180.4 +183.9 +187.6 +192.5 +202.1 +185.2 +200.2 +184.1 +189.9 +194.7 +185.1 +191.9 +176.0 +197.7 +177.5 +178.6 +179.3 +206.0 +193.3 +196.2 +179.3 +181.3 +205.5 +178.1 +186.9 +183.5 +178.5 +193.1 +179.4 +186.1 +174.3 +194.4 +187.1 +195.8 +176.0 +187.6 +176.1 +183.7 +182.0 +183.7 +176.3 +201.0 +185.8 +180.6 +186.1 +180.1 +204.4 +186.1 +182.9 +181.7 +184.6 +177.3 +186.2 +188.7 +180.5 +182.1 +185.3 +177.7 +185.4 +188.2 +194.1 +185.6 +177.8 +192.7 +198.1 +196.0 +187.5 +186.4 +206.8 +207.4 +177.3 +181.3 +185.0 +175.7 +174.2 +191.5 +194.0 +190.8 +199.2 +176.4 +202.7 +193.1 +182.6 +186.0 +196.0 +186.1 +189.4 +203.4 +184.8 +194.3 +187.2 +183.5 +199.4 +196.7 +180.2 +195.2 +180.9 +182.7 +193.5 +200.0 +193.3 +184.4 +199.1 +206.2 +199.0 +195.8 +189.4 +194.1 +196.4 +201.5 +180.7 +189.7 +193.3 +200.3 +205.5 +189.9 +192.6 +187.1 +205.7 +194.9 +188.0 +189.2 +197.9 +188.5 +185.0 +182.7 +205.8 +186.7 +189.2 +185.1 +182.4 +205.1 +181.4 +185.6 +188.5 +195.9 +199.8 +185.4 +194.7 +201.2 +185.0 +202.1 +200.0 +181.9 +186.8 +195.9 +182.2 +186.6 +187.1 +184.9 +181.1 +190.1 +191.0 +186.7 +184.6 +181.8 +190.4 +185.7 +183.4 +187.0 +182.6 +183.5 +173.9 +181.8 +194.1 +182.2 +182.6 +181.8 +187.0 +192.2 +178.9 +206.9 +197.1 +180.7 +183.4 +176.7 +187.9 +194.5 +182.0 +182.0 +190.9 +177.9 +180.3 +190.8 +187.7 +179.1 +187.9 +183.7 +187.9 +183.5 +175.9 +186.5 +178.2 +180.7 +194.3 +184.8 +181.4 +182.8 +179.8 +187.0 +179.1 +178.8 +187.2 +185.9 +182.0 +187.7 +181.3 +186.0 +181.0 +183.2 +186.5 +189.3 +187.8 +182.8 +179.4 +199.0 +180.9 +193.8 +202.6 +185.8 +177.5 +182.7 +202.4 +213.8 +190.6 +189.8 +190.5 +185.0 +183.7 +191.0 +185.7 +182.2 +194.8 +183.1 +191.8 +186.6 +185.2 +181.7 +182.1 +185.7 +195.0 +181.5 +185.1 +181.5 +187.3 +186.5 +188.7 +185.2 +180.7 +178.3 +191.8 +185.4 +188.6 +184.5 +187.5 +191.5 +191.5 +195.8 +197.9 +194.2 +184.9 +182.7 +182.1 +185.6 +188.4 +178.8 +190.4 +179.3 +186.2 +206.0 +191.2 +195.1 +198.4 +189.9 +180.8 +181.1 +198.5 +203.4 +190.8 +177.1 +184.0 +181.0 +192.2 +175.9 +200.4 +192.2 +181.1 +202.0 +198.6 +203.6 +191.7 +193.4 +192.6 +186.5 +182.4 +195.8 +184.9 +191.0 +176.7 +182.7 +194.8 +181.9 +191.1 +205.5 +176.3 +200.1 +184.1 +208.8 +184.3 +196.2 +190.2 +197.1 +186.8 +181.7 +188.5 +188.6 +187.2 +195.3 +198.6 +205.7 +185.4 +187.5 +176.2 +186.1 +199.4 +294.6 +232.7 +200.5 +181.8 +189.1 +186.9 +190.7 +179.7 +181.3 +181.5 +200.5 +181.2 +181.7 +185.4 +195.5 +201.9 +199.7 +194.2 +179.6 +181.4 +205.5 +183.1 +499.4 +188.5 +184.5 +194.5 +195.5 +193.6 +189.0 +196.4 +188.3 +186.7 +190.6 +176.9 +188.1 +189.4 +198.2 +178.8 +196.5 +203.1 +192.3 +193.8 +188.4 +180.2 +192.3 +187.1 +195.2 +181.6 +185.5 +190.9 +185.2 +200.5 +190.0 +180.2 +194.4 +196.5 +187.7 +184.3 +189.5 +188.2 +189.5 +194.5 +192.4 +202.1 +177.9 +193.8 +191.7 +182.2 +190.1 +197.4 +196.6 +193.7 +195.9 +200.9 +178.8 +181.4 +193.6 +193.5 +177.7 +192.9 +190.9 +201.2 +184.9 +175.8 +197.9 +202.4 +192.3 +202.5 +198.3 +196.8 +185.2 +184.8 +198.1 +191.3 +174.0 +180.5 +193.4 +183.0 +185.1 +177.0 +190.4 +181.3 +179.0 +180.6 +179.1 +188.8 +207.2 +183.7 +186.6 +198.3 +176.6 +186.5 +187.4 +179.5 +189.2 +197.7 +181.5 +194.6 +195.5 +181.6 +197.3 +190.7 +202.0 +183.9 +193.0 +183.9 +196.9 +203.5 +189.4 +187.1 +185.2 +184.8 +199.8 +175.7 +180.6 +187.6 +185.4 +178.5 +185.5 +178.7 +187.5 +185.7 +191.9 +180.2 +186.7 +183.0 +196.7 +197.6 +197.1 +187.4 +194.8 +194.7 +191.0 +185.1 +187.0 +185.8 +197.6 +204.2 +187.9 +189.9 +217.5 +202.8 +192.4 +176.4 +178.8 +199.8 +192.5 +199.9 +190.8 +202.8 +187.0 +180.2 +196.6 +176.5 +187.6 +181.3 +191.0 +180.6 +184.7 +195.8 +191.5 +182.7 +181.3 +189.3 +182.5 +184.2 +187.9 +202.4 +195.7 +189.5 +195.4 +201.2 +186.1 +208.8 +199.6 +189.4 +180.5 +194.2 +184.5 +187.5 +196.6 +188.0 +210.1 +193.3 +187.6 +191.6 +188.5 +179.2 +192.5 +189.7 +181.6 +180.9 +187.9 +180.6 +181.1 +178.7 +175.7 +176.2 +187.1 +185.0 +186.9 +186.5 +190.0 +185.6 +201.2 +189.3 +189.3 +189.7 +188.2 +187.2 +175.0 +185.5 +185.0 +205.2 +187.3 +177.2 +179.2 +190.2 +183.0 +192.9 +183.2 +185.4 +179.2 +186.2 +183.1 +183.8 +186.6 +185.7 +192.4 +179.6 +196.2 +180.2 +185.9 +197.4 +192.2 +177.5 +180.7 +190.2 +176.9 +193.6 +186.2 +184.9 +182.0 +186.1 +187.4 +184.3 +196.2 +203.1 +180.6 +192.5 +196.2 +195.9 +181.6 +189.9 +183.3 +192.7 +187.3 +191.0 +200.2 +180.1 +187.0 +175.7 +179.9 +193.1 +190.2 +202.1 +174.1 +179.5 +185.1 +182.7 +196.7 +179.8 +186.7 +192.5 +189.2 +193.7 +184.1 +185.6 +184.6 +193.6 +181.0 +189.2 +179.9 +181.4 +183.7 +184.5 +193.1 +191.5 +182.9 +190.2 +185.2 +185.9 +216.6 +184.1 +195.7 +181.2 +182.8 +199.3 +187.4 +184.9 +177.6 +206.2 +184.1 +201.5 +200.7 +192.2 +187.0 +182.1 +196.6 +181.6 +189.2 +191.6 +188.8 +186.9 +193.6 +184.2 +191.3 +194.9 +194.6 +188.7 +179.2 +205.1 +181.0 +177.3 +183.7 +184.8 +183.7 +204.3 +190.7 +181.6 +191.6 +189.5 +195.5 +176.0 +193.0 +192.1 +195.9 +205.8 +192.2 +190.6 +198.3 +185.8 +186.7 +198.6 +184.2 +203.1 +199.6 +187.0 +204.3 +207.2 +190.8 +196.7 +188.8 +193.2 +188.7 +199.8 +204.3 +188.6 +192.0 +209.8 +180.3 +203.7 +196.4 +185.7 +182.1 +193.3 +200.9 +196.6 +181.9 +182.2 +179.2 +197.3 +189.3 +200.9 +184.5 +185.8 +185.6 +187.5 +187.5 +189.5 +186.9 +187.2 +195.7 +182.0 +179.0 +191.4 +188.5 +177.7 +185.7 +182.0 +189.0 +198.7 +188.4 +186.6 +180.4 +185.1 +184.2 +207.6 +184.2 +190.0 +181.5 +190.9 +191.2 +187.8 +177.8 +182.7 +191.8 +206.2 +201.4 +182.2 +189.2 +195.4 +187.9 +195.7 +190.4 +183.3 +183.2 +178.2 +189.0 +179.2 +175.5 +187.3 +181.1 +180.1 +188.1 +184.4 +183.9 +200.2 +185.4 +180.4 +184.0 +183.8 +181.2 +203.6 +201.1 +197.1 +192.3 +182.7 +182.4 +183.0 +177.3 +181.3 +185.3 +184.6 +188.7 +179.1 +179.1 +184.6 +176.0 +177.8 +186.9 +189.8 +180.3 +177.2 +184.2 +179.2 +177.4 +182.0 +186.6 +188.7 +194.2 +184.0 +178.9 +175.3 +191.6 +182.9 +188.3 +178.7 +201.6 +186.4 +180.8 +184.7 +186.7 +196.9 +177.7 +178.8 +175.3 +182.7 +184.0 +182.4 +196.6 +174.7 +178.0 +181.5 +198.1 +185.1 +177.5 +181.2 +188.1 +196.0 +183.6 +196.2 +185.9 +193.2 +186.7 +179.7 +195.3 +190.1 +206.8 +186.2 +178.5 +192.0 +187.6 +176.9 +191.8 +190.8 +193.6 +200.0 +192.3 +178.0 +184.6 +179.4 +178.2 +183.2 +179.9 +184.9 +183.7 +189.1 +176.4 +185.5 +184.8 +192.5 +185.3 +193.9 +179.6 +181.7 +179.1 +210.8 +185.6 +184.2 +181.3 +198.8 +180.2 +182.5 +191.9 +196.4 +186.6 +185.3 +182.5 +175.8 +182.0 +186.9 +186.6 +176.0 +175.4 +186.5 +175.4 +182.4 +199.5 +192.7 +182.0 +199.9 +181.1 +196.7 +186.2 +182.0 +175.9 +184.4 +183.8 +178.4 +191.3 +177.8 +196.1 +200.8 +200.6 +191.1 +190.4 +180.3 +200.6 +201.4 +181.3 +176.9 +183.2 +185.0 +178.4 +187.8 +172.7 +182.8 +186.3 +193.9 +179.2 +194.9 +176.8 +188.1 +190.7 +192.3 +178.4 +191.9 +196.6 +183.5 +197.8 +192.0 +176.0 +192.1 +191.5 +193.3 +209.5 +185.2 +187.6 +186.3 +190.9 +183.9 +190.2 +186.3 +184.7 +177.3 +185.0 +178.3 +193.0 +181.7 +190.9 +185.3 +174.9 +192.3 +194.5 +194.1 +177.0 +185.2 +193.2 +202.4 +202.0 +197.2 +199.3 +176.9 +185.7 +188.1 +186.8 +184.4 +204.5 +196.4 +181.3 +190.9 +177.2 +192.4 +179.9 +177.0 +194.1 +203.5 +189.1 +194.7 +181.5 +183.6 +199.8 +187.3 +185.1 +195.7 +177.8 +178.3 +189.8 +200.1 +176.9 +177.9 +188.9 +190.9 +198.7 +197.7 +186.9 +190.8 +201.4 +188.5 +180.4 +196.2 +185.8 +194.9 +193.3 +181.3 +195.4 +197.5 +201.3 +179.5 +177.7 +201.9 +199.9 +183.5 +177.6 +190.4 +183.7 +178.4 +203.6 +195.9 +199.5 +193.2 +175.0 +184.5 +190.6 +194.3 +178.2 +177.5 +188.4 +179.7 +183.8 +174.2 +186.5 +179.8 +196.9 +194.9 +178.4 +185.7 +190.1 +181.3 +180.0 +179.9 +181.7 +187.4 +185.9 +178.9 +184.6 +189.5 +186.6 +185.8 +188.4 +188.3 +174.7 +184.9 +192.5 +185.3 +174.9 +180.6 +179.5 +183.4 +177.7 +177.5 +187.4 +183.7 +188.0 +177.6 +180.7 +180.9 +181.9 +188.9 +201.1 +186.6 +176.3 +177.3 +177.6 +175.6 +201.5 +175.5 +188.2 +181.8 +176.9 +185.3 +179.6 +192.7 +203.8 +183.4 +179.4 +177.9 +182.8 +182.3 +174.9 +180.5 +180.2 +187.1 +190.4 +185.5 +184.6 +185.4 +190.3 +183.9 +180.0 +201.8 +198.1 +184.2 +192.8 +184.2 +195.7 +191.4 +188.8 +192.9 +184.8 +174.3 +191.8 +185.4 +183.8 +192.7 +192.6 +194.8 +177.9 +178.7 +181.5 +177.3 +192.5 +176.0 +178.9 +199.7 +181.0 +178.8 +177.1 +183.0 +176.7 +182.3 +180.9 +183.1 +183.9 +174.2 +178.7 +173.8 +174.4 +179.1 +178.4 +175.4 +181.4 +180.9 +178.2 +182.5 +184.2 +183.7 +182.6 +176.2 +177.2 +180.5 +183.9 +193.4 +174.9 +178.8 +176.0 +178.1 +176.1 +177.3 +178.7 +182.2 +191.0 +186.8 +188.4 +180.3 +177.8 +198.8 +176.7 +198.3 +178.5 +177.9 +179.9 +186.7 +178.0 +175.4 +186.6 +190.8 +190.7 +183.5 +196.3 +182.1 +184.4 +188.8 +186.3 +184.8 +191.3 +186.2 +191.0 +188.3 +178.8 +176.3 +181.2 +183.1 +180.4 +178.6 +176.2 +176.1 +177.5 +180.6 +178.1 +176.4 +195.4 +178.8 +179.6 +178.1 +179.7 +178.3 +181.9 +177.4 +181.4 +186.7 +174.6 +179.4 +177.5 +197.6 +196.5 +193.1 +179.2 +182.2 +178.1 +186.3 +182.1 +175.4 +177.5 +188.1 +182.9 +179.8 +179.2 +180.0 +176.9 +177.4 +192.5 +177.5 +177.4 +181.8 +175.6 +178.9 +180.6 +176.8 +182.8 +186.7 +182.5 +188.3 +183.7 +185.1 +195.4 +179.2 +180.7 +190.0 +187.5 +180.3 +183.0 +184.2 +184.3 +189.4 +180.1 +179.6 +182.3 +177.6 +186.3 +188.0 +182.1 +187.1 +186.2 +184.2 +202.3 +187.0 +188.0 +180.5 +194.6 +188.8 +190.7 +181.9 +182.1 +185.3 +183.1 +197.3 +195.0 +208.3 +195.7 +179.1 +196.3 +185.5 +185.4 +186.9 +193.9 +187.1 +184.2 +180.0 +184.8 +189.6 +192.3 +185.6 +185.8 +185.9 +187.9 +186.2 +177.3 +192.2 +201.9 +185.9 +181.7 +192.8 +185.4 +187.3 +187.5 +178.9 +187.6 +181.3 +186.9 +179.6 +179.3 +189.4 +177.5 +184.5 +176.4 +193.3 +178.7 +191.6 +182.7 +194.6 +187.4 +190.4 +199.1 +191.6 +193.1 +187.0 +181.7 +180.3 +196.6 +180.5 +180.0 +184.9 +176.9 +176.3 +179.3 +189.1 +180.4 +176.0 +174.9 +181.2 +177.6 +177.4 +177.6 +179.0 +178.7 +178.7 +184.8 +177.9 +179.4 +183.8 +181.9 +177.1 +175.8 +182.9 +183.2 +176.8 +181.7 +183.7 +192.1 +178.2 +181.4 +180.0 +176.8 +179.8 +194.3 +181.6 +180.7 +177.5 +187.4 +179.0 +180.0 +186.0 +182.0 +175.4 +178.9 +181.9 +192.0 +179.5 +178.5 +175.3 +184.1 +178.3 +177.1 +186.2 +196.9 +182.0 +178.0 +181.4 +181.4 +179.6 +180.2 +180.4 +183.1 +176.6 +182.9 +176.3 +191.5 +179.9 +178.1 +178.4 +189.3 +196.8 +188.2 +180.5 +185.2 +188.0 +176.3 +181.0 +187.4 +178.9 +179.1 +185.3 +183.4 +185.8 +178.5 +176.1 +188.9 +200.9 +193.9 +193.4 +184.0 +187.2 +178.1 +193.5 +182.0 +180.1 +182.8 +176.8 +177.0 +184.0 +185.2 +197.3 +180.8 +190.4 +177.3 +183.4 +191.3 +175.4 +176.8 +192.3 +177.3 +191.1 +185.1 +179.7 +190.8 +175.9 +181.2 +194.0 +176.5 +180.3 +175.1 +185.1 +181.3 +200.0 +187.0 +182.6 +182.0 +176.8 +190.1 +182.1 +181.7 +192.3 +177.0 +185.1 +181.3 +179.2 +182.1 +176.6 +185.0 +177.4 +183.5 +196.5 +184.2 +179.2 +180.5 +180.8 +181.9 +176.9 +178.6 +175.9 +192.0 +198.7 +189.6 +190.5 +186.3 +192.6 +196.0 +176.2 +175.9 +176.5 +195.4 +174.8 +177.4 +186.7 +174.9 +176.1 +183.0 +178.1 +177.4 +192.9 +179.7 +198.5 +178.1 +178.6 +195.4 +181.6 +179.9 +179.5 +186.4 +180.6 +180.3 +187.3 +193.9 +192.5 +178.1 +184.8 +194.9 +194.6 +181.4 +177.6 +180.4 +175.5 +180.5 +177.2 +186.6 +176.8 +176.3 +186.0 +179.8 +178.2 +177.9 +178.9 +190.1 +180.8 +180.1 +181.3 +193.5 +185.0 +198.7 +199.9 +183.4 +177.3 +176.2 +182.7 +178.2 +175.2 +177.7 +186.9 +182.1 +195.1 +181.3 +182.4 +175.7 +185.5 +180.8 +181.4 +181.6 +190.1 +183.7 +186.4 +194.3 +176.4 +176.7 +189.9 +175.6 +206.6 +178.9 +180.0 +178.8 +180.1 +184.1 +176.3 +177.9 +194.3 +188.5 +182.6 +178.6 +177.5 +190.9 +178.9 +180.3 +193.9 +187.4 +186.4 +190.1 +184.7 +199.2 +187.9 +177.7 +180.5 +189.4 +176.5 +192.8 +181.4 +178.0 +193.6 +175.8 +184.4 +184.1 +191.9 +176.2 +184.5 +180.4 +185.1 +180.0 +192.6 +187.6 +190.2 +183.0 +176.5 +194.4 +178.4 +184.5 +176.6 +179.0 +182.6 +187.2 +180.4 +183.3 +180.8 +179.1 +193.9 +181.9 +188.8 +180.0 +175.2 +194.5 +194.8 +187.7 +182.5 +199.3 +175.0 +175.9 +177.9 +179.6 +179.4 +176.0 +176.4 +175.8 +177.2 +176.8 +179.0 +180.4 +177.1 +174.9 +177.9 +180.6 +187.3 +176.6 +177.3 +184.4 +179.2 +177.2 +175.7 +183.3 +177.4 +180.7 +175.6 +173.6 +179.6 +177.2 +180.8 +176.4 +187.7 +178.4 +176.0 +192.5 +181.4 +183.5 +178.5 +186.6 +179.4 +180.1 +181.6 +178.3 +178.2 +184.1 +180.6 +178.3 +184.1 +181.6 +177.4 +183.4 +180.6 +178.8 +179.0 +175.1 +177.0 +180.8 +179.9 +177.7 +176.3 +177.3 +184.2 +176.9 +190.8 +183.0 +181.0 +184.0 +178.6 +175.2 +177.2 +177.9 +183.2 +180.9 +176.3 +177.0 +182.8 +178.5 +176.9 +178.1 +175.5 +184.7 +176.6 +177.2 +182.4 +189.5 +197.3 +179.9 +190.4 +182.4 +188.7 +185.5 +181.1 +182.6 +187.0 +184.4 +179.1 +180.1 +180.9 +187.2 +175.9 +194.1 +177.9 +177.4 +200.7 +201.4 +183.5 +180.8 +195.5 +181.0 +180.2 +181.5 +175.9 +175.3 +180.1 +182.1 +180.1 +176.5 +178.9 +200.5 +178.6 +176.6 +175.8 +175.8 +176.0 +199.3 +177.5 +180.9 +185.1 +200.3 +194.0 +177.7 +181.2 +182.1 +185.1 +183.4 +180.7 +188.8 +187.3 +179.1 +177.5 +185.5 +185.5 +177.2 +175.3 +178.6 +184.5 +180.0 +179.9 +177.1 +178.0 +187.8 +183.6 +189.6 +181.5 +179.7 +179.0 +188.8 +185.1 +177.0 +177.1 +176.3 +176.4 +199.6 +178.1 +188.2 +176.9 +191.5 +194.0 +182.6 +184.0 +186.4 +184.1 +180.0 +181.1 +187.3 +176.1 +174.5 +189.3 +188.9 +178.7 +177.2 +191.0 +194.3 +187.7 +177.0 +176.4 +183.3 +176.2 +181.3 +181.0 +176.8 +187.8 +178.2 +202.3 +191.6 +180.3 +174.8 +187.8 +176.9 +176.9 +181.1 +177.5 +186.1 +179.3 +187.2 +176.6 +178.6 +178.7 +179.0 +188.7 +188.5 +183.8 +192.2 +178.8 +180.4 +182.1 +177.0 +175.1 +180.1 +176.7 +176.0 +188.1 +191.3 +186.6 +202.0 +182.5 +175.9 +182.1 +195.6 +174.8 +194.5 +181.2 +191.8 +180.4 +178.7 +186.1 +180.9 +186.4 +177.0 +183.6 +179.7 +208.1 +179.4 +179.1 +178.5 +179.2 +180.7 +183.3 +180.4 +187.6 +176.9 +185.4 +187.5 +184.3 +183.5 +181.0 +190.8 +178.6 +180.0 +180.4 +191.0 +182.8 +186.9 +179.6 +189.1 +186.9 +202.3 +181.1 +192.1 +194.3 +176.7 +185.8 +177.3 +179.5 +177.2 +177.8 +190.5 +190.1 +184.1 +191.8 +178.7 +185.9 +178.3 +177.4 +176.4 +177.8 +179.0 +177.6 +179.7 +178.1 +190.5 +177.8 +180.4 +181.6 +181.3 +177.3 +182.1 +189.7 +178.2 +179.7 +181.3 +178.8 +194.0 +200.6 +179.6 +177.9 +181.0 +184.7 +180.8 +181.1 +187.8 +183.4 +186.2 +181.8 +175.8 +176.8 +176.3 +177.0 +186.7 +178.5 +183.0 +177.1 +182.3 +182.2 +180.6 +180.6 +185.2 +178.9 +192.3 +177.6 +212.1 +180.5 +186.4 +187.4 +196.4 +181.9 +194.5 +188.5 +179.4 +179.3 +181.4 +185.7 +176.9 +182.6 +185.0 +181.7 +178.9 +184.4 +180.4 +189.2 +187.5 +204.6 +189.7 +182.6 +182.1 +180.0 +182.3 +180.1 +189.3 +178.1 +183.8 +180.9 +184.8 +182.2 +177.7 +176.1 +197.5 +195.8 +183.3 +183.4 +199.0 +205.4 +183.6 +182.5 +182.2 +199.1 +187.1 +179.5 +182.9 +180.2 +177.5 +183.4 +189.4 +196.2 +181.2 +183.3 +178.6 +181.5 +185.5 +179.8 +184.3 +198.8 +184.9 +178.0 +177.7 +181.0 +186.0 +196.3 +178.1 +192.4 +178.7 +181.4 +192.5 +181.4 +192.5 +182.2 +178.9 +183.9 +185.3 +192.2 +186.0 +193.4 +178.4 +194.5 +179.9 +187.6 +185.9 +179.2 +185.0 +188.1 +189.4 +187.9 +190.0 +191.9 +187.5 +186.0 +189.6 +182.4 +185.6 +187.0 +192.4 +183.3 +189.2 +194.6 +195.9 +190.7 +186.4 +185.9 +185.3 +177.1 +184.6 +186.4 +183.1 +186.2 +180.0 +181.8 +184.7 +176.6 +178.0 +178.5 +182.2 +200.3 +184.2 +186.9 +178.2 +190.3 +194.9 +193.1 +193.5 +188.5 +177.9 +185.4 +177.6 +179.7 +193.0 +200.3 +182.0 +192.3 +183.3 +183.6 +183.2 +190.8 +182.6 +177.7 +177.1 +183.7 +177.5 +175.4 +180.3 +181.3 +178.8 +182.3 +176.5 +177.4 +176.0 +178.8 +184.3 +183.0 +180.2 +184.9 +188.1 +187.6 +182.8 +183.0 +180.0 +177.5 +196.1 +185.1 +175.5 +175.9 +178.6 +201.5 +177.1 +191.7 +184.8 +176.2 +184.4 +175.9 +182.6 +182.0 +180.8 +178.7 +191.3 +179.5 +178.7 +174.8 +185.1 +174.9 +189.8 +191.3 +191.9 +190.7 +175.8 +177.3 +183.6 +178.0 +185.1 +177.2 +178.6 +188.7 +179.0 +186.0 +202.6 +177.2 +179.8 +196.0 +195.8 +186.8 +183.6 +202.2 +182.0 +175.8 +186.6 +178.2 +181.3 +180.8 +183.6 +181.9 +192.4 +190.8 +179.2 +184.6 +186.2 +183.0 +196.5 +179.6 +183.4 +187.2 +179.5 +185.3 +182.2 +177.8 +176.6 +177.2 +179.3 +177.1 +181.9 +178.9 +180.2 +179.8 +175.0 +176.8 +180.5 +175.7 +176.3 +180.6 +181.6 +176.6 +175.4 +177.4 +176.2 +180.8 +188.0 +178.2 +205.6 +177.8 +176.5 +179.4 +176.4 +183.3 +177.9 +174.2 +176.1 +182.8 +180.8 +186.9 +179.4 +195.8 +178.8 +181.6 +199.7 +175.8 +186.7 +179.1 +182.4 +179.1 +176.3 +180.5 +174.7 +180.8 +178.2 +185.2 +183.3 +192.7 +184.9 +205.8 +177.0 +182.5 +187.3 +185.9 +184.3 +177.0 +193.2 +179.0 +177.5 +181.3 +176.2 +178.8 +197.3 +180.8 +180.8 +189.7 +188.3 +179.5 +179.3 +185.3 +184.8 +192.3 +180.4 +186.7 +180.0 +178.9 +177.9 +179.4 +177.3 +181.9 +175.4 +174.1 +180.2 +176.9 +178.6 +177.5 +176.4 +177.7 +180.6 +182.2 +178.0 +179.3 +176.9 +188.6 +180.4 +179.8 +180.7 +177.2 +176.7 +175.3 +176.4 +178.4 +177.8 +180.1 +193.5 +181.0 +183.6 +177.9 +181.9 +186.9 +197.3 +175.7 +177.6 +184.7 +179.6 +182.2 +181.9 +181.2 +176.7 +185.5 +196.8 +185.9 +182.4 +178.1 +180.2 +178.3 +181.7 +186.4 +175.6 +182.6 +179.6 +181.0 +188.0 +178.1 +176.9 +181.0 +179.6 +185.0 +177.7 +179.4 +178.0 +185.7 +179.0 +194.2 +175.4 +178.5 +175.0 +176.7 +179.3 +188.8 +181.0 +177.3 +188.0 +178.5 +180.0 +175.9 +180.7 +181.2 +177.0 +179.2 +179.3 +193.1 +176.0 +179.4 +185.4 +177.4 +177.2 +177.9 +176.4 +186.7 +178.0 +178.7 +180.5 +186.7 +176.4 +185.8 +182.5 +177.3 +180.3 +179.5 +174.6 +184.2 +184.0 +176.3 +176.0 +211.4 +184.5 +182.1 +180.5 +188.1 +177.9 +179.7 +177.5 +184.5 +180.6 +191.1 +187.4 +176.3 +180.4 +183.2 +184.8 +178.6 +189.8 +180.9 +176.6 +176.9 +176.4 +182.0 +178.2 +177.3 +189.9 +191.1 +178.0 +179.5 +176.7 +194.2 +211.7 +175.9 +177.9 +176.0 +179.7 +180.6 +176.4 +180.3 +177.2 +183.6 +180.6 +187.4 +189.4 +189.6 +177.1 +179.4 +184.3 +186.4 +181.9 +180.1 +184.8 +182.0 +188.2 +181.4 +184.8 +177.5 +180.3 +195.4 +185.7 +176.8 +176.0 +187.3 +202.2 +194.5 +181.1 +182.9 +197.6 +186.9 +181.3 +180.9 +183.9 +191.0 +182.5 +186.9 +179.7 +179.2 +185.6 +184.3 +180.4 +190.9 +183.6 +183.1 +175.0 +180.9 +186.3 +174.8 +176.4 +176.1 +175.7 +178.1 +178.0 +180.5 +182.6 +180.0 +179.2 +186.8 +188.3 +179.8 +179.6 +180.5 +176.9 +204.2 +195.2 +180.2 +177.9 +187.9 +191.3 +183.9 +185.3 +186.8 +182.5 +189.5 +176.8 +180.5 +189.3 +185.9 +178.0 +176.0 +179.2 +181.3 +175.6 +179.9 +179.4 +183.8 +178.8 +177.9 +180.1 +182.3 +180.9 +175.7 +178.1 +173.7 +177.9 +180.0 +176.2 +177.7 +179.4 +192.3 +175.7 +185.7 +188.6 +195.5 +182.5 +184.1 +177.9 +177.8 +183.0 +174.9 +174.9 +179.7 +186.4 +185.9 +175.2 +179.2 +176.8 +181.5 +178.3 +180.6 +176.8 +175.8 +175.9 +180.3 +179.7 +175.8 +174.1 +180.6 +176.7 +179.7 +175.7 +179.2 +178.3 +203.4 +177.9 +186.9 +175.7 +177.0 +178.8 +180.2 +180.1 +185.5 +175.0 +178.6 +183.3 +177.2 +178.3 +180.1 +175.9 +175.6 +179.3 +179.8 +178.0 +186.5 +176.4 +187.2 +181.6 +175.4 +177.5 +179.1 +179.2 +175.9 +174.3 +175.5 +177.4 +178.5 +182.0 +181.4 +184.4 +183.4 +174.4 +177.5 +175.0 +175.4 +174.1 +182.8 +184.9 +178.3 +182.9 +182.3 +186.6 +180.9 +191.6 +185.6 +184.8 +190.2 +175.8 +185.2 +175.5 +176.9 +176.7 +176.9 +176.5 +179.2 +179.9 +179.2 +177.8 +188.9 +180.3 +186.8 +182.0 +180.8 +176.6 +180.5 +175.3 +185.0 +181.1 +181.1 +176.5 +176.5 +178.0 +175.9 +180.2 +178.3 +188.0 +185.9 +178.6 +179.5 +187.6 +180.2 +181.3 +182.5 +182.8 +175.0 +184.9 +181.7 +178.5 +177.5 +177.1 +176.8 +179.0 +179.2 +175.5 +177.1 +178.9 +174.8 +179.0 +177.3 +179.2 +178.2 +177.5 +191.8 +177.6 +182.1 +178.7 +177.2 +182.5 +181.5 +185.6 +179.5 +183.9 +177.6 +179.6 +193.9 +175.9 +216.0 +180.4 +177.3 +178.8 +176.7 +177.3 +178.3 +188.8 +175.8 +175.7 +176.0 +178.3 +185.1 +179.0 +191.3 +180.0 +178.8 +189.8 +182.7 +176.7 +178.0 +184.2 +185.0 +190.3 +178.0 +178.7 +177.4 +186.0 +176.4 +179.6 +178.0 +182.2 +175.9 +175.7 +178.3 +174.7 +193.6 +177.2 +186.6 +183.7 +181.0 +192.1 +176.4 +188.6 +205.9 +199.0 +194.6 +193.4 +190.4 +178.1 +188.0 +183.8 +180.5 +180.5 +190.5 +194.5 +180.8 +185.3 +193.4 +183.1 +178.1 +197.4 +190.2 +181.0 +184.9 +189.0 +184.6 +183.7 +187.7 +187.9 +182.5 +192.6 +184.3 +178.7 +179.8 +196.8 +184.4 +195.5 +183.9 +186.6 +181.0 +188.7 +185.0 +197.1 +204.2 +176.8 +179.6 +185.3 +182.1 +178.6 +180.6 +183.0 +199.1 +180.5 +180.7 +189.2 +194.5 +187.1 +192.3 +179.3 +196.8 +197.3 +180.3 +177.0 +178.8 +183.2 +183.1 +176.6 +201.6 +183.8 +182.7 +177.0 +185.2 +180.1 +199.4 +203.2 +187.4 +185.7 +184.1 +183.0 +198.7 +186.3 +187.9 +199.4 +185.9 +190.3 +202.8 +204.6 +178.1 +187.6 +196.5 +180.3 +181.7 +182.9 +199.2 +198.8 +190.5 +219.6 +180.0 +203.5 +182.0 +184.1 +176.8 +200.9 +201.9 +180.9 +177.9 +183.4 +179.5 +197.8 +188.0 +204.1 +185.6 +179.3 +190.6 +184.3 +195.2 +188.0 +200.9 +187.7 +183.0 +180.9 +180.0 +184.7 +176.8 +181.9 +180.6 +180.0 +177.7 +182.2 +175.2 +182.9 +186.3 +203.4 +183.3 +175.8 +186.2 +179.8 +178.4 +178.2 +420.1 +177.9 +193.8 +183.8 +180.0 +188.8 +187.2 +192.0 +180.8 +182.3 +191.8 +183.2 +176.6 +179.5 +215.2 +193.8 +188.3 +180.3 +186.4 +181.8 +205.8 +175.1 +186.5 +205.9 +185.5 +187.1 +191.7 +189.4 +188.3 +180.1 +179.8 +178.9 +179.3 +181.9 +184.9 +188.4 +176.2 +177.0 +181.8 +179.5 +177.3 +176.0 +208.3 +185.6 +180.6 +180.3 +195.0 +177.7 +175.7 +214.3 +188.2 +177.7 +187.1 +197.1 +184.8 +178.2 +182.1 +178.4 +176.3 +190.6 +187.3 +177.8 +177.2 +191.7 +200.2 +188.4 +177.3 +177.0 +178.5 +180.3 +177.0 +182.2 +184.4 +175.8 +185.6 +179.6 +180.8 +179.9 +199.4 +175.1 +196.3 +185.5 +182.5 +179.4 +191.2 +192.4 +180.3 +186.8 +194.7 +180.5 +178.0 +180.8 +184.9 +180.7 +179.0 +184.5 +180.5 +176.2 +182.9 +178.8 +183.5 +194.6 +182.0 +198.5 +176.5 +185.0 +187.6 +196.9 +194.2 +185.0 +190.8 +179.6 +175.8 +198.5 +180.0 +177.9 +203.3 +183.3 +181.4 +183.8 +176.5 +175.1 +193.9 +178.9 +183.0 +180.2 +178.0 +178.9 +188.1 +181.3 +179.3 +181.6 +183.1 +175.0 +178.8 +175.7 +179.4 +180.6 +185.9 +176.7 +190.8 +189.6 +180.1 +176.7 +181.7 +180.7 +191.9 +175.5 +180.1 +185.1 +182.0 +181.0 +184.3 +196.6 +188.8 +191.0 +184.2 +184.1 +180.1 +189.0 +178.2 +182.6 +190.4 +182.5 +186.3 +182.9 +191.5 +183.6 +193.2 +183.3 +201.4 +215.5 +182.4 +196.6 +183.6 +190.7 +180.8 +190.9 +178.2 +189.8 +194.8 +180.9 +184.2 +184.1 +185.3 +176.7 +181.5 +181.0 +191.1 +195.9 +192.0 +178.0 +179.9 +184.7 +181.3 +188.5 +187.6 +184.7 +193.9 +198.5 +188.5 +186.5 +184.4 +188.1 +183.0 +190.8 +184.9 +183.8 +184.5 +185.5 +180.2 +181.3 +181.8 +177.5 +178.6 +205.8 +188.5 +188.1 +183.9 +182.9 +192.0 +181.9 +181.5 +190.2 +185.2 +188.1 +174.3 +190.1 +185.6 +183.3 +182.1 +192.2 +179.6 +179.7 +187.5 +187.3 +187.1 +180.0 +184.2 +180.6 +311.7 +185.9 +185.9 +185.1 +176.8 +176.4 +177.7 +177.1 +188.2 +174.8 +184.0 +178.6 +180.2 +183.4 +182.9 +189.8 +187.3 +176.8 +192.5 +186.1 +212.1 +179.4 +181.3 +188.4 +177.7 +200.4 +182.7 +177.5 +183.5 +187.5 +182.6 +194.0 +179.6 +181.6 +201.6 +183.0 +185.5 +177.8 +200.1 +182.7 +182.1 +192.5 +185.6 +188.8 +180.8 +179.5 +181.1 +185.1 +178.1 +178.9 +183.1 +180.8 +178.7 +184.8 +180.1 +179.7 +187.2 +187.1 +182.5 +187.0 +185.6 +191.9 +187.7 +186.3 +188.0 +180.1 +179.3 +181.3 +193.7 +176.8 +184.4 +176.7 +183.1 +189.4 +178.8 +211.4 +182.2 +190.8 +194.1 +179.4 +176.3 +178.6 +175.5 +182.9 +186.0 +184.1 +187.8 +181.3 +188.4 +178.3 +178.7 +200.4 +176.0 +187.7 +197.2 +188.2 +188.6 +192.3 +180.3 +186.3 +187.6 +201.5 +183.8 +182.9 +185.8 +185.9 +181.9 +180.2 +177.3 +183.3 +186.4 +181.3 +195.4 +194.0 +182.7 +178.3 +190.5 +178.6 +194.5 +175.4 +176.8 +177.4 +191.1 +180.6 +175.5 +175.2 +186.9 +176.1 +183.6 +187.1 +178.4 +196.0 +201.0 +183.0 +179.7 +179.9 +184.1 +179.9 +193.1 +180.8 +187.2 +182.0 +176.1 +183.4 +188.4 +177.6 +177.3 +183.8 +179.5 +184.4 +179.8 +181.5 +178.6 +186.5 +183.1 +175.7 +177.3 +177.5 +194.3 +190.9 +175.4 +198.2 +182.6 +180.9 +182.7 +177.0 +190.4 +186.8 +199.4 +183.6 +180.4 +196.3 +205.0 +178.0 +182.0 +185.0 +180.0 +200.6 +185.4 +186.6 +188.4 +199.1 +183.3 +211.8 +182.2 +186.0 +186.5 +185.4 +183.8 +182.3 +179.9 +182.0 +186.9 +184.6 +187.9 +182.4 +187.3 +199.6 +187.9 +196.6 +189.9 +190.9 +180.9 +177.5 +180.2 +188.4 +181.4 +178.0 +190.8 +198.7 +191.5 +189.8 +191.4 +188.6 +186.2 +198.8 +207.4 +192.2 +185.0 +194.7 +198.7 +191.4 +197.4 +184.9 +202.5 +178.6 +180.3 +186.9 +184.5 +178.3 +179.4 +201.3 +193.5 +184.2 +193.9 +177.1 +185.8 +188.5 +183.6 +201.0 +183.6 +190.9 +190.3 +185.4 +180.2 +185.9 +182.6 +184.7 +182.1 +188.7 +180.5 +178.0 +198.6 +188.8 +183.8 +178.1 +176.4 +179.4 +179.5 +186.5 +180.4 +179.8 +180.2 +195.0 +177.2 +180.0 +195.5 +181.7 +183.6 +187.1 +180.7 +180.7 +181.2 +184.5 +181.0 +199.1 +197.4 +183.6 +189.0 +183.2 +196.4 +183.7 +191.4 +185.3 +202.8 +177.9 +182.1 +179.5 +176.3 +193.1 +184.6 +178.8 +191.8 +224.8 +180.5 +182.0 +178.8 +178.2 +178.8 +185.4 +186.5 +178.6 +188.4 +179.7 +190.9 +181.6 +179.8 +190.1 +188.0 +179.7 +204.8 +184.8 +179.7 +182.5 +184.1 +176.1 +181.1 +177.2 +185.8 +177.7 +179.1 +186.7 +183.8 +177.5 +180.2 +200.9 +181.0 +182.7 +177.7 +191.7 +176.8 +190.9 +178.6 +182.3 +178.8 +186.1 +176.8 +180.0 +182.5 +175.0 +183.2 +177.4 +189.5 +177.7 +179.1 +180.8 +177.9 +180.0 +181.6 +178.6 +178.1 +184.7 +176.8 +176.0 +175.7 +175.9 +180.3 +176.3 +180.4 +178.8 +182.5 +177.9 +187.7 +182.2 +187.2 +178.5 +179.9 +181.1 +180.9 +182.5 +179.8 +178.6 +176.0 +179.0 +189.5 +183.5 +182.5 +183.6 +186.0 +181.7 +191.1 +187.4 +194.0 +197.2 +197.3 +177.9 +179.4 +178.0 +176.9 +178.6 +189.0 +183.3 +188.5 +184.0 +184.0 +185.5 +180.7 +176.3 +180.2 +179.9 +186.7 +177.5 +181.0 +189.3 +190.3 +178.3 +188.1 +189.5 +183.6 +190.7 +178.9 +179.1 +179.5 +196.1 +180.8 +178.9 +177.9 +184.6 +178.0 +181.9 +185.3 +187.5 +183.9 +187.0 +180.1 +198.9 +182.6 +181.1 +191.1 +190.7 +183.6 +181.2 +184.5 +177.3 +179.5 +178.7 +181.5 +180.1 +185.0 +178.6 +182.8 +182.7 +192.6 +181.5 +176.5 +178.4 +187.0 +180.2 +187.5 +182.5 +178.0 +184.6 +180.3 +187.2 +177.6 +187.5 +190.6 +188.2 +187.8 +182.6 +186.8 +179.0 +211.0 +176.2 +180.5 +183.4 +215.3 +181.6 +208.2 +215.6 +207.8 +189.1 +176.5 +190.9 +187.0 +178.8 +190.2 +183.0 +193.6 +175.3 +184.4 +184.2 +181.7 +175.4 +177.4 +176.1 +187.1 +194.1 +181.3 +193.1 +182.1 +184.7 +183.1 +186.0 +180.6 +181.7 +181.7 +184.9 +191.4 +201.1 +181.7 +192.9 +177.6 +187.6 +177.6 +183.6 +195.4 +187.2 +184.2 +185.4 +178.0 +201.0 +180.0 +205.9 +201.9 +199.2 +185.2 +182.7 +181.0 +187.4 +181.5 +186.6 +180.4 +176.7 +177.9 +178.2 +179.3 +186.5 +175.7 +185.5 +195.1 +181.9 +183.3 +182.0 +176.7 +181.0 +176.1 +179.4 +186.2 +194.1 +191.1 +184.0 +185.1 +188.6 +183.2 +176.1 +179.3 +183.6 +177.5 +192.7 +180.6 +191.3 +182.6 +189.3 +183.6 +182.4 +178.8 +175.5 +179.3 +193.2 +181.3 +183.9 +185.1 +183.3 +184.9 +188.6 +185.7 +194.9 +199.5 +175.7 +202.6 +194.2 +185.3 +178.0 +182.5 +202.3 +187.5 +192.9 +181.8 +183.2 +183.5 +187.8 +179.6 +178.7 +197.1 +182.2 +202.2 +194.8 +184.9 +192.6 +175.5 +178.0 +184.7 +177.8 +178.7 +179.7 +181.4 +186.6 +179.3 +178.9 +182.3 +180.8 +180.5 +182.4 +184.0 +183.2 +181.2 +183.6 +186.2 +179.7 +178.6 +200.2 +189.2 +177.5 +188.0 +191.1 +183.2 +183.4 +191.0 +186.9 +198.9 +180.0 +175.3 +261.0 +178.7 +181.1 +181.2 +178.7 +179.1 +201.6 +178.4 +181.6 +176.2 +181.7 +192.2 +184.5 +179.1 +191.8 +181.3 +184.4 +185.0 +186.6 +178.6 +180.2 +185.2 +190.0 +177.3 +178.5 +193.7 +178.7 +184.8 +179.9 +192.0 +186.2 +194.7 +181.5 +183.9 +188.0 +183.4 +181.3 +187.2 +184.6 +188.7 +185.3 +180.1 +183.4 +182.4 +176.9 +177.6 +191.1 +180.8 +176.0 +175.4 +180.0 +179.6 +188.3 +191.3 +183.2 +181.7 +177.9 +180.0 +182.0 +181.3 +180.1 +187.7 +177.5 +186.7 +183.4 +189.1 +199.9 +203.9 +184.1 +179.2 +187.4 +185.7 +181.8 +179.7 +179.1 +175.6 +200.8 +181.2 +175.9 +179.3 +176.9 +183.8 +195.7 +185.6 +181.9 +184.0 +190.1 +188.6 +179.0 +181.7 +179.2 +212.9 +181.3 +192.8 +180.8 +180.4 +190.8 +178.1 +181.2 +183.4 +189.4 +191.6 +196.7 +179.2 +203.5 +197.4 +180.5 +184.2 +194.9 +182.6 +183.3 +177.9 +200.4 +191.9 +175.4 +214.3 +184.1 +180.8 +182.9 +181.3 +182.4 +181.4 +191.0 +178.9 +188.3 +195.6 +182.1 +193.5 +180.3 +196.3 +177.9 +198.8 +190.9 +179.1 +185.4 +188.7 +181.0 +177.8 +178.0 +203.4 +179.4 +180.8 +183.6 +179.0 +184.8 +178.0 +188.3 +203.1 +194.9 +196.8 +187.9 +185.7 +178.0 +180.8 +176.8 +181.0 +180.9 +187.0 +179.5 +186.9 +175.9 +174.7 +177.1 +187.9 +193.2 +177.3 +177.9 +181.2 +180.1 +176.1 +179.4 +176.7 +183.2 +191.8 +184.7 +180.8 +183.2 +176.9 +182.8 +187.5 +187.3 +185.7 +184.6 +178.8 +183.0 +176.7 +177.6 +198.0 +194.7 +188.8 +180.9 +187.9 +175.9 +193.1 +183.4 +186.2 +184.4 +182.3 +175.6 +224.3 +186.0 +184.0 +179.0 +176.6 +183.9 +190.9 +188.5 +183.9 +184.7 +198.6 +184.1 +182.0 +181.3 +183.3 +181.6 +182.8 +186.6 +181.4 +179.0 +192.0 +186.3 +202.8 +190.0 +182.1 +186.4 +186.0 +187.0 +192.8 +185.4 +185.4 +181.2 +182.3 +183.2 +190.4 +184.9 +186.4 +180.9 +181.4 +179.8 +191.3 +182.4 +193.0 +202.1 +187.9 +222.0 +196.9 +201.9 +197.8 +198.7 +184.1 +192.7 +203.2 +197.1 +193.7 +196.5 +186.3 +198.4 +181.2 +192.3 +190.4 +183.3 +181.9 +201.8 +198.5 +194.7 +182.3 +184.9 +186.0 +185.9 +190.8 +179.4 +182.2 +181.7 +180.6 +179.2 +180.9 +189.7 +195.7 +200.7 +191.6 +191.1 +187.6 +181.6 +185.9 +188.3 +183.5 +187.7 +190.3 +186.1 +181.1 +178.7 +178.0 +179.0 +191.5 +186.8 +184.9 +181.0 +183.4 +181.3 +180.1 +188.2 +204.3 +180.1 +185.8 +184.9 +187.4 +176.0 +184.2 +177.6 +179.0 +178.9 +188.3 +179.8 +180.9 +177.5 +188.9 +191.1 +184.7 +189.5 +178.4 +189.3 +184.7 +186.2 +178.9 +176.6 +180.8 +177.3 +183.3 +180.0 +188.8 +186.8 +179.5 +179.6 +181.6 +177.4 +176.5 +178.0 +182.6 +184.7 +189.3 +183.6 +180.6 +186.6 +180.7 +185.6 +178.2 +176.3 +181.2 +177.6 +175.7 +177.3 +184.0 +178.2 +182.9 +201.6 +175.0 +179.3 +181.6 +176.2 +180.4 +176.0 +183.7 +177.5 +183.5 +193.5 +192.7 +179.0 +182.2 +179.6 +179.3 +176.8 +177.9 +177.2 +176.5 +177.4 +177.9 +186.5 +178.9 +181.0 +178.0 +176.6 +176.5 +179.2 +187.2 +178.2 +184.6 +178.9 +177.8 +182.1 +187.2 +188.8 +184.5 +181.0 +188.4 +193.1 +178.7 +186.2 +181.1 +183.2 +181.4 +177.6 +176.7 +177.1 +179.0 +181.0 +177.9 +183.5 +181.6 +178.9 +179.4 +175.8 +175.6 +179.0 +180.1 +175.9 +179.9 +178.1 +186.0 +208.0 +178.6 +182.7 +186.3 +174.5 +178.6 +184.3 +185.4 +178.3 +178.5 +190.5 +180.8 +188.2 +177.3 +190.1 +175.5 +188.5 +185.4 +179.6 +181.4 +177.4 +217.5 +196.9 +180.8 +179.9 +192.5 +178.0 +178.4 +175.8 +175.3 +184.8 +197.2 +186.0 +176.9 +176.5 +178.4 +180.8 +185.5 +203.5 +183.3 +180.0 +177.6 +181.2 +180.2 +179.7 +194.4 +180.8 +181.3 +176.9 +187.2 +178.5 +178.7 +185.4 +183.0 +181.3 +261.7 +178.1 +175.9 +175.9 +189.8 +185.9 +184.1 +181.7 +182.7 +177.6 +176.6 +183.6 +178.4 +178.5 +185.8 +184.5 +178.5 +178.0 +181.7 +177.4 +179.3 +177.5 +175.7 +176.6 +176.4 +180.8 +184.9 +177.6 +178.0 +178.7 +178.0 +177.8 +176.7 +183.6 +196.4 +182.4 +182.2 +178.0 +175.9 +179.2 +175.6 +178.3 +176.2 +178.8 +183.1 +175.2 +182.4 +180.6 +177.6 +176.6 +180.2 +180.4 +181.1 +176.2 +188.7 +187.2 +181.6 +181.5 +177.2 +176.9 +177.4 +176.3 +185.2 +178.3 +184.6 +178.3 +189.7 +179.5 +201.1 +176.2 +185.5 +182.2 +183.4 +174.5 +176.8 +180.1 +179.8 +182.2 +178.8 +186.5 +188.2 +180.4 +182.1 +182.8 +194.7 +182.3 +177.6 +176.2 +180.7 +193.6 +178.9 +177.8 +178.7 +179.8 +176.3 +180.8 +184.2 +181.5 +179.2 +178.2 +179.9 +176.7 +180.0 +183.0 +180.6 +177.3 +186.7 +180.8 +181.5 +190.3 +186.8 +184.2 +180.4 +181.6 +182.2 +183.0 +173.3 +187.5 +185.7 +180.1 +177.8 +189.2 +194.9 +176.8 +194.9 +187.0 +209.2 +185.4 +177.7 +178.0 +175.4 +178.0 +183.1 +177.9 +182.4 +177.2 +177.7 +178.9 +183.5 +178.1 +179.2 +191.5 +182.6 +179.8 +182.5 +176.9 +180.2 +176.0 +178.6 +184.7 +279.2 +179.0 +176.5 +180.0 +182.9 +178.3 +188.1 +179.6 +177.8 +175.6 +180.0 +178.6 +181.0 +184.0 +178.2 +191.6 +176.8 +187.7 +179.1 +183.3 +203.5 +178.7 +178.6 +175.4 +187.5 +179.7 +181.6 +177.9 +180.5 +186.7 +182.3 +187.9 +182.2 +187.8 +181.1 +266.6 +186.3 +185.9 +178.0 +180.6 +176.9 +176.5 +177.0 +184.1 +182.7 +179.0 +182.6 +180.8 +179.9 +179.0 +183.1 +178.6 +176.4 +177.3 +176.4 +180.2 +177.2 +177.0 +177.5 +178.3 +175.2 +177.8 +176.7 +181.4 +177.7 +177.1 +176.5 +180.8 +177.2 +178.1 +177.9 +187.1 +183.8 +187.0 +184.4 +180.2 +179.2 +179.2 +178.6 +188.0 +184.7 +178.0 +176.3 +175.3 +181.6 +191.8 +176.9 +182.0 +183.3 +177.5 +185.0 +181.5 +182.6 +179.0 +188.4 +203.6 +184.3 +183.8 +188.0 +189.7 +184.7 +185.9 +195.0 +185.3 +178.8 +190.6 +181.6 +180.1 +187.1 +182.3 +176.8 +179.1 +185.8 +180.1 +180.3 +182.7 +185.3 +175.6 +182.8 +188.5 +175.6 +182.7 +182.0 +179.5 +180.9 +179.4 +183.2 +182.7 +182.5 +182.0 +190.1 +199.7 +177.8 +177.6 +180.9 +181.6 +183.3 +186.1 +188.0 +184.9 +185.4 +182.6 +182.5 +178.7 +185.6 +175.4 +176.7 +182.5 +180.6 +178.3 +179.7 +184.4 +180.9 +184.5 +187.2 +181.6 +192.7 +185.9 +179.6 +184.3 +182.3 +175.0 +180.3 +177.2 +177.9 +178.4 +179.7 +174.6 +190.4 +193.1 +186.8 +180.6 +176.0 +177.4 +188.4 +179.2 +180.9 +178.7 +180.9 +178.2 +176.6 +185.0 +182.1 +181.7 +175.2 +175.1 +183.2 +192.0 +188.3 +182.1 +176.7 +177.6 +177.3 +192.6 +189.3 +178.2 +177.5 +183.1 +183.4 +181.2 +179.5 +175.4 +176.8 +178.2 +175.8 +179.4 +184.7 +184.6 +191.9 +177.4 +176.7 +179.3 +181.6 +183.3 +176.6 +218.6 +175.7 +174.4 +186.4 +185.1 +176.0 +195.2 +180.3 +178.1 +179.2 +178.0 +181.5 +182.9 +179.0 +191.3 +185.1 +186.5 +177.2 +180.3 +191.0 +175.7 +179.8 +182.0 +181.6 +185.0 +183.2 +174.8 +184.5 +182.1 +178.7 +186.7 +186.9 +176.5 +184.5 +188.9 +180.4 +190.1 +181.4 +188.0 +193.5 +187.7 +180.0 +183.5 +176.7 +177.5 +179.2 +206.2 +178.4 +183.2 +181.7 +200.9 +193.1 +176.1 +181.8 +183.6 +193.5 +201.7 +188.0 +178.9 +180.5 +180.8 +176.5 +178.0 +180.6 +181.4 +184.7 +192.4 +177.4 +182.4 +202.8 +189.7 +177.3 +181.5 +178.7 +180.0 +180.6 +178.0 +178.3 +183.9 +177.4 +180.0 +189.7 +175.4 +185.2 +179.3 +184.1 +177.5 +182.1 +174.8 +179.8 +187.5 +216.9 +182.9 +183.5 +203.3 +181.5 +184.0 +181.3 +183.4 +180.3 +176.1 +180.3 +180.1 +180.2 +181.2 +182.3 +176.2 +189.5 +219.7 +180.1 +176.6 +177.3 +178.8 +181.2 +175.1 +183.3 +182.1 +178.7 +180.9 +183.3 +188.1 +225.2 +185.8 +184.3 +187.5 +187.3 +190.7 +181.0 +180.2 +184.6 +177.9 +180.1 +187.6 +181.1 +177.5 +184.5 +176.5 +182.7 +174.5 +183.2 +176.5 +183.0 +177.0 +179.2 +182.9 +184.9 +176.4 +179.9 +183.2 +178.1 +177.0 +205.5 +182.5 +175.2 +185.0 +182.7 +178.2 +189.0 +190.5 +178.8 +183.5 +185.1 +181.3 +181.3 +194.5 +187.8 +184.9 +177.2 +179.6 +195.1 +181.2 +188.8 +180.4 +180.8 +180.0 +177.6 +198.3 +180.6 +179.5 +178.4 +179.3 +177.5 +176.8 +181.6 +183.8 +181.8 +175.6 +181.0 +178.4 +179.4 +179.8 +181.3 +181.1 +193.3 +180.1 +182.8 +179.3 +181.1 +188.3 +177.6 +178.5 +178.8 +177.1 +179.2 +181.6 +185.6 +191.8 +176.3 +187.8 +184.5 +197.3 +183.1 +179.7 +178.1 +181.3 +177.6 +178.2 +179.5 +177.5 +185.4 +184.4 +186.4 +177.4 +178.0 +179.7 +177.9 +184.6 +189.1 +184.5 +197.2 +192.6 +188.0 +186.5 +177.3 +183.7 +183.7 +192.8 +181.2 +199.4 +179.7 +187.7 +192.8 +208.5 +184.1 +175.6 +185.3 +188.6 +183.7 +180.7 +182.1 +176.0 +183.1 +179.6 +175.7 +187.0 +179.9 +184.8 +179.4 +187.6 +181.6 +201.1 +193.5 +186.2 +190.3 +197.9 +208.2 +192.9 +193.1 +184.9 +210.5 +178.6 +198.2 +177.9 +192.2 +181.6 +185.1 +189.1 +188.3 +204.7 +186.2 +179.6 +189.2 +176.9 +180.5 +183.3 +193.1 +178.4 +203.8 +185.2 +180.6 +183.3 +186.7 +188.8 +184.4 +181.7 +186.4 +185.8 +180.1 +182.7 +179.8 +198.9 +180.4 +178.3 +195.6 +184.0 +179.5 +181.8 +187.4 +181.7 +181.8 +175.1 +200.0 +181.6 +203.0 +176.0 +184.9 +199.3 +178.2 +184.3 +176.6 +192.9 +188.1 +185.7 +181.0 +179.5 +183.4 +186.7 +178.6 +183.2 +179.6 +182.6 +177.3 +179.0 +197.0 +182.0 +174.8 +179.4 +180.7 +210.3 +211.3 +235.3 +255.7 +275.7 +286.8 +306.7 +347.2 +381.2 +184.5 +186.7 +190.1 +193.3 +177.9 +188.0 +184.0 +180.6 +178.5 +235.8 +179.6 +178.1 +196.0 +180.5 +179.0 +185.8 +230.8 +211.1 +178.3 +179.4 +186.5 +180.6 +181.4 +183.2 +188.7 +184.8 +175.0 +179.2 +185.4 +180.8 +182.7 +183.1 +177.3 +177.4 +181.3 +190.9 +182.7 +198.2 +180.9 +200.5 +188.4 +207.5 +190.2 +178.9 +184.1 +193.6 +321.3 +183.8 +181.4 +174.6 +185.1 +198.9 +202.2 +183.3 +187.3 +183.0 +184.5 +178.3 +183.8 +176.7 +178.3 +186.0 +181.0 +176.0 +181.3 +202.8 +179.7 +180.3 +191.6 +176.8 +182.6 +183.7 +181.3 +186.2 +205.7 +186.4 +181.9 +189.9 +188.9 +193.6 +203.2 +212.3 +178.9 +181.5 +189.6 +178.9 +177.6 +189.0 +177.3 +177.2 +178.0 +178.5 +177.9 +197.8 +182.0 +185.7 +193.6 +185.8 +183.1 +183.1 +192.7 +183.0 +187.0 +193.4 +186.9 +182.3 +183.9 +201.6 +199.5 +182.7 +184.6 +181.8 +179.1 +189.8 +183.1 +187.8 +185.7 +192.9 +179.3 +179.7 +180.2 +177.6 +180.8 +178.0 +190.2 +177.5 +199.2 +192.7 +181.2 +185.2 +183.5 +198.1 +178.9 +183.7 +191.6 +187.4 +180.5 +211.9 +206.2 +183.2 +182.1 +176.7 +187.4 +176.6 +183.2 +195.5 +178.7 +180.7 +181.2 +189.1 +187.8 +183.1 +181.9 +186.3 +197.1 +184.7 +177.2 +180.5 +179.5 +181.6 +177.9 +187.7 +196.2 +189.5 +180.5 +183.3 +180.6 +186.7 +186.2 +177.7 +192.1 +182.4 +177.5 +179.7 +193.6 +200.1 +179.9 +188.4 +182.3 +190.4 +179.4 +182.4 +181.7 +195.7 +177.2 +181.3 +182.9 +188.3 +183.6 +180.3 +192.7 +183.1 +210.5 +185.1 +183.4 +191.6 +187.9 +183.1 +175.5 +177.4 +183.7 +182.9 +188.5 +180.7 +186.2 +182.4 +186.3 +182.4 +188.1 +180.2 +195.4 +181.8 +192.9 +176.3 +177.7 +178.8 +179.4 +182.6 +180.3 +187.4 +185.3 +183.5 +180.5 +180.8 +182.0 +178.9 +176.2 +197.0 +181.5 +177.1 +189.1 +188.0 +176.5 +181.7 +184.9 +192.2 +181.5 +189.0 +204.6 +177.5 +176.6 +202.2 +176.9 +181.9 +177.9 +180.6 +197.2 +175.9 +175.6 +183.4 +182.7 +191.2 +178.8 +187.2 +178.9 +192.4 +178.6 +178.4 +184.5 +216.4 +190.7 +182.7 +181.6 +199.5 +182.0 +179.1 +189.1 +180.3 +182.0 +185.6 +196.1 +182.5 +180.4 +190.9 +178.9 +186.3 +209.4 +181.7 +186.6 +192.0 +200.0 +205.7 +191.0 +186.0 +185.5 +176.2 +191.4 +184.4 +186.1 +186.6 +180.0 +180.8 +178.0 +180.0 +198.8 +183.9 +183.5 +176.4 +176.7 +181.4 +186.4 +186.8 +186.0 +179.5 +187.2 +179.5 +185.2 +179.4 +183.6 +188.6 +179.8 +179.0 +184.4 +178.4 +177.4 +195.2 +207.0 +184.3 +179.6 +183.1 +184.0 +187.2 +181.4 +178.4 +182.7 +189.4 +183.1 +179.7 +181.8 +181.5 +181.9 +182.6 +178.2 +189.2 +189.1 +190.3 +184.1 +195.3 +176.1 +177.3 +186.8 +183.7 +188.5 +179.7 +177.4 +181.4 +180.7 +206.9 +179.2 +177.8 +180.5 +180.6 +191.9 +181.7 +190.3 +183.5 +186.2 +175.8 +179.1 +181.6 +181.6 +183.0 +179.1 +179.3 +183.7 +181.2 +185.2 +176.8 +177.8 +175.3 +184.6 +179.2 +176.9 +188.0 +184.6 +184.6 +180.9 +189.9 +396.3 +176.1 +183.1 +179.2 +184.6 +181.5 +181.3 +176.2 +177.4 +174.3 +179.4 +178.8 +184.6 +182.1 +183.4 +178.4 +184.1 +182.7 +181.4 +177.7 +185.0 +177.2 +179.4 +183.5 +183.1 +187.6 +181.1 +179.7 +189.6 +183.6 +177.1 +181.5 +193.1 +196.8 +180.2 +177.3 +178.8 +176.6 +177.8 +190.0 +176.3 +180.1 +177.5 +187.2 +186.7 +176.5 +179.6 +177.2 +177.5 +196.4 +181.9 +179.9 +178.2 +181.5 +177.5 +179.9 +183.1 +181.5 +181.8 +177.4 +177.6 +174.5 +178.4 +183.8 +181.6 +186.4 +178.1 +177.3 +179.1 +183.6 +191.2 +181.7 +187.6 +186.1 +183.5 +185.0 +186.5 +187.5 +190.5 +224.7 +177.3 +189.2 +191.7 +188.0 +182.8 +187.8 +182.2 +241.9 +197.6 +188.3 +181.7 +195.5 +184.4 +190.9 +187.4 +195.0 +190.0 +180.5 +179.1 +180.3 +195.0 +176.7 +191.8 +200.2 +180.3 +180.6 +186.1 +178.2 +182.5 +183.2 +178.9 +177.6 +185.6 +203.5 +179.7 +179.6 +190.8 +187.4 +184.7 +185.1 +195.1 +191.9 +181.1 +183.1 +177.1 +177.9 +178.5 +178.8 +186.0 +189.9 +184.7 +190.4 +192.9 +178.6 +176.1 +189.2 +186.1 +178.6 +186.9 +181.5 +181.5 +181.2 +178.1 +181.8 +187.6 +183.3 +188.5 +179.6 +183.5 +187.9 +179.6 +192.4 +182.6 +192.1 +255.4 +266.2 +191.5 +194.8 +179.7 +190.8 +182.8 +182.3 +186.7 +186.4 +178.1 +182.5 +175.0 +187.7 +199.4 +182.1 +180.5 +182.9 +175.9 +219.6 +207.0 +196.5 +190.7 +199.1 +185.4 +174.5 +180.5 +182.7 +181.8 +189.2 +181.0 +198.2 +191.9 +185.3 +182.9 +188.5 +178.7 +179.2 +188.7 +188.5 +178.2 +197.6 +178.3 +192.7 +181.9 +191.2 +181.7 +176.1 +196.5 +187.7 +190.5 +187.8 +182.9 +189.9 +192.3 +177.4 +184.7 +178.3 +185.8 +182.0 +180.1 +183.1 +182.0 +176.1 +185.2 +196.0 +185.5 +179.1 +198.1 +197.5 +182.0 +177.0 +178.3 +202.9 +177.0 +180.6 +181.6 +191.6 +179.6 +180.9 +183.7 +188.4 +182.6 +185.7 +191.5 +178.6 +188.4 +184.0 +183.8 +189.3 +185.2 +192.9 +195.4 +197.1 +190.4 +186.5 +196.0 +189.8 +191.9 +187.3 +185.7 +198.0 +175.8 +183.7 +176.0 +179.9 +183.1 +186.7 +177.9 +179.2 +181.7 +184.9 +181.6 +178.5 +176.5 +176.7 +178.4 +184.7 +181.3 +182.3 +182.8 +182.6 +190.2 +177.0 +187.9 +188.1 +186.4 +187.8 +181.3 +187.7 +191.8 +182.5 +182.0 +180.1 +185.8 +177.8 +192.5 +185.2 +179.7 +179.3 +191.0 +181.3 +192.9 +180.3 +194.5 +187.6 +184.3 +194.7 +182.7 +177.7 +181.2 +177.2 +184.0 +181.8 +188.5 +187.8 +184.7 +181.7 +184.6 +177.4 +193.0 +178.7 +176.5 +176.9 +180.9 +180.8 +187.8 +179.8 +175.2 +177.5 +180.5 +186.6 +177.0 +177.8 +177.8 +182.5 +180.0 +182.4 +188.6 +192.5 +177.5 +179.8 +178.8 +178.9 +182.0 +180.6 +184.5 +179.9 +175.4 +183.1 +177.8 +177.2 +191.7 +184.6 +183.1 +175.6 +200.6 +221.5 +177.2 +177.6 +184.0 +183.4 +199.2 +184.6 +186.1 +180.3 +188.1 +184.1 +185.9 +178.0 +183.7 +186.7 +186.1 +177.8 +183.5 +178.0 +177.0 +185.6 +187.0 +178.9 +178.9 +200.5 +180.2 +181.6 +187.8 +179.8 +182.0 +184.3 +176.3 +182.8 +184.3 +181.9 +185.3 +189.2 +177.3 +183.6 +186.7 +184.0 +243.9 +175.9 +184.3 +176.0 +179.6 +178.5 +182.3 +189.7 +179.6 +190.3 +188.8 +175.2 +179.8 +181.0 +175.6 +175.3 +187.5 +175.3 +186.8 +176.6 +177.3 +175.7 +178.5 +178.8 +178.5 +178.9 +183.7 +182.2 +182.3 +178.9 +182.0 +178.6 +184.2 +178.8 +176.7 +176.9 +176.2 +181.1 +177.9 +177.2 +178.6 +194.8 +185.4 +188.3 +178.9 +187.1 +184.3 +184.2 +190.3 +193.8 +185.0 +181.0 +181.4 +181.0 +191.8 +177.4 +178.6 +179.6 +180.2 +179.0 +187.4 +177.1 +182.7 +181.9 +177.9 +184.8 +195.1 +181.2 +182.1 +187.4 +186.8 +184.7 +181.9 +188.7 +191.8 +184.7 +185.5 +183.5 +180.8 +206.1 +179.1 +194.3 +178.0 +177.4 +181.0 +181.7 +190.6 +189.3 +176.3 +183.5 +178.9 +179.4 +187.3 +182.5 +181.7 +183.3 +188.9 +181.3 +195.6 +180.4 +194.0 +182.6 +176.6 +190.8 +176.3 +186.1 +185.1 +181.5 +179.2 +178.3 +179.6 +181.5 +181.0 +183.2 +182.6 +202.6 +183.7 +188.2 +200.6 +177.9 +184.2 +192.0 +180.9 +177.3 +177.2 +188.1 +184.2 +199.4 +185.3 +189.7 +199.8 +176.6 +189.2 +186.3 +182.8 +180.0 +190.8 +188.5 +194.6 +184.8 +202.7 +189.8 +183.2 +206.2 +175.3 +202.1 +193.5 +210.1 +200.5 +194.8 +190.0 +189.3 +182.5 +183.3 +187.1 +186.1 +208.1 +191.4 +207.5 +188.6 +176.7 +190.8 +189.1 +177.2 +189.3 +177.3 +196.2 +195.3 +188.0 +194.1 +181.3 +177.8 +186.2 +184.4 +182.0 +182.5 +187.1 +179.8 +177.4 +184.0 +180.5 +182.9 +176.4 +175.9 +176.8 +182.8 +208.0 +196.3 +183.4 +178.5 +189.7 +183.3 +182.5 +182.7 +182.5 +195.7 +183.8 +182.6 +190.0 +191.0 +191.7 +177.2 +184.1 +202.9 +189.8 +185.0 +183.3 +194.2 +182.8 +178.9 +184.9 +189.1 +192.8 +181.1 +190.5 +205.2 +179.1 +191.3 +186.8 +188.9 +178.8 +188.0 +184.1 +183.1 +182.1 +181.9 +191.6 +183.4 +189.9 +180.2 +186.6 +180.3 +182.7 +184.8 +178.4 +180.3 +193.7 +181.5 +186.6 +179.1 +184.3 +192.1 +189.5 +182.2 +296.4 +194.8 +179.0 +183.4 +194.3 +199.5 +182.7 +181.0 +181.8 +186.9 +186.4 +188.3 +179.2 +190.1 +184.9 +187.8 +186.3 +183.4 +183.1 +191.3 +188.5 +188.5 +187.9 +188.7 +175.3 +178.4 +197.5 +185.3 +201.3 +190.9 +210.1 +179.0 +176.3 +179.4 +195.0 +179.0 +176.4 +188.5 +180.5 +179.5 +179.4 +177.5 +185.2 +179.9 +178.3 +183.8 +193.9 +183.1 +187.7 +192.7 +181.3 +184.1 +182.5 +178.2 +184.0 +195.4 +179.7 +191.7 +183.7 +185.6 +188.4 +195.0 +184.8 +181.8 +186.2 +177.4 +189.8 +192.1 +192.9 +187.5 +191.5 +189.1 +195.7 +188.0 +192.7 +190.1 +190.1 +196.3 +192.4 +193.1 +178.9 +181.9 +179.2 +188.4 +179.2 +187.5 +179.7 +185.3 +177.2 +180.5 +182.2 +203.8 +186.1 +181.7 +180.8 +187.9 +177.4 +189.5 +189.3 +176.5 +179.2 +190.5 +180.0 +177.1 +183.7 +188.8 +180.6 +220.6 +190.9 +197.9 +182.8 +183.0 +177.9 +182.2 +182.4 +201.5 +181.1 +177.8 +189.6 +193.4 +180.3 +180.2 +175.3 +177.8 +178.3 +178.8 +190.7 +181.8 +185.1 +190.2 +179.1 +179.9 +179.8 +180.6 +181.6 +180.8 +184.6 +184.9 +181.7 +176.3 +182.2 +186.9 +227.1 +184.9 +184.5 +177.5 +180.2 +187.5 +186.1 +183.8 +177.4 +184.1 +188.1 +180.4 +197.4 +209.6 +198.3 +179.5 +183.9 +183.5 +181.8 +178.9 +195.5 +184.7 +191.3 +193.5 +196.8 +197.0 +184.2 +181.9 +187.5 +188.7 +177.7 +186.7 +191.6 +192.8 +194.8 +193.6 +194.7 +187.6 +197.2 +187.5 +176.0 +194.4 +199.9 +188.2 +184.5 +183.2 +186.0 +183.6 +210.5 +183.7 +190.4 +188.6 +179.8 +183.9 +210.2 +194.0 +190.8 +188.3 +186.2 +178.0 +178.3 +194.4 +184.5 +182.3 +179.1 +183.4 +182.9 +185.1 +180.6 +182.1 +189.4 +181.6 +180.5 +190.4 +182.1 +204.0 +192.7 +180.4 +190.7 +179.5 +179.2 +181.5 +186.1 +195.1 +189.7 +189.9 +185.9 +206.2 +187.5 +178.5 +206.2 +208.5 +187.4 +182.0 +192.9 +193.0 +196.5 +190.1 +179.7 +205.9 +187.7 +211.5 +177.5 +185.1 +205.3 +178.9 +179.6 +178.8 +185.9 +180.1 +179.0 +178.2 +181.9 +182.9 +191.5 +194.8 +184.9 +177.9 +186.0 +178.7 +175.2 +178.1 +183.9 +176.2 +196.3 +195.0 +214.4 +177.2 +175.2 +181.4 +191.4 +189.0 +179.6 +181.8 +177.8 +175.9 +176.1 +183.8 +182.1 +178.4 +182.1 +180.6 +177.4 +178.9 +178.7 +182.0 +176.5 +182.1 +189.2 +188.3 +184.6 +177.6 +184.6 +183.6 +182.6 +181.5 +198.4 +179.6 +179.3 +185.1 +189.8 +183.5 +180.9 +175.7 +182.6 +179.1 +181.3 +181.4 +189.8 +183.7 +185.8 +185.9 +178.1 +182.3 +196.3 +220.0 +199.4 +191.3 +186.7 +181.7 +180.7 +180.9 +176.2 +185.3 +180.3 +182.5 +177.5 +182.4 +184.8 +191.3 +185.5 +184.4 +193.8 +186.5 +178.9 +180.6 +182.7 +180.1 +184.8 +179.7 +187.8 +183.7 +190.9 +192.5 +205.5 +193.1 +180.7 +186.4 +179.3 +194.2 +187.8 +190.6 +178.8 +176.7 +181.2 +187.6 +191.3 +182.4 +204.9 +191.0 +193.8 +194.0 +198.4 +181.7 +186.5 +186.4 +182.5 +182.2 +179.0 +180.6 +180.0 +181.1 +178.6 +178.6 +183.3 +189.1 +179.9 +190.2 +187.3 +185.3 +185.0 +185.9 +189.3 +182.6 +183.5 +190.8 +183.4 +185.2 +197.1 +187.5 +182.2 +180.4 +181.3 +178.8 +182.5 +183.2 +174.8 +180.4 +200.9 +181.5 +185.5 +176.6 +179.0 +187.4 +173.8 +192.6 +179.3 +188.7 +198.9 +177.8 +185.5 +177.1 +213.1 +185.7 +189.7 +186.6 +189.2 +188.1 +184.0 +184.5 +178.7 +183.9 +186.3 +199.0 +188.2 +191.9 +181.6 +177.4 +183.8 +179.2 +182.7 +182.1 +178.2 +187.3 +189.0 +188.1 +190.8 +184.1 +188.0 +178.9 +195.8 +179.3 +204.6 +183.3 +178.8 +178.8 +176.9 +179.9 +186.0 +181.6 +199.5 +179.6 +189.0 +204.2 +189.7 +181.2 +184.5 +193.4 +183.7 +180.2 +186.2 +191.0 +195.1 +179.9 +182.6 +188.7 +184.5 +178.9 +194.1 +191.5 +179.9 +198.8 +183.4 +212.7 +179.0 +181.8 +176.5 +181.9 +179.7 +186.2 +187.0 +181.6 +184.9 +199.7 +185.4 +186.1 +179.3 +200.6 +187.7 +195.2 +185.5 +182.2 +189.4 +184.6 +177.9 +182.5 +182.9 +191.4 +192.5 +186.2 +178.4 +197.8 +175.7 +183.2 +187.5 +192.9 +175.8 +195.1 +185.7 +188.6 +191.6 +177.0 +181.8 +188.2 +202.4 +183.8 +184.5 +198.6 +186.4 +180.7 +188.6 +181.4 +178.9 +186.5 +185.5 +187.7 +187.7 +179.1 +184.2 +185.1 +178.0 +182.0 +197.0 +194.9 +193.6 +177.0 +186.6 +179.8 +186.1 +177.7 +182.1 +181.3 +178.0 +184.8 +208.3 +193.1 +187.2 +207.7 +188.2 +186.1 +178.1 +193.3 +182.1 +199.8 +182.7 +196.4 +197.9 +178.8 +191.4 +180.9 +180.5 +184.6 +177.2 +182.4 +183.7 +178.2 +187.1 +178.5 +181.3 +190.5 +179.0 +181.0 +178.0 +185.5 +179.1 +184.9 +184.7 +177.7 +176.7 +183.5 +196.3 +184.2 +190.0 +189.4 +186.0 +181.7 +186.0 +188.7 +187.5 +184.6 +176.3 +177.4 +185.9 +183.4 +179.4 +175.8 +186.1 +178.8 +179.0 +181.6 +175.2 +177.4 +176.8 +177.9 +197.6 +184.9 +176.0 +177.6 +178.4 +184.6 +178.1 +183.2 +180.2 +191.3 +180.0 +176.2 +180.3 +181.8 +187.4 +181.7 +177.1 +182.9 +190.6 +183.9 +177.9 +187.4 +174.9 +186.4 +192.0 +190.2 +198.4 +183.6 +206.3 +184.2 +181.0 +195.6 +277.2 +189.9 +187.0 +196.6 +180.6 +183.0 +208.8 +193.1 +188.9 +186.4 +179.9 +181.7 +185.2 +189.5 +188.0 +181.2 +182.5 +183.5 +190.3 +179.3 +182.3 +179.5 +184.2 +193.3 +178.5 +178.5 +182.3 +184.7 +181.9 +185.0 +181.6 +180.0 +202.6 +178.9 +176.4 +185.0 +190.3 +179.4 +182.9 +194.1 +185.2 +198.6 +177.6 +181.1 +179.8 +183.1 +187.7 +187.5 +185.9 +191.2 +183.1 +184.6 +193.0 +197.6 +183.3 +184.4 +181.6 +184.9 +178.0 +177.4 +181.0 +178.9 +180.4 +181.4 +188.0 +178.2 +181.2 +179.0 +188.1 +176.0 +176.4 +179.6 +179.1 +182.2 +185.6 +176.2 +180.0 +195.4 +177.4 +185.2 +177.5 +181.3 +187.8 +176.7 +200.8 +179.8 +183.8 +179.9 +190.4 +180.3 +178.5 +182.7 +180.3 +179.1 +178.8 +184.3 +176.7 +181.8 +179.9 +175.7 +181.6 +184.5 +183.3 +214.3 +175.7 +188.8 +180.1 +179.9 +182.8 +175.0 +177.4 +217.5 +183.7 +178.3 +184.0 +182.2 +175.4 +184.0 +181.2 +184.5 +174.6 +176.0 +180.1 +173.6 +190.4 +177.5 +181.3 +176.1 +181.5 +199.2 +176.2 +186.0 +178.6 +186.9 +187.1 +172.8 +175.5 +182.1 +175.9 +200.4 +193.1 +178.0 +177.1 +180.6 +182.2 +179.0 +175.8 +182.0 +188.0 +180.1 +207.1 +187.0 +180.6 +183.8 +192.9 +175.7 +193.6 +178.3 +182.2 +179.9 +177.2 +181.3 +177.0 +201.1 +176.2 +175.5 +183.1 +181.3 +176.0 +187.7 +185.7 +179.2 +183.4 +184.8 +176.3 +179.3 +175.2 +185.4 +181.2 +177.2 +179.9 +175.1 +175.7 +193.8 +179.7 +184.6 +181.2 +187.8 +184.9 +182.3 +184.9 +181.7 +186.0 +187.0 +178.5 +174.9 +180.7 +188.9 +181.4 +181.3 +176.2 +182.0 +183.4 +181.3 +181.3 +175.0 +179.7 +186.6 +183.7 +185.1 +180.8 +179.6 +180.6 +193.6 +187.6 +181.0 +176.3 +191.0 +177.5 +186.9 +173.8 +184.1 +178.1 +183.2 +180.2 +194.2 +175.8 +183.6 +175.4 +176.6 +183.7 +177.9 +176.4 +180.8 +179.9 +177.9 +183.0 +176.9 +181.3 +182.2 +182.3 +183.8 +181.1 +180.6 +189.9 +185.6 +184.5 +185.3 +175.3 +192.4 +195.5 +188.2 +180.3 +196.3 +184.1 +178.7 +179.7 +187.0 +177.1 +180.7 +177.5 +177.1 +180.8 +182.0 +177.0 +177.0 +193.1 +194.6 +190.0 +183.5 +180.5 +178.4 +177.4 +178.7 +184.6 +189.6 +188.1 +186.1 +184.2 +178.9 +176.7 +195.8 +178.1 +187.6 +175.4 +180.3 +185.3 +189.0 +177.2 +188.9 +179.0 +184.0 +179.1 +187.3 +199.7 +178.2 +179.1 +175.8 +179.8 +178.8 +196.3 +185.0 +196.3 +181.1 +185.5 +175.8 +189.2 +179.4 +192.0 +182.6 +177.9 +181.1 +179.6 +184.2 +194.6 +185.9 +181.4 +176.5 +178.3 +176.3 +179.1 +175.3 +180.5 +186.7 +177.5 +192.3 +187.7 +178.4 +189.4 +180.4 +180.5 +189.9 +183.8 +190.3 +195.5 +185.6 +177.2 +177.7 +178.7 +189.9 +183.8 +193.1 +185.2 +180.5 +180.5 +191.6 +175.0 +176.6 +178.6 +188.8 +180.7 +185.5 +181.2 +199.5 +193.2 +193.8 +185.8 +182.0 +178.5 +188.7 +190.1 +178.7 +181.5 +180.9 +186.6 +189.8 +194.4 +180.1 +193.0 +178.2 +183.2 +182.6 +177.8 +212.2 +177.5 +178.5 +181.9 +185.8 +177.2 +182.9 +176.7 +175.1 +180.4 +186.0 +179.1 +179.5 +177.2 +182.1 +177.8 +180.1 +180.1 +177.9 +183.6 +189.2 +193.2 +179.6 +176.9 +181.3 +178.4 +177.4 +189.2 +182.1 +195.2 +193.0 +184.5 +180.4 +184.1 +176.2 +180.1 +179.0 +174.8 +181.1 +190.0 +179.9 +192.2 +204.9 +179.2 +180.5 +174.7 +181.6 +181.5 +185.1 +176.7 +184.9 +191.9 +182.2 +182.7 +210.5 +186.1 +181.1 +179.3 +186.4 +176.0 +177.4 +180.9 +187.0 +192.2 +182.9 +182.2 +184.0 +180.3 +177.4 +178.7 +176.8 +176.4 +176.1 +182.0 +178.8 +175.2 +187.6 +184.9 +184.3 +188.7 +178.3 +190.9 +186.3 +175.2 +185.8 +175.6 +184.8 +181.1 +176.8 +179.0 +179.2 +196.5 +175.0 +182.6 +194.4 +173.7 +180.0 +178.3 +181.1 +179.5 +177.6 +185.1 +183.2 +188.6 +186.8 +182.5 +176.4 +175.1 +176.9 +182.4 +180.1 +181.7 +182.8 +184.1 +175.7 +178.7 +177.1 +178.3 +177.3 +176.7 +179.8 +176.8 +177.2 +200.5 +175.7 +181.1 +174.5 +179.3 +183.1 +178.4 +189.2 +186.0 +177.4 +178.3 +187.1 +181.0 +183.3 +191.4 +182.9 +182.6 +199.2 +181.4 +180.5 +180.4 +176.7 +184.4 +189.0 +188.1 +197.0 +181.2 +176.1 +181.0 +180.5 +176.5 +214.9 +178.3 +178.7 +181.4 +180.9 +178.0 +185.8 +182.5 +181.8 +177.4 +186.7 +183.2 +183.2 +183.1 +173.9 +181.1 +179.1 +180.3 +177.7 +181.5 +176.5 +177.1 +189.6 +191.5 +183.2 +180.0 +180.9 +183.3 +188.3 +178.4 +185.4 +176.1 +183.2 +181.1 +180.3 +176.4 +177.5 +186.8 +176.3 +338.9 +184.9 +177.0 +187.1 +175.8 +180.0 +182.5 +184.9 +175.2 +179.6 +176.9 +178.7 +177.5 +178.3 +178.9 +180.7 +182.6 +179.3 +177.0 +180.5 +179.2 +177.2 +188.0 +194.8 +183.6 +177.3 +179.1 +185.3 +177.5 +187.6 +180.9 +188.0 +174.8 +183.6 +183.0 +182.9 +178.1 +182.0 +185.9 +176.5 +182.1 +188.5 +179.9 +176.0 +184.3 +185.9 +179.2 +184.3 +181.3 +186.3 +186.7 +177.5 +188.9 +178.8 +211.3 +188.0 +178.5 +192.6 +176.4 +187.1 +189.5 +195.7 +188.5 +185.1 +182.5 +176.6 +182.5 +187.3 +180.5 +191.9 +178.3 +177.1 +188.3 +181.0 +178.0 +187.1 +175.1 +182.3 +177.4 +177.6 +181.2 +179.2 +183.8 +183.2 +173.3 +177.6 +178.6 +179.4 +180.5 +183.9 +176.3 +178.4 +178.9 +175.9 +179.2 +175.4 +183.5 +188.9 +176.5 +185.8 +179.7 +196.8 +185.9 +178.4 +176.4 +177.6 +176.0 +177.9 +181.7 +176.2 +180.6 +179.9 +186.0 +177.2 +178.9 +179.1 +186.6 +176.0 +194.6 +179.2 +181.5 +176.2 +177.2 +179.3 +181.3 +179.2 +181.7 +177.5 +186.6 +179.5 +177.4 +179.4 +177.9 +181.9 +181.3 +177.4 +176.0 +177.8 +185.2 +180.8 +181.3 +182.1 +178.2 +179.5 +185.6 +179.5 +182.5 +186.1 +188.7 +178.7 +186.8 +179.2 +197.7 +180.8 +181.4 +178.1 +207.1 +182.7 +185.5 +186.1 +180.1 +176.1 +177.6 +174.9 +176.1 +180.6 +184.5 +179.2 +186.1 +180.5 +179.5 +179.3 +182.2 +181.8 +184.6 +180.0 +177.1 +176.7 +177.6 +180.8 +176.5 +177.3 +176.8 +176.4 +188.7 +187.6 +178.5 +178.0 +179.3 +181.4 +183.2 +193.8 +178.3 +181.2 +180.4 +183.5 +179.8 +177.4 +183.2 +183.3 +176.6 +176.2 +216.9 +177.8 +177.0 +178.0 +175.3 +189.4 +182.6 +182.9 +183.6 +180.4 +177.2 +176.0 +177.9 +175.1 +182.1 +178.3 +178.5 +186.2 +177.7 +178.0 +183.3 +180.4 +197.6 +181.7 +179.9 +184.0 +194.8 +184.8 +189.4 +191.8 +176.6 +186.2 +180.3 +177.7 +197.0 +187.0 +188.1 +190.1 +176.8 +179.3 +185.4 +174.7 +189.6 +184.2 +178.0 +180.4 +183.4 +179.5 +177.7 +178.7 +186.9 +183.7 +177.2 +173.6 +184.7 +180.4 +183.1 +175.6 +179.6 +184.8 +185.6 +176.2 +177.7 +180.0 +174.7 +183.1 +181.6 +178.0 +178.8 +185.4 +181.2 +178.0 +188.7 +177.1 +189.3 +177.6 +180.6 +181.6 +175.9 +180.7 +179.1 +182.4 +186.7 +175.8 +185.1 +176.7 +180.3 +195.7 +191.3 +191.1 +181.3 +180.5 +179.3 +184.3 +177.1 +182.4 +179.4 +188.8 +174.5 +177.2 +178.4 +179.8 +183.3 +175.4 +184.1 +176.8 +182.4 +177.8 +178.7 +178.6 +189.6 +182.0 +191.2 +179.8 +179.3 +178.6 +183.0 +188.8 +205.3 +180.1 +190.6 +184.4 +179.9 +178.6 +174.7 +180.6 +193.3 +175.3 +175.5 +193.9 +180.4 +177.2 +175.6 +177.0 +182.3 +183.5 +181.9 +179.6 +182.8 +180.9 +180.6 +183.7 +185.0 +176.7 +190.5 +176.2 +179.0 +178.8 +180.0 +181.5 +174.3 +177.3 +179.2 +178.3 +184.7 +174.2 +177.3 +178.0 +178.9 +182.9 +189.8 +183.3 +183.0 +182.5 +176.3 +176.8 +177.5 +176.2 +183.1 +175.4 +175.0 +182.5 +174.9 +185.8 +181.4 +178.4 +183.8 +178.0 +265.0 +178.5 +185.0 +177.4 +179.2 +175.8 +183.0 +184.5 +195.3 +178.5 +178.2 +179.7 +175.0 +187.5 +182.7 +180.3 +181.0 +177.5 +181.5 +179.9 +179.0 +180.0 +182.6 +178.5 +179.6 +181.4 +188.0 +188.2 +179.1 +180.8 +178.5 +181.3 +179.9 +182.0 +181.8 +181.3 +186.6 +197.8 +205.8 +188.2 +194.9 +182.2 +184.6 +188.9 +189.4 +183.4 +179.2 +182.6 +184.6 +183.6 +184.3 +182.5 +181.1 +181.6 +178.9 +179.7 +176.3 +179.4 +180.2 +178.4 +179.6 +190.1 +178.5 +174.4 +177.3 +176.1 +175.3 +175.0 +178.9 +175.1 +181.3 +175.0 +176.0 +192.2 +189.2 +182.4 +179.2 +173.4 +177.9 +178.4 +175.5 +175.9 +199.0 +196.6 +181.7 +181.2 +177.6 +174.7 +174.3 +181.3 +178.9 +203.2 +176.3 +175.8 +192.3 +180.8 +184.8 +179.9 +182.4 +180.0 +174.3 +187.2 +181.4 +176.0 +174.4 +182.4 +186.8 +191.1 +177.1 +178.2 +176.8 +182.6 +184.6 +181.5 +185.4 +178.9 +176.6 +179.6 +175.1 +179.9 +176.9 +176.7 +186.2 +192.9 +183.5 +182.4 +175.5 +176.9 +180.6 +185.7 +174.2 +174.2 +178.9 +178.8 +179.2 +194.9 +177.5 +174.0 +179.0 +180.7 +174.0 +180.0 +178.3 +179.8 +180.0 +175.6 +174.9 +180.9 +177.3 +212.6 +196.0 +183.1 +186.5 +178.4 +185.9 +185.5 +176.8 +178.7 +174.0 +176.6 +179.0 +182.3 +176.6 +185.0 +175.7 +178.5 +176.4 +176.3 +186.3 +222.5 +185.7 +177.1 +183.6 +176.9 +184.0 +175.7 +174.4 +184.2 +269.8 +182.5 +174.6 +178.5 +176.1 +178.9 +177.9 +181.9 +176.8 +174.2 +181.6 +191.2 +179.1 +175.3 +182.2 +180.1 +175.2 +182.3 +175.6 +177.1 +175.1 +174.7 +188.2 +176.9 +183.6 +175.9 +175.5 +174.7 +182.4 +181.2 +179.5 +190.3 +184.8 +237.1 +178.3 +178.7 +184.1 +174.5 +178.3 +178.6 +181.8 +182.2 +190.2 +179.9 +181.0 +180.3 +177.2 +179.2 +179.2 +178.2 +183.0 +177.7 +180.1 +182.6 +196.6 +178.9 +177.0 +176.1 +178.3 +182.9 +176.5 +209.4 +181.1 +199.5 +186.3 +177.6 +182.7 +185.4 +180.2 +186.2 +187.4 +176.4 +182.8 +221.0 +179.0 +178.9 +178.4 +186.8 +174.1 +174.9 +176.8 +190.0 +178.9 +182.4 +178.7 +177.6 +179.4 +173.6 +178.1 +179.8 +177.8 +177.5 +187.5 +209.5 +178.0 +177.2 +179.3 +179.8 +179.8 +174.4 +177.1 +180.2 +182.5 +181.1 +184.7 +179.6 +193.0 +182.7 +181.6 +177.7 +178.2 +181.6 +186.6 +177.2 +178.1 +189.3 +174.3 +180.2 +186.2 +189.8 +185.9 +176.8 +178.8 +175.1 +175.5 +179.1 +180.9 +186.1 +187.0 +186.2 +187.6 +187.5 +197.8 +180.4 +196.7 +176.5 +177.6 +176.2 +180.8 +175.9 +182.8 +178.8 +184.6 +179.5 +175.6 +187.5 +175.7 +201.6 +188.2 +183.4 +184.2 +178.7 +177.0 +174.9 +181.9 +177.6 +177.7 +179.6 +176.0 +178.3 +181.5 +177.5 +184.7 +183.9 +180.9 +178.9 +177.8 +176.6 +188.4 +191.0 +189.6 +178.1 +177.9 +186.1 +178.7 +184.3 +176.5 +179.6 +174.1 +184.4 +176.8 +182.3 +179.5 +188.8 +180.2 +176.1 +198.4 +178.4 +188.6 +191.0 +180.4 +179.5 +176.0 +188.1 +189.6 +192.6 +177.0 +189.1 +177.5 +178.8 +186.8 +178.6 +180.5 +184.0 +178.7 +179.0 +176.2 +176.7 +185.2 +192.3 +178.0 +175.7 +181.0 +183.0 +175.7 +174.6 +176.7 +177.8 +179.0 +177.4 +176.7 +182.5 +194.0 +181.4 +178.7 +176.2 +176.7 +204.2 +178.3 +190.6 +188.5 +177.5 +180.6 +178.1 +175.2 +276.8 +353.6 +297.8 +235.1 +211.7 +213.4 +213.5 +191.5 +178.8 +186.2 +175.4 +178.2 +184.5 +179.9 +182.0 +179.3 +178.6 +192.5 +177.7 +179.2 +194.9 +183.1 +178.6 +179.9 +192.5 +184.1 +186.6 +181.2 +175.4 +197.2 +179.6 +184.6 +197.6 +180.6 +189.6 +175.3 +185.6 +174.5 +178.9 +174.2 +179.6 +173.9 +182.5 +185.6 +177.4 +191.4 +183.8 +177.0 +181.2 +176.3 +177.3 +173.7 +177.5 +178.9 +178.2 +177.3 +177.7 +187.8 +181.6 +178.4 +176.4 +180.8 +178.5 +189.5 +186.0 +188.4 +182.2 +184.0 +176.5 +179.5 +185.3 +173.8 +190.0 +180.2 +189.1 +184.9 +175.8 +182.2 +177.9 +176.4 +184.1 +179.5 +181.8 +175.7 +179.7 +178.7 +185.9 +180.5 +180.9 +175.5 +176.1 +174.4 +175.1 +195.2 +174.9 +190.5 +183.8 +188.7 +182.5 +179.5 +177.0 +174.9 +185.6 +180.8 +192.8 +185.2 +184.0 +177.7 +191.7 +185.3 +185.4 +186.6 +182.9 +181.1 +191.2 +183.0 +176.6 +187.7 +181.9 +179.5 +178.7 +176.9 +178.5 +182.1 +175.4 +175.9 +183.8 +180.6 +191.1 +177.0 +184.6 +188.7 +176.0 +181.4 +188.2 +181.1 +180.0 +178.9 +182.1 +179.6 +179.5 +174.5 +177.6 +179.9 +175.3 +185.2 +175.4 +185.1 +184.9 +182.0 +178.4 +177.0 +182.3 +193.8 +181.6 +197.4 +180.4 +180.9 +182.0 +181.0 +185.8 +178.5 +180.5 +182.3 +175.7 +176.5 +182.8 +176.8 +178.3 +179.5 +181.8 +175.1 +180.2 +179.6 +176.7 +174.6 +180.5 +179.7 +178.9 +177.1 +184.2 +178.4 +175.0 +183.7 +178.3 +179.1 +175.3 +187.5 +189.2 +176.7 +205.6 +179.6 +179.6 +179.1 +182.1 +178.6 +182.2 +181.6 +181.9 +188.8 +184.7 +185.3 +182.5 +174.2 +176.5 +190.1 +180.6 +182.7 +182.2 +179.5 +179.0 +184.4 +175.4 +178.2 +174.6 +179.0 +188.4 +175.9 +173.8 +180.2 +187.3 +186.3 +176.3 +174.9 +178.6 +178.2 +177.0 +180.0 +177.2 +173.5 +195.4 +180.5 +181.6 +177.2 +176.7 +175.3 +174.8 +179.7 +175.0 +176.4 +181.8 +183.0 +180.0 +177.0 +185.8 +183.2 +181.0 +176.8 +177.9 +186.1 +182.5 +174.4 +177.1 +176.7 +176.3 +180.3 +178.9 +178.3 +175.8 +179.9 +190.6 +182.8 +183.4 +177.9 +177.7 +180.0 +202.0 +184.5 +179.5 +181.5 +174.8 +194.2 +185.8 +177.0 +183.9 +177.6 +202.4 +179.9 +175.4 +174.8 +176.7 +177.9 +176.6 +176.5 +181.2 +181.3 +177.4 +179.3 +177.8 +176.2 +197.2 +180.9 +178.2 +184.6 +184.7 +191.0 +182.9 +179.9 +180.3 +177.4 +182.1 +181.9 +182.2 +174.9 +193.4 +175.1 +203.2 +176.0 +180.3 +180.0 +186.3 +174.8 +177.9 +196.1 +177.6 +183.5 +176.2 +187.6 +178.5 +180.6 +178.2 +180.7 +177.6 +176.6 +173.5 +178.7 +175.0 +179.0 +175.5 +174.2 +178.2 +176.6 +176.3 +179.4 +178.6 +175.2 +175.9 +175.0 +179.5 +176.9 +184.0 +184.6 +179.9 +175.3 +176.2 +179.1 +182.8 +180.5 +173.4 +176.0 +198.9 +177.0 +189.7 +183.6 +179.5 +176.5 +175.5 +175.5 +176.4 +182.9 +178.7 +177.5 +180.6 +175.0 +178.9 +177.7 +178.0 +178.6 +176.0 +177.6 +180.8 +179.6 +184.3 +190.2 +177.7 +178.1 +175.0 +178.6 +179.6 +185.1 +193.7 +179.8 +179.3 +178.6 +180.4 +174.9 +177.8 +187.4 +183.7 +181.6 +177.7 +185.4 +180.6 +178.5 +182.8 +179.9 +177.8 +178.0 +184.3 +191.0 +181.1 +197.9 +181.1 +197.8 +175.6 +176.9 +177.9 +187.4 +180.8 +180.6 +174.9 +180.8 +175.7 +176.4 +179.9 +178.3 +178.3 +178.4 +196.4 +177.3 +184.3 +177.3 +176.5 +181.0 +175.0 +179.2 +178.1 +183.3 +177.0 +175.2 +177.2 +173.5 +176.5 +177.0 +178.6 +181.3 +189.2 +186.4 +177.4 +181.7 +176.2 +194.1 +177.9 +186.6 +182.6 +176.6 +175.4 +250.3 +178.7 +183.0 +182.7 +183.1 +183.6 +178.8 +178.3 +179.1 +177.7 +177.9 +186.2 +195.4 +179.2 +183.3 +183.8 +186.3 +182.7 +178.9 +196.0 +177.1 +184.5 +188.3 +188.4 +181.5 +190.1 +179.0 +177.2 +189.1 +184.1 +184.2 +178.7 +187.4 +182.5 +189.8 +181.1 +186.0 +178.8 +178.0 +176.9 +180.6 +174.3 +180.4 +176.7 +175.5 +193.7 +189.7 +196.6 +178.9 +186.3 +182.5 +185.7 +175.7 +176.0 +194.1 +181.0 +178.6 +178.4 +186.8 +175.6 +185.4 +180.7 +184.7 +188.1 +180.4 +183.0 +178.4 +185.1 +181.8 +175.8 +178.9 +177.9 +177.9 +176.5 +290.3 +181.8 +180.8 +183.9 +190.8 +179.0 +183.7 +181.9 +177.5 +178.4 +179.4 +179.9 +174.2 +182.7 +182.9 +178.8 +179.2 +183.2 +181.8 +175.6 +179.0 +175.7 +178.1 +179.2 +183.8 +187.8 +187.3 +175.7 +175.0 +185.5 +175.3 +181.9 +176.7 +184.6 +185.8 +181.1 +186.6 +178.8 +183.4 +175.1 +178.4 +179.6 +176.7 +177.1 +176.5 +181.7 +199.1 +194.8 +176.5 +182.2 +189.9 +177.6 +179.3 +184.9 +178.1 +176.4 +184.6 +174.6 +188.6 +183.7 +178.1 +177.7 +186.1 +176.3 +180.9 +180.3 +181.0 +180.0 +180.0 +180.4 +174.8 +179.5 +176.5 +179.9 +175.6 +184.0 +176.4 +191.6 +178.4 +184.8 +186.7 +197.0 diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/distribution/Makefile iproute2-2.6.16-060323/netem/distribution/Makefile --- iproute2-2.6.16-060323_orig/netem/distribution/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/distribution/Makefile 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,25 @@ +DISTGEN = maketable normal pareto paretonormal +DISTDATA = normal.dist pareto.dist paretonormal.dist experimental.dist + +HOSTCC ?= $(CC) +LDLIBS += -lm + +all: $(DISTGEN) $(DISTDATA) + +$(DISTGEN): + $(HOSTCC) $(CCOPTS) -I../../include -o $@ $@.c -lm + +%.dist: % + ./$* > $@ + +experimental.dist: maketable experimental.dat + ./maketable experimental.dat > experimental.dist + +install: all + mkdir -p $(DESTDIR)/usr/lib/tc + for i in $(DISTDATA); \ + do install -m 755 $$i $(DESTDIR)/usr/lib/tc; \ + done + +clean: + rm -f $(DISTDATA) $(DISTGEN) diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/distribution/maketable.c iproute2-2.6.16-060323/netem/distribution/maketable.c --- iproute2-2.6.16-060323_orig/netem/distribution/maketable.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/distribution/maketable.c 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,232 @@ +/* + * Experimental data distribution table generator + * Taken from the uncopyrighted NISTnet code. + * + * Rread in a series of "random" data values, either + * experimentally or generated from some probability distribution. + * From this, create the inverse distribution table used to approximate + * the distribution. + */ +#include +#include +#include +#include +#include +#include +#include + + +double * +readdoubles(FILE *fp, int *number) +{ + struct stat info; + double *x; + int limit; + int n=0, i; + + fstat(fileno(fp), &info); + if (info.st_size > 0) { + limit = 2*info.st_size/sizeof(double); /* @@ approximate */ + } else { + limit = 10000; + } + + x = calloc(limit, sizeof(double)); + if (!x) { + perror("double alloc"); + exit(3); + } + + for (i=0; i= DISTTABLESIZE) index = DISTTABLESIZE-1; + ++table[index]; + if (index > last) + last = index +1; + if (index < first) + first = index; + } + return table; +} + +/* replace an array by its cumulative distribution */ +static void +cumulativedist(int *table, int limit, int *total) +{ + int accum=0; + + while (--limit >= 0) { + accum += *table; + *table++ = accum; + } + *total = accum; +} + +static short * +inverttable(int *table, int inversesize, int tablesize, int cumulative) +{ + int i, inverseindex, inversevalue; + short *inverse; + double findex, fvalue; + + inverse = (short *)malloc(inversesize*sizeof(short)); + for (i=0; i < inversesize; ++i) { + inverse[i] = MINSHORT; + } + for (i=0; i < tablesize; ++i) { + findex = ((double)i/(double)DISTTABLEGRANULARITY) - DISTTABLEDOMAIN; + fvalue = (double)table[i]/(double)cumulative; + inverseindex = (int)rint(fvalue*inversesize); + inversevalue = (int)rint(findex*TABLEFACTOR); + if (inversevalue <= MINSHORT) inversevalue = MINSHORT+1; + if (inversevalue > MAXSHORT) inversevalue = MAXSHORT; + inverse[inverseindex] = inversevalue; + } + return inverse; + +} + +/* Run simple linear interpolation over the table to fill in missing entries */ +static void +interpolatetable(short *table, int limit) +{ + int i, j, last, lasti = -1; + + last = MINSHORT; + for (i=0; i < limit; ++i) { + if (table[i] == MINSHORT) { + for (j=i; j < limit; ++j) + if (table[j] != MINSHORT) + break; + if (j < limit) { + table[i] = last + (i-lasti)*(table[j]-last)/(j-lasti); + } else { + table[i] = last + (i-lasti)*(MAXSHORT-last)/(limit-lasti); + } + } else { + last = table[i]; + lasti = i; + } + } +} + +static void +printtable(const short *table, int limit) +{ + int i; + + printf("# This is the distribution table for the experimental distribution.\n"); + + for (i=0 ; i < limit; ++i) { + printf("%d%c", table[i], + (i % 8) == 7 ? '\n' : ' '); + } +} + +int +main(int argc, char **argv) +{ + FILE *fp; + double *x; + double mu, sigma, rho; + int limit; + int *table; + short *inverse; + int total; + + if (argc > 1) { + if (!(fp = fopen(argv[1], "r"))) { + perror(argv[1]); + exit(1); + } + } else { + fp = stdin; + } + x = readdoubles(fp, &limit); + if (limit <= 0) { + fprintf(stderr, "Nothing much read!\n"); + exit(2); + } + arraystats(x, limit, &mu, &sigma, &rho); +#ifdef DEBUG + fprintf(stderr, "%d values, mu %10.4f, sigma %10.4f, rho %10.4f\n", + limit, mu, sigma, rho); +#endif + + table = makedist(x, limit, mu, sigma); + free((void *) x); + cumulativedist(table, DISTTABLESIZE, &total); + inverse = inverttable(table, TABLESIZE, DISTTABLESIZE, total); + interpolatetable(inverse, TABLESIZE); + printtable(inverse, TABLESIZE); + return 0; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/distribution/normal.c iproute2-2.6.16-060323/netem/distribution/normal.c --- iproute2-2.6.16-060323_orig/netem/distribution/normal.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/distribution/normal.c 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,51 @@ +/* + * Normal distribution table generator + * Taken from the uncopyrighted NISTnet code. + */ +#include +#include +#include +#include +#include + +#include +#include + +#define TABLESIZE 16384 +#define TABLEFACTOR NETEM_DIST_SCALE + +static double +normal(double x, double mu, double sigma) +{ + return .5 + .5*erf((x-mu)/(sqrt(2.0)*sigma)); +} + + +int +main(int argc, char **argv) +{ + int i, n; + double x; + double table[TABLESIZE+1]; + + for (x = -10.0; x < 10.05; x += .00005) { + i = rint(TABLESIZE * normal(x, 0.0, 1.0)); + table[i] = x; + } + + + printf("# This is the distribution table for the normal distribution.\n"); + for (i = n = 0; i < TABLESIZE; i += 4) { + int value = (int) rint(table[i]*TABLEFACTOR); + if (value < SHRT_MIN) value = SHRT_MIN; + if (value > SHRT_MAX) value = SHRT_MAX; + + printf(" %d", value); + if (++n == 8) { + putchar('\n'); + n = 0; + } + } + + return 0; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/distribution/pareto.c iproute2-2.6.16-060323/netem/distribution/pareto.c --- iproute2-2.6.16-060323_orig/netem/distribution/pareto.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/distribution/pareto.c 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,41 @@ +/* + * Pareto distribution table generator + * Taken from the uncopyrighted NISTnet code. + */ +#include +#include +#include +#include + +#include +#include + +static const double a=3.0; +#define TABLESIZE 16384 +#define TABLEFACTOR NETEM_DIST_SCALE + +int +main(int argc, char **argv) +{ + int i, n; + double dvalue; + + printf("# This is the distribution table for the pareto distribution.\n"); + + for (i = 65536, n = 0; i > 0; i -= 16) { + dvalue = (double)i/(double)65536; + dvalue = 1.0/pow(dvalue, 1.0/a); + dvalue -= 1.5; + dvalue *= (4.0/3.0)*(double)TABLEFACTOR; + if (dvalue > 32767) + dvalue = 32767; + + printf(" %d", (int)rint(dvalue)); + if (++n == 8) { + putchar('\n'); + n = 0; + } + } + + return 0; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/distribution/paretonormal.c iproute2-2.6.16-060323/netem/distribution/paretonormal.c --- iproute2-2.6.16-060323_orig/netem/distribution/paretonormal.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/distribution/paretonormal.c 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,82 @@ +/* + * Paretoormal distribution table generator + * + * This distribution is simply .25*normal + .75*pareto; a combination + * which seems to match experimentally observed distributions reasonably + * well, but is computationally easy to handle. + * The entries represent a scaled inverse of the cumulative distribution + * function. + * + * Taken from the uncopyrighted NISTnet code. + */ +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define TABLESIZE 16384 +#define TABLEFACTOR NETEM_DIST_SCALE + +static double +normal(double x, double mu, double sigma) +{ + return .5 + .5*erf((x-mu)/(sqrt(2.0)*sigma)); +} + +static const double a=3.0; + +static int +paretovalue(int i) +{ + double dvalue; + + i = 65536-4*i; + dvalue = (double)i/(double)65536; + dvalue = 1.0/pow(dvalue, 1.0/a); + dvalue -= 1.5; + dvalue *= (4.0/3.0)*(double)TABLEFACTOR; + if (dvalue > 32767) + dvalue = 32767; + return (int)rint(dvalue); +} + +int +main(int argc, char **argv) +{ + int i,n; + double x; + double table[TABLESIZE+1]; + + for (x = -10.0; x < 10.05; x += .00005) { + i = rint(TABLESIZE*normal(x, 0.0, 1.0)); + table[i] = x; + } + printf( +"# This is the distribution table for the paretonormal distribution.\n" + ); + + for (i = n = 0; i < TABLESIZE; i += 4) { + int normvalue, parvalue, value; + + normvalue = (int) rint(table[i]*TABLEFACTOR); + parvalue = paretovalue(i); + + value = (normvalue+3*parvalue)/4; + if (value < SHRT_MIN) value = SHRT_MIN; + if (value > SHRT_MAX) value = SHRT_MAX; + + printf(" %d", value); + if (++n == 8) { + putchar('\n'); + n = 0; + } + } + + return 0; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/distribution/README.distribution iproute2-2.6.16-060323/netem/distribution/README.distribution --- iproute2-2.6.16-060323_orig/netem/distribution/README.distribution 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/distribution/README.distribution 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,97 @@ +Notes about distribution tables from Nistnet +------------------------------------------------------------------------------- +I. About the distribution tables + +The table used for "synthesizing" the distribution is essentially a scaled, +translated, inverse to the cumulative distribution function. + +Here's how to think about it: Let F() be the cumulative distribution +function for a probability distribution X. We'll assume we've scaled +things so that X has mean 0 and standard deviation 1, though that's not +so important here. Then: + + F(x) = P(X <= x) = \int_{-inf}^x f + +where f is the probability density function. + +F is monotonically increasing, so has an inverse function G, with range +0 to 1. Here, G(t) = the x such that P(X <= x) = t. (In general, G may +have singularities if X has point masses, i.e., points x such that +P(X = x) > 0.) + +Now we create a tabular representation of G as follows: Choose some table +size N, and for the ith entry, put in G(i/N). Let's call this table T. + +The claim now is, I can create a (discrete) random variable Y whose +distribution has the same approximate "shape" as X, simply by letting +Y = T(U), where U is a discrete uniform random variable with range 1 to N. +To see this, it's enough to show that Y's cumulative distribution function, +(let's call it H), is a discrete approximation to F. But + + H(x) = P(Y <= x) + = (# of entries in T <= x) / N -- as Y chosen uniformly from T + = i/N, where i is the largest integer such that G(i/N) <= x + = i/N, where i is the largest integer such that i/N <= F(x) + -- since G and F are inverse functions (and F is + increasing) + = floor(N*F(x))/N + +as desired. + +II. How to create distribution tables (in theory) + +How can we create this table in practice? In some cases, F may have a +simple expression which allows evaluating its inverse directly. The +pareto distribution is one example of this. In other cases, and +especially for matching an experimentally observed distribution, it's +easiest simply to create a table for F and "invert" it. Here, we give +a concrete example, namely how the new "experimental" distribution was +created. + +1. Collect enough data points to characterize the distribution. Here, I +collected 25,000 "ping" roundtrip times to a "distant" point (time.nist.gov). +That's far more data than is really necessary, but it was fairly painless to +collect it, so... + +2. Normalize the data so that it has mean 0 and standard deviation 1. + +3. Determine the cumulative distribution. The code I wrote creates a table +covering the range -10 to +10, with granularity .00005. Obviously, this +is absurdly over-precise, but since it's a one-time only computation, I +figured it hardly mattered. + +4. Invert the table: for each table entry F(x) = y, make the y*TABLESIZE +(here, 4096) entry be x*TABLEFACTOR (here, 8192). This creates a table +for the ("normalized") inverse of size TABLESIZE, covering its domain 0 +to 1 with granularity 1/TABLESIZE. Note that even with the granularity +used in creating the table for F, it's possible not all the entries in +the table for G will be filled in. So, make a pass through the +inverse's table, filling in any missing entries by linear interpolation. + +III. How to create distribution tables (in practice) + +If you want to do all this yourself, I've provided several tools to help: + +1. maketable does the steps 2-4 above, and then generates the appropriate +header file. So if you have your own time distribution, you can generate +the header simply by: + + maketable < time.values > header.h + +2. As explained in the other README file, the somewhat sleazy way I have +of generating correlated values needs correction. You can generate your +own correction tables by compiling makesigtable and makemutable with +your header file. Check the Makefile to see how this is done. + +3. Warning: maketable, makesigtable and especially makemutable do +enormous amounts of floating point arithmetic. Don't try running +these on an old 486. (NIST Net itself will run fine on such a +system, since in operation, it just needs to do a few simple integral +calculations. But getting there takes some work.) + +4. The tables produced are all normalized for mean 0 and standard +deviation 1. How do you know what values to use for real? Here, I've +provided a simple "stats" utility. Give it a series of floating point +values, and it will return their mean (mu), standard deviation (sigma), +and correlation coefficient (rho). You can then plug these values +directly into NIST Net. diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/Makefile iproute2-2.6.16-060323/netem/Makefile --- iproute2-2.6.16-060323_orig/netem/Makefile 2006-03-14 20:43:59.000000000 +0100 +++ iproute2-2.6.16-060323/netem/Makefile 2006-09-21 12:57:25.000000000 +0200 @@ -1,25 +1,16 @@ -DISTGEN = maketable normal pareto paretonormal -DISTDATA = normal.dist pareto.dist paretonormal.dist experimental.dist - -HOSTCC ?= $(CC) -LDLIBS += -lm - -all: $(DISTGEN) $(DISTDATA) - -$(DISTGEN): - $(HOSTCC) $(CCOPTS) -I../include -o $@ $@.c -lm - -%.dist: % - ./$* > $@ - -experimental.dist: maketable experimental.dat - ./maketable experimental.dat > experimental.dist - -install: all - mkdir -p $(DESTDIR)/usr/lib/tc - for i in $(DISTDATA); \ - do install -m 755 $$i $(DESTDIR)/usr/lib/tc; \ +SUBDIRS =trace distribution +subdirs: + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir; \ done -clean: - rm -f $(DISTDATA) $(DISTGEN) +install: + for dir in $(SUBDIRS); do \ + make install -C $$dir; \ + done + +clean: + for dir in $(SUBDIRS); do \ + make clean -C $$dir; \ + done + diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/trace/bin2txt.c iproute2-2.6.16-060323/netem/trace/bin2txt.c --- iproute2-2.6.16-060323_orig/netem/trace/bin2txt.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/trace/bin2txt.c 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,83 @@ +/* bin2txt.c + * tool to generate the values for the tracefile +*/ + +#include +#include +#include + +void Convert(int, char *); +void usage(void); + +int main(int argc, char *argv[]) +{ + + char *out[4]; + int fd, variout = 0, head, delay; + char string[33]; + + int mask_head = -536870912; /* 11100000000000000000000000000000 */ + int mask_delay = 536870911; /* 00011111111111111111111111111111 */ + int flag = 1; + char mychar[] = "u"; + char userchar[2]; + if ((argc < 2) || (argc > 3)) { + usage(); + return 0; + } + + if (argc == 3) { + strncpy(userchar, argv[2], 2); + if (flag = strncmp(userchar, mychar, 1)) { + usage(); + return 0; + } + } + + if ((fd = open(argv[1], O_RDONLY, 0)) < 0) { + fprintf(stderr, "Cannot open input file\n"); + return 0; + } + + while (read(fd, &out, 4)) { + variout = (int)*out; + if (!flag) { + delay = variout & mask_delay; + head = (variout & mask_head) >> 29; + Convert(variout, string); + printf("%s head: %2d delay: %8d value: %10d\n", + string, head, delay, variout); + } else { + printf("%d\n", variout); + } + } + + close(fd); + + return 0; +} + +void Convert(int bin, char *str) +{ + unsigned int mask; /*used to check each individual bit, unsigned + *to alleviate sign extension problems + */ + mask = 0x80000000; /* Set only the high-end bit */ + while (mask) { /* Loop until MASK is empty */ + if (bin & mask) /* test the masked bit */ + *str = '1'; + else + *str = '0'; + str++; + mask >>= 1; + } + *str = 0; +} + +void usage() +{ + printf("Usage: [u]\n"); + printf(" = name of binary file\n " + "[u] = output easy understandable (optional)\n"); + return; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/trace/flowseed.c iproute2-2.6.16-060323/netem/trace/flowseed.c --- iproute2-2.6.16-060323_orig/netem/trace/flowseed.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/trace/flowseed.c 2006-09-21 12:58:03.000000000 +0200 @@ -0,0 +1,121 @@ +/* flowseed.c flowseedprocess to deliver values for packet delay, + * duplication, loss and curruption form userspace to netem + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + * + * Authors: Ariane Keller ETH Zurich + * Rainer Baumann ETH Zurich + * Ulrich Fiedler ETH Zurich + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define DATA_PACKAGE 4000 +#define DATA_PACKAGE_ID DATA_PACKAGE + sizeof(unsigned int) + sizeof(int) + +/* maximal amount of parallel flows */ +#define MAX_FLOWS 4 + +int main(int argc, char *argv[]) +{ + + if (argc < 3) { + printf("usage: "); + return 0; + } + char *sendpkg; + sendpkg = malloc(DATA_PACKAGE_ID); + + if (sendpkg == NULL) { + printf("out of memory\n"); + return 0; + } + + int fid = getpid(); + char dirname[20]; + char path[30]; + int fdflowseed, fdtcn, dirsux; + unsigned int loop; + int infinity = 0; + int moreData = 1, r = 0, rold = 0; + loop = strtoul(argv[2], NULL, 10); + + snprintf(dirname, sizeof(path), "/config/tcn/%d", fid); + dirsux = mkdir(dirname, S_IRWXO); + snprintf(path, sizeof(path), "%s/delayvalue", dirname); + + if ((fdtcn = open(path, O_WRONLY, 0)) < 0) { + perror("fdtcn: "); + return 0; + } + + if ((fdflowseed = open(argv[1], O_RDONLY, 0)) < 0) { + perror("cannot open tracefile"); + return 0; + } + + if (loop == 0) + infinity = 1; + + while (loop > 0 || infinity) { + loop--; + + int w; + /*read action values from tracefile */ + while ((r = + read(fdflowseed, sendpkg + rold, + DATA_PACKAGE - rold)) >= 0) { + if (r + rold < DATA_PACKAGE) { + /* Tail of input file reached, + set rest at start from next iteration */ + rold = r; + if (lseek(fdflowseed, 0L, SEEK_SET) < 0) + perror("lseek reset"); + break; + } + r = 0; + rold = 0; + memcpy(sendpkg + DATA_PACKAGE, &fid, sizeof(int)); + memcpy(sendpkg + DATA_PACKAGE + sizeof(int), &moreData, + sizeof(int)); + + w = write(fdtcn, sendpkg, DATA_PACKAGE_ID); + if (w < 0) { + close(fdflowseed); + close(fdtcn); + rmdir(dirname); + free(sendpkg); + return 0; + } + + } + } + /*last packet: say kernel that no more data is available + enables to distinguish between bufferunderrun and no more data available */ + moreData = 0; + memcpy(sendpkg + DATA_PACKAGE, &fid, sizeof(int)); + memcpy(sendpkg + DATA_PACKAGE + sizeof(int), &moreData, sizeof(int)); + int w = write(fdtcn, sendpkg, DATA_PACKAGE_ID); + if (w < 0) { + perror("Failure writing last msg to kernel"); + } + + printf("Tail of input file reached. Exit.\n"); + + close(fdflowseed); + close(fdtcn); + rmdir(dirname); + free(sendpkg); + + return 0; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/trace/headgen.c iproute2-2.6.16-060323/netem/trace/headgen.c --- iproute2-2.6.16-060323_orig/netem/trace/headgen.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/trace/headgen.c 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,53 @@ +/* headgen.c + * tool to generate the values for the tracefile +*/ + +#include +#include +#include +#include +#include +#include + +void Convert(int, char *); + +int main(int argc, char *argv[]) +{ + + int variout = 0, head, delay; + if (argc < 3) { + printf("Usage: headgen \n"); + printf("head = 0 -> delay only\n" + " 1 -> drop packet\n" + " 2 -> duplicate packet\n" + " 3 -> corrupt packet\n" + "delay = delay value in microseconds\n"); + return 0; + } + + head = atoi(argv[1]); + head = head << 29; + delay = atoi(argv[2]); + variout = head | delay; + + printf("%d\n", variout); + + return 0; +} + +void Convert(int bin, char *str) +{ + unsigned int mask; /* used to check each individual bit, unsigned + * to alleviate sign extension problems + */ + mask = 0x80000000; + while (mask) { + if (bin & mask) + *str = '1'; + else + *str = '0'; + str++; + mask >>= 1; + } + *str = 0; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/trace/Makefile iproute2-2.6.16-060323/netem/trace/Makefile --- iproute2-2.6.16-060323_orig/netem/trace/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/trace/Makefile 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,28 @@ +#Edit Makefile for tracetools and flowseed +#Copy flowssed to /usr/local/bin + +#HOSTCC ?= $(CC) +LDLIBS= ../../lib/libnetlink.a +CCOPTS= +CFLAGS= -I../../include +ALL_TARGETS= bin2txt headgen txt2bin flowseed + +all: all_targets + +all_targets: $(ALL_TARGETS) + +flowseed: $(TCOBJ) $(LIBUTIL) $(TCLIB) +clean: + -rm -f *.o $(ALL_TARGETS) + +install: all + -mkdir -p /usr/local/bin + install -o root bin2txt /usr/local/bin + install -o root headgen /usr/local/bin + install -o root txt2bin /usr/local/bin + install -o root flowseed /usr/local/bin + +bin2txt: bin2txt.c +headgen: headgen.c +txt2bin: txt2bin.c +flowseed: flowseed.c diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/trace/README.Trace iproute2-2.6.16-060323/netem/trace/README.Trace --- iproute2-2.6.16-060323_orig/netem/trace/README.Trace 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/trace/README.Trace 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,103 @@ + Trace Control for Netem + +Trace based network emulation provides the possibility to emulate network characteristics +such as long-range dependence and self-similarity of cross-traffic. +It is possible to specify one action value (delay, duplication, loss or corruption) +for each packet to be processed. These values are recorded in a trace file. +Trace files are obtained by observing a network, doing some simulations or some calculations. +Example traces as well as other informations are available at http://tcn.hypert.net + +Command syntax of netem trace +... netem trace [default] + with tracefilename.bin = path to trace file + numberofiterations = number of iterations of the trace file, 0 means forever + default = Default value: 0 no delay, 1 drop. default is an optional argument + + +To create your own trace file some tools are provided: + +headgen +generates one value for the trace file. It takes the type and the delay as an argument. +e.g. headgen + with head = 0 -> delay only + 1 -> drop packet + 2 -> duplicate packet + 3 -> corrupt packet + delay = delay value in microseconds + +txt2bin +converts the output form headgen to a netem readable form +e.g txt2bin + with inputfile.txt = file with values as obtained by headgen, one per line + outputfile.bin = file that must be given as argument to netem trace + +bin2txt +takes a netem compatible file and converts it to the txt format. +The output is printed to the shell. If you want it to be saved in a file use a pipe. +e.g bin2txt [u] + with inputfile.bin = Netem compatible file + u = optional, output in understandable format e.g head and delay are reported separatley +usage with a pipe: + bin2txt [u] | + +Example +A. The following values have bean measured: +1. 1ms delay +2. 2ms delay +3. packet loss +4. 1ms delay +5. 1ms delay and duplication +6. 2ms delay +7. 4ms delay and corruption +8. 3ms delay + +B. Obtain the corresponding values for the .txt file and write them in a file e. g. myvalues.txt +# headgen 0 1000 -> 1000 +# headgen 0 2000 -> 2000 +# headgen 1 0 -> 536870912 +# headgen 0 1000 -> 1000 +# headgen 2 1000 -> 1073742824 +# headgen 0 2000 -> 2000 +# headgen 3 4000 -> 1610616736 +# headgen 0 2000 -> 2000 + +myvalues.txt: +1000 +2000 +536870912 +1000 +1073742824 +2000 +1610616736 +2000 + +C. Generate the netem compatible file: +# txt2bin myvalues.txt myvalues.bin + +D. If you want to see what was originally in your file use bin2txt: +# bin2txt myvalues.bin +1000 +2000 +536870912 +1000 +1073742824 +2000 +1610616736 +2000 + +# bin2txt myvalues.bin u +00000000000000000000001111101000 head: 0 delay: 1000 value: 1000 +00000000000000000000011111010000 head: 0 delay: 2000 value: 2000 +00100000000000000000000000000000 head: 1 delay: 0 value: 536870912 +00000000000000000000001111101000 head: 0 delay: 1000 value: 1000 +01000000000000000000001111101000 head: 2 delay: 1000 value: 1073742824 +00000000000000000000011111010000 head: 0 delay: 2000 value: 2000 +01100000000000000000111110100000 head: 3 delay: 4000 value: 1610616736 +00000000000000000000011111010000 head: 0 delay: 2000 value: 2000 + +E. Add netem trace qdisc +# tc qdisc add dev eth1 root netem trace myvalues.bin 1 0 + + + + diff -u'rNF^function' iproute2-2.6.16-060323_orig/netem/trace/txt2bin.c iproute2-2.6.16-060323/netem/trace/txt2bin.c --- iproute2-2.6.16-060323_orig/netem/trace/txt2bin.c 1970-01-01 01:00:00.000000000 +0100 +++ iproute2-2.6.16-060323/netem/trace/txt2bin.c 2006-09-21 12:57:25.000000000 +0200 @@ -0,0 +1,43 @@ +/* txt2bin.c + * tool to generate the values for the tracefile +*/ + +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + + char *out[4], *buf[4096]; + int fdout, variout = 0; + FILE *fdin; + + if (argc < 3) { + printf("Usage: txt2bin inputfile outputfile\n"); + return 0; + } + + /* open input file as normal file */ + if ((fdin = fopen(argv[1], "r")) == NULL) { + fprintf(stderr, "Cannot open input file\n"); + return 0; + } + + /* open output file as raw file */ + if ((fdout = creat(argv[2], S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) < 0) { + fprintf(stderr, "Cannot open output file\n"); + return 0; + } + + while (fgets(&buf, 4096, fdin)) { + variout = atoi(buf); + write(fdout, &variout, 4); + } + fclose(fdin); + close(fdout); + return 0; +} diff -u'rNF^function' iproute2-2.6.16-060323_orig/tc/q_netem.c iproute2-2.6.16-060323/tc/q_netem.c --- iproute2-2.6.16-060323_orig/tc/q_netem.c 2005-12-10 01:01:02.000000000 +0100 +++ iproute2-2.6.16-060323/tc/q_netem.c 2006-09-21 13:18:40.000000000 +0200 @@ -6,8 +6,14 @@ * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. * + * README files: iproute2/netem/distribution + * iproute2/netem/trace + * * Authors: Stephen Hemminger - * + * netem trace enhancement: Ariane Keller ETH Zurich + * Rainer Baumann ETH Zurich + * Ulrich Fiedler ETH Zurich + * */ #include @@ -20,6 +26,10 @@ #include #include #include +#include +#include +#include +#include #include "utils.h" #include "tc_util.h" @@ -42,6 +52,7 @@ fprintf(stderr, "Illegal \"%s\"\n", arg); } +#define FLOWPATH "/usr/local/bin/flowseed" #define usage() return(-1) /* @@ -130,6 +141,7 @@ struct tc_netem_corr cor; struct tc_netem_reorder reorder; struct tc_netem_corrupt corrupt; + struct tc_netem_trace traceopt; __s16 *dist_data = NULL; memset(&opt, 0, sizeof(opt)); @@ -137,6 +149,7 @@ memset(&cor, 0, sizeof(cor)); memset(&reorder, 0, sizeof(reorder)); memset(&corrupt, 0, sizeof(corrupt)); + memset(&traceopt, 0, sizeof(traceopt)); while (argc > 0) { if (matches(*argv, "limit") == 0) { @@ -237,6 +250,72 @@ } else if (strcmp(*argv, "help") == 0) { explain(); return -1; + } else if (strcmp(*argv, "trace") == 0) { + int pid_tc = getpid(); + int fd; + int execvl; + char *filename; + int pid; + + /*load configfs for data transfer user space kernel space */ + int b = mkdir("/config", S_IRWXO); + if (b && errno != EEXIST) { + perror("mkdir"); + return -1; + } + int a = mount("", "/config", "configfs", 0, ""); + if (a && errno != EBUSY) { + perror("mounting configfs"); + return -1; + } + + /*get ticks correct since tracefile is in us, + *and ticks may not be equal to us + */ + get_ticks(&traceopt.ticks, "1000us"); + NEXT_ARG(); + filename = *argv; + if ((fd = open(filename, O_RDONLY, 0)) < 0) { + fprintf(stderr, "Cannot open trace file \n"); + return -1; + } + close(fd); + if (NEXT_IS_NUMBER()) { + NEXT_ARG(); + /*child will load tracefile to kernel */ + switch (pid = fork()) { + case -1:{ + fprintf(stderr, + "Cannot fork\n"); + return -1; + } + case 0:{ + /*child wait for parent to die to be sure that the kernel + *is ready for the tracefiledata + */ + while (pid_tc == getppid()) { + sleep(0); + } + execvl = + execl(FLOWPATH, "flowseed", + filename, *argv, 0); + if (execvl < 0) { + fprintf(stderr, + "starting child failed\n"); + return -1; + } + } + } + } else { + explain(); + return -1; + } + traceopt.def = 0; + if (NEXT_IS_NUMBER()) { + NEXT_ARG(); + traceopt.def = atoi(*argv); + } + traceopt.fid = pid; } else { fprintf(stderr, "What is \"%s\"?\n", *argv); explain(); @@ -286,7 +365,15 @@ dist_data, dist_size*sizeof(dist_data[0])) < 0) return -1; } - tail->rta_len = (void *) NLMSG_TAIL(n) - (void *) tail; + if (traceopt.fid) { + if (addattr_l + (n, TCA_BUF_MAX, TCA_NETEM_TRACE, &traceopt, + sizeof(traceopt)) < 0) { + return -1; + } + } + + tail->rta_len = (void *)NLMSG_TAIL(n) - (void *)tail; return 0; } @@ -295,6 +382,8 @@ const struct tc_netem_corr *cor = NULL; const struct tc_netem_reorder *reorder = NULL; const struct tc_netem_corrupt *corrupt = NULL; + const struct tc_netem_trace *traceopt = NULL; + const struct tc_netem_stats *tracestats = NULL; struct tc_netem_qopt qopt; int len = RTA_PAYLOAD(opt) - sizeof(qopt); SPRINT_BUF(b1); @@ -328,9 +417,50 @@ return -1; corrupt = RTA_DATA(tb[TCA_NETEM_CORRUPT]); } + if (tb[TCA_NETEM_TRACE]) { + if (RTA_PAYLOAD(tb[TCA_NETEM_TRACE]) < sizeof(*traceopt)) + return -1; + traceopt = RTA_DATA(tb[TCA_NETEM_TRACE]); + } + if (tb[TCA_NETEM_STATS]) { + if (RTA_PAYLOAD(tb[TCA_NETEM_STATS]) < sizeof(*tracestats)) + return -1; + tracestats = RTA_DATA(tb[TCA_NETEM_STATS]); + } } fprintf(f, "limit %d", qopt.limit); + if (traceopt->fid) { + fprintf(f, " trace\n"); + + fprintf(f, "packetcount= %d\n", tracestats->packetcount); + fprintf(f, "packetok= %d\n", tracestats->packetok); + fprintf(f, "normaldelay= %d\n", tracestats->normaldelay); + fprintf(f, "drops= %d\n", tracestats->drops); + fprintf(f, "dupl= %d\n", tracestats->dupl); + fprintf(f, "corrupt= %d\n", tracestats->corrupt); + fprintf(f, "novaliddata= %d\n", tracestats->novaliddata); + fprintf(f, "uninitialized= %d\n", tracestats->uninitialized); + fprintf(f, "bufferunderrun= %d\n", tracestats->bufferunderrun); + fprintf(f, "bufferinuseempty= %d\n", + tracestats->bufferinuseempty); + fprintf(f, "noemptybuffer= %d\n", tracestats->noemptybuffer); + fprintf(f, "readbehindbuffer= %d\n", + tracestats->readbehindbuffer); + fprintf(f, "buffer1_reloads= %d\n", + tracestats->buffer1_reloads); + fprintf(f, "buffer2_reloads= %d\n", + tracestats->buffer2_reloads); + fprintf(f, "tobuffer1_switch= %d\n", + tracestats->tobuffer1_switch); + fprintf(f, "tobuffer2_switch= %d\n", + tracestats->tobuffer2_switch); + fprintf(f, "switch_to_emptybuffer1= %d\n", + tracestats->switch_to_emptybuffer1); + fprintf(f, "switch_to_emptybuffer2= %d\n", + tracestats->switch_to_emptybuffer2); + + } if (qopt.latency) { fprintf(f, " delay %s", sprint_ticks(qopt.latency, b1));