本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
using system;
using system.collections;
using system.componentmodel;
using system.drawing;
using system.data;
using system.windows.forms;
using system.xml ;
namespace chartcontrol
{
/// <summary>
/// chartcontrol 1.0 的摘要说明。此控件是画图的,根据xml文档的数据生成图表。
/// 目前能够画2维图和3维图 柱形图 和 折线图 饼形图。韩永矗5apr2005制作。
/// 柱形图请将xml文件中的“add key="diagramtype"”修改为histogram
/// 折线图请将xml文件中的“add key="diagramtype"”修改为flexdiagram
/// 饼形图请将xml文件中的“add key="diagramtype"”修改为cakydiagram
/// xml文件不能修改名字,需要和你的程序执行文件在同一个目录。
/// </summary>
public class chartcontrol : system.windows.forms.usercontrol
{
private system.windows.forms.label label1;
private system.windows.forms.label label2;
private system.windows.forms.label label3;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private system.componentmodel.container components = null;
public chartcontrol()
{
// 该调用是 windows.forms 窗体设计器所必需的。
initializecomponent();
// todo: 在 initcomponent 调用后添加任何初始化
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void dispose( bool disposing )
{
if( disposing )
{
if( components != null )
components.dispose();
}
base.dispose( disposing );
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void initializecomponent()
{
this.label1 = new system.windows.forms.label();
this.label2 = new system.windows.forms.label();
this.label3 = new system.windows.forms.label();
this.suspendlayout();
//
// label1
//
this.label1.location = new system.drawing.point(104, 16);
this.label1.name = "label1";
this.label1.size = new system.drawing.size(160, 24);
this.label1.tabindex = 0;
this.label1.text = "label1";
//
// label2
//
this.label2.location = new system.drawing.point(8, 56);
this.label2.name = "label2";
this.label2.tabindex = 1;
this.label2.text = "label2";
//
// label3
//
this.label3.location = new system.drawing.point(288, 320);
this.label3.name = "label3";
this.label3.tabindex = 2;
this.label3.text = "label3";
//
// chartcontrol
//
this.backcolor = system.drawing.color.white;
this.controls.add(this.label3);
this.controls.add(this.label2);
this.controls.add(this.label1);
this.name = "chartcontrol";
this.size = new system.drawing.size(448, 360);
this.load += new system.eventhandler(this.chartcontrol_load);
this.resumelayout(false);
}
#endregion
#region 读写xml文件的几个小函数,2005 4 2 by hyc
public void setxmlfilevalue(string xmlpath,string appkey,string appvalue)//写xmlpath是文件路径+文件名,appkey是 key name,appvalue是value
{
xmldocument xdoc = new xmldocument();
xdoc.load(xmlpath);
xmlnode xnode;
xmlelement xelem1;
xmlelement xelem2;
xnode = xdoc.selectsinglenode("//appsettings");
xelem1 = (xmlelement)xnode.selectsinglenode("//add[@key='" + appkey + "']");
if ( xelem1 != null )
{
xelem1.setattribute("value",appvalue);
}
else
{
xelem2 = xdoc.createelement("add");
xelem2.setattribute("key",appkey);
xelem2.setattribute("value",appvalue);
xnode.appendchild(xelem2);
}
xdoc.save(xmlpath);
}
public void getxmlfilevalue(string xmlpath,string appkey,ref string appvalue)//读xmlpath是文件路径+文件名,appkey是 key name,appvalue是value
{
xmldocument xdoc = new xmldocument();
xdoc.load(xmlpath);
xmlnode xnode;
xmlelement xelem1;
xnode = xdoc.selectsinglenode("//appsettings");
xelem1 = (xmlelement)xnode.selectsinglenode("//add[@key='" + appkey + "']");
if ( xelem1 != null )
{
appvalue=xelem1.getattribute ("value");
}
else
{
// messagebox.show ("there is not any information!");
}
}
#endregion
#region 变量声明,2005 4 4 by hyc
public int formheight;
public int formwidth;
public int num=1;
public int max=1;
public int min=1;
public int jnum=1;//维数
public int polebold;
public int heightxs=100;//高度系数
public int[] startangl=new int [100];//开始角度
public int[] sweepangl=new int [100]; //跨越弧度
public int allsweep;
public int kuandu;
public int[,] x=new int [100,100];
public int [,] y=new int[100,100];
public int[,] yy=new int [100,100];
public string[] typename=new string [100];
public string[,] typevalue=new string [100,100];
public string appvalue;
public string pathfilename=system.windows .forms .application.startuppath +"//xmlchart.xml";
system.windows .forms .label [] typenamelabel;
system.windows .forms .label [,] typevaluelabel;
#endregion
#region 自定义函数,2005 4 4 by hyc
public void allbegain()//all 初始化
{
formheight=this.height ;
formwidth=this.width ;
getxmlfilevalue(pathfilename,"diagramname",ref appvalue);
label1.text =appvalue+"(此图表控件是测试版)";
getxmlfilevalue(pathfilename,"yname",ref appvalue);
label2.text =appvalue;
getxmlfilevalue(pathfilename,"xname",ref appvalue);
label3.text =appvalue;
label1.autosize =true;
label1.top =5;
label1.left =(formwidth-label1.width )/2;
label2.autosize =true ;
label3.autosize=true;
label2.top =15;
label2.left =5;
label3.top=formheight-10;
label3.left=formwidth-label3.width-5;
getxmlfilevalue(pathfilename,"num",ref appvalue);
num=int32.parse (appvalue);
getxmlfilevalue(pathfilename,"jnum",ref appvalue);
jnum=int32.parse (appvalue);
}
public void histogrambegain()//histogram 初始化
{
for(int i=1;i<=num;i++)
{
getxmlfilevalue(pathfilename,"id"+i.tostring (),ref typename[i]);
for(int j=1;j<=jnum;j++)
{
getxmlfilevalue(pathfilename,"id"+j.tostring()+"num"+i.tostring (),ref typevalue[j,i]);
}
}
polebold=formwidth*2/(3*num*jnum);
max=int32.parse (typevalue[1,1]);
min=int32.parse (typevalue[1,1]);
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
if(int32.parse (typevalue[j,i])>max)
{
max=int32.parse (typevalue[j,i]);
}
if(int32.parse (typevalue[j,i])<min)
{
min=int32.parse (typevalue[j,i]);
}
}
}
for(int i=1;i<100;i++)
{
if(max>(formheight-50))
{
heightxs=heightxs/2;
max=max/2;
}
if(max<(formheight-50)/2)
{
heightxs=heightxs*2;
max=max*2;
}
if(max<(formheight-50) && max>(formheight-50)/2)
{
break;
}
}
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
x[j,i]=(label3.left -(label2.left +label2.width ))/num*i-(label2.left +label2.width )+(polebold+1)*(j-1)-label3.width ;//????
y[j,i]=label3.top-5-(int32.parse (typevalue[j,i])*heightxs/100);
yy[j,i]=int32.parse (typevalue[j,i]);
yy[j,i]=yy[j,i]*heightxs/100;
}
}
typenamelabel = new system.windows .forms.label[100];
for(int i=1;i<=num;i++)
{
typenamelabel[i]=new label ();
typenamelabel[i].top =label3.top ;
typenamelabel[i].text =typename[i];
typenamelabel[i].autosize =true;
typenamelabel[i].left =x[1,i]+polebold*jnum/2;
this.controls .add (typenamelabel[i]);
}
typevaluelabel = new system.windows .forms.label[100,100];
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
typevaluelabel[j,i]=new label ();
typevaluelabel[j,i].top =y[j,i]-20 ;
typevaluelabel[j,i].text =typevalue[j,i];
typevaluelabel[j,i].autosize =true;
typevaluelabel[j,i].left =x[j,i];
this.controls .add (typevaluelabel[j,i]);
}
}
}
public void flexdiagrambegain()//flex diagram 初始化
{
for(int i=1;i<=num;i++)
{
getxmlfilevalue(pathfilename,"id"+i.tostring (),ref typename[i]);
for(int j=1;j<=jnum;j++)
{
getxmlfilevalue(pathfilename,"id"+j.tostring()+"num"+i.tostring (),ref typevalue[j,i]);
}
}
typenamelabel = new system.windows .forms.label[100];
for(int i=1;i<=num;i++)
{
typenamelabel[i]=new label ();
typenamelabel[i].top =label3.top ;
typenamelabel[i].text =typename[i];
typenamelabel[i].autosize =true;
typenamelabel[i].left =(label3.left -(label2.left +label2.width ))/num*i-(label2.left +label2.width )-typenamelabel[i].width /2;
this.controls .add (typenamelabel[i]);
}
max=int32.parse (typevalue[1,1]);
min=int32.parse (typevalue[1,1]);
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
if(int32.parse (typevalue[j,i])>max)
{
max=int32.parse (typevalue[j,i]);
}
if(int32.parse (typevalue[j,i])<min)
{
min=int32.parse (typevalue[j,i]);
}
}
}
for(int i=1;i<100;i++)
{
if(max>(formheight-50))
{
heightxs=heightxs/2;
max=max/2;
}
if(max<(formheight-50)/2)
{
heightxs=heightxs*2;
max=max*2;
}
if(max<(formheight-50) && max>(formheight-50)/2)
{
break;
}
}
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
x[j,i]=(label3.left -(label2.left +label2.width ))/num*i-(label2.left +label2.width );
y[j,i]=label3.top-5-(int32.parse (typevalue[j,i])*heightxs/100);
yy[j,i]=int32.parse (typevalue[j,i]);
yy[j,i]=yy[j,i]*heightxs/100;
}
}
typevaluelabel = new system.windows .forms.label[100,100];
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
typevaluelabel[j,i]=new label ();
typevaluelabel[j,i].top =y[j,i]-20 ;
typevaluelabel[j,i].text =typevalue[j,i];
typevaluelabel[j,i].autosize =true;
typevaluelabel[j,i].left =(label3.left -(label2.left +label2.width ))/num*i-(label2.left +label2.width )-typevaluelabel[j,i].width /2;
this.controls .add (typevaluelabel[j,i]);
}
}
}
public void cakydiagrambegain()//饼形图初始化
{
for(int i=1;i<=num;i++)
{
getxmlfilevalue(pathfilename,"id"+i.tostring (),ref typename[i]);
getxmlfilevalue(pathfilename,"id1num"+i.tostring (),ref typevalue[1,i]);
}
for(int i=1;i<=num;i++)
{
getxmlfilevalue(pathfilename,"id1num"+i.tostring (),ref appvalue);
sweepangl[i]=int32.parse (appvalue);
}
allsweep=0;
for(int i=1;i<=num;i++)
{
allsweep=allsweep+sweepangl[i];
}
for(int i=1;i<=num;i++)
{
sweepangl[i]=(sweepangl[i]*360)/allsweep;
}
//去掉白边
int tempsw;
for(int j=1;j<360;j++)
{
tempsw=0;
for(int i=1;i<=num;i++)
{
tempsw=tempsw+sweepangl[i];
}
if(tempsw<360)
{
for(int k=1;k<=360-tempsw;k++)
{
if(k<num)
{
sweepangl[k]++;
}
else
{
break;
}
}
}
if(tempsw>=360)
{
break;
}
}
startangl[1]=0;
int tempallsweep;
for(int i=2;i<=num;i++)
{
tempallsweep=0;
for(int j=1;j<=i-1;j++)
{
tempallsweep=tempallsweep+sweepangl[j];
}
startangl[i]=tempallsweep;
}
if(formwidth>=formheight)
{
kuandu=formheight*2/3;
}
else
{
kuandu=formwidth*2/3;
}
double angle;
typenamelabel = new system.windows .forms.label[100];
for(int i=1;i<=num;i++)
{
angle=(360-startangl[i]+90-sweepangl[i]/2)*3.141592653579/180;
typenamelabel[i]=new label ();
typenamelabel[i].top =(int)((kuandu+60)/2* math.cos (angle))+(formheight/6+kuandu/2);
typenamelabel[i].text =typename[i];
typenamelabel[i].autosize =true;
typenamelabel[i].left =(int)((kuandu+60)/2* math.sin (angle))+(formwidth/6+kuandu/2);
this.controls .add (typenamelabel[i]);
}
typevaluelabel = new system.windows .forms.label[100,100];
string tempstr1;
for(int i=1;i<=num;i++)
{
tempstr1=(int32.parse (typevalue[1,i])*1.0/allsweep*100.0).tostring()+" ";
typevaluelabel[1,i]=new label ();
typevaluelabel[1,i].top =typenamelabel[i].top ;
typevaluelabel[1,i].text =tempstr1.substring(0,5)+"%";
typevaluelabel[1,i].autosize =true;
typevaluelabel[1,i].left =typenamelabel[i].left+typenamelabel[i].width +2;
this.controls .add (typevaluelabel[1,i]);
}
}
#endregion
private void chartcontrol_load(object sender, system.eventargs e)
{
allbegain();
}
#region draw diagram函数,2005 4 4 by hyc
protected override void onpaint(painteventargs paintevent)
{
graphics g = paintevent.graphics;
solidbrush brush=new solidbrush (color.blue );
pen pen=new pen (color.black);
pen pen2=new pen (color.darkgray );
solidbrush[] bb;
bb=new solidbrush [100];
bb[1]=new solidbrush (color.darkred);
bb[2]=new solidbrush (color.darkslateblue);
bb[3]=new solidbrush (color.darkgray);
bb[4]=new solidbrush (color.yellowgreen);
bb[5]=new solidbrush (color.darksalmon);
bb[6]=new solidbrush (color.darkorange);
bb[7]=new solidbrush (color.lightyellow);
bb[8]=new solidbrush (color.slateblue);
bb[9]=new solidbrush (color.black);
bb[10]=new solidbrush (color.yellowgreen);
bb[11]=new solidbrush (color.darkseagreen);
bb[12]=new solidbrush (color.darkslategray);
bb[13]=new solidbrush (color.darkturquoise);
bb[14]=new solidbrush (color.darkviolet);
bb[15]=new solidbrush (color.deeppink);
pen[] pp;
pp=new pen [100];
pp[1]=new pen (color.darkred);
pp[2]=new pen (color.darkslateblue);
pp[3]=new pen (color.darkgray);
pp[4]=new pen (color.yellowgreen);
pp[5]=new pen (color.darksalmon);
pp[6]=new pen (color.darkorange);
pp[7]=new pen (color.lightyellow);
pp[8]=new pen (color.slateblue);
pp[9]=new pen (color.black);
pp[10]=new pen (color.yellowgreen);
pp[11]=new pen (color.darkseagreen);
pp[12]=new pen (color.darkslategray);
pp[13]=new pen (color.darkturquoise);
pp[14]=new pen (color.darkviolet);
pp[15]=new pen (color.deeppink);
getxmlfilevalue(pathfilename,"diagramtype",ref appvalue);
switch(appvalue)
{
case "histogram"://柱形图
histogrambegain();
g.drawline (pen,label2.left +label2.width ,label3.top-5,label3.left+label3.width,label3.top-5);
g.drawline (pen,label2.left +label2.width ,label3.top-5,label2.left +label2.width ,label2.top-5);
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
g.fillrectangle(bb[j],x[j,i],y[j,i],polebold,yy[j,i]);
}
}
break;
case"flexdiagram"://折线图
flexdiagrambegain();
g.drawline (pen,label2.left +label2.width ,label3.top-5,label3.left+label3.width,label3.top-5);
g.drawline (pen,label2.left +label2.width ,label3.top-5,label2.left +label2.width ,label2.top-5);
for(int i=1;i<num;i++)
{
for(int j=1;j<=jnum;j++)
{
g.drawline (pp[j],x[j,i],y[j,i],x[j,i+1],y[j,i+1]);
}
}
for(int i=1;i<=num;i++)
{
for(int j=1;j<=jnum;j++)
{
g.drawline(pen2,x[j,i],y[j,i],x[j,i],label3.top-5);
}
}
break;
case"cakydiagram"://饼形图
cakydiagrambegain();
g.drawline (pen,label2.left +label2.width ,label3.top-5,label3.left+label3.width,label3.top-5);
g.drawline (pen,label2.left +label2.width ,label3.top-5,label2.left +label2.width ,label2.top-5);
for(int i=1;i<=num;i++)
{
g.fillpie (bb[i],formwidth/6,formheight/6,kuandu,kuandu,startangl[i],sweepangl[i]);
}
break;
default:
break;
}
}
#endregion
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//xml文件内容,此文件必须放在应用程序目录,文件名xmlchart.xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appsettings>
<add key="diagramtype" value="histogram" />
<add key="diagramname" value="1-12月产品数量对比" />
<add key="xname" value="月份" />
<add key="yname" value="数量" />
<add key="jnum" value="2" />
<add key="num" value="5" />
<add key="text" value="yes" />
<add key="id1" value="1月" />
<add key="id2" value="2月" />
<add key="id3" value="3月" />
<add key="id4" value="4月" />
<add key="id5" value="5月" />
<add key="id6" value="6月" />
<add key="id7" value="7月" />
<add key="id8" value="8月" />
<add key="id9" value="9月" />
<add key="id10" value="10月" />
<add key="id11" value="11月" />
<add key="id12" value="12月" />
<add key="id13" value="1月" />
<add key="id14" value="2月" />
<add key="id15" value="3月" />
<add key="id16" value="4月" />
<add key="id17" value="5月" />
<add key="id18" value="6月" />
<add key="id19" value="7月" />
<add key="id20" value="8月" />
<add key="id21" value="9月" />
<add key="id22" value="10月" />
<add key="id23" value="11月" />
<add key="id24" value="12月" />
<add key="id25" value="1月" />
<add key="id1num1" value="9" />
<add key="id1num2" value="5" />
<add key="id1num3" value="6" />
<add key="id1num4" value="7" />
<add key="id1num5" value="4" />
<add key="id1num6" value="6" />
<add key="id1num7" value="5" />
<add key="id1num8" value="3" />
<add key="id1num9" value="2" />
<add key="id1num10" value="1" />
<add key="id1num11" value="2" />
<add key="id1num12" value="2" />
<add key="id1num13" value="2" />
<add key="id1num14" value="2" />
<add key="id1num15" value="2" />
<add key="id1num16" value="2" />
<add key="id1num17" value="2" />
<add key="id1num18" value="2" />
<add key="id1num19" value="2" />
<add key="id1num20" value="2" />
<add key="id1num21" value="2" />
<add key="id1num22" value="2" />
<add key="id1num23" value="2" />
<add key="id1num24" value="2" />
<add key="id1num25" value="2" />
<add key="id2num1" value="4" />
<add key="id2num2" value="5" />
<add key="id2num3" value="4" />
<add key="id2num4" value="1" />
<add key="id2num5" value="5" />
<add key="id2num6" value="3" />
<add key="id2num7" value="4" />
<add key="id2num8" value="1" />
<add key="id2num9" value="2" />
<add key="id2num10" value="4" />
<add key="id2num11" value="5" />
<add key="id2num12" value="2" />
<add key="id2num13" value="2" />
<add key="id2num14" value="2" />
<add key="id2num15" value="2" />
<add key="id2num16" value="2" />
<add key="id2num17" value="2" />
<add key="id2num18" value="2" />
<add key="id2num19" value="2" />
<add key="id2num20" value="2" />
<add key="id2num21" value="2" />
<add key="id2num22" value="2" />
<add key="id2num23" value="2" />
<add key="id2num24" value="2" />
<add key="id2num25" value="2" />
<add key="id3num1" value="4" />
<add key="id3num2" value="5" />
<add key="id3num3" value="6" />
<add key="id3num4" value="1" />
<add key="id3num5" value="2" />
<add key="id3num6" value="2" />
<add key="id3num7" value="5" />
<add key="id3num8" value="2" />
<add key="id3num9" value="5" />
<add key="id3num10" value="7" />
<add key="id3num11" value="9" />
<add key="id3num12" value="2" />
<add key="id3num13" value="2" />
<add key="id3num14" value="2" />
<add key="id3num15" value="2" />
<add key="id3num16" value="2" />
<add key="id3num17" value="2" />
<add key="id3num18" value="2" />
<add key="id3num19" value="2" />
<add key="id3num20" value="2" />
<add key="id3num21" value="2" />
<add key="id3num22" value="2" />
<add key="id3num23" value="2" />
<add key="id3num24" value="2" />
<add key="id3num25" value="2" />
<add key="id4num1" value="2" />
<add key="id4num2" value="5" />
<add key="id4num3" value="4" />
<add key="id4num4" value="2" />
<add key="id4num5" value="4" />
<add key="id4num6" value="3" />
<add key="id4num7" value="1" />
<add key="id4num8" value="1" />
<add key="id4num9" value="4" />
<add key="id4num10" value="5" />
<add key="id4num11" value="8" />
<add key="id4num12" value="2" />
<add key="id4num13" value="2" />
<add key="id4num14" value="2" />
<add key="id4num15" value="2" />
<add key="id4num16" value="2" />
<add key="id4num17" value="2" />
<add key="id4num18" value="2" />
<add key="id4num19" value="2" />
<add key="id4num20" value="2" />
<add key="id4num21" value="2" />
<add key="id4num22" value="2" />
<add key="id4num23" value="2" />
<add key="id4num24" value="2" />
<add key="id4num25" value="2" />
<add key="id5num1" value="2" />
<add key="id5num2" value="5" />
<add key="id5num3" value="4" />
<add key="id5num4" value="2" />
<add key="id5num5" value="4" />
<add key="id5num6" value="3" />
<add key="id5num7" value="1" />
<add key="id5num8" value="1" />
<add key="id5num9" value="4" />
<add key="id5num10" value="5" />
<add key="id5num11" value="8" />
<add key="id5num12" value="2" />
<add key="id5num13" value="2" />
<add key="id5num14" value="2" />
<add key="id5num15" value="2" />
<add key="id5num16" value="2" />
<add key="id5num17" value="2" />
<add key="id5num18" value="2" />
<add key="id5num19" value="2" />
<add key="id5num20" value="2" />
<add key="id5num21" value="2" />
<add key="id5num22" value="2" />
<add key="id5num23" value="2" />
<add key="id5num24" value="2" />
<add key="id5num25" value="2" />
<add key="id6num1" value="2" />
<add key="id6num2" value="5" />
<add key="id6num3" value="4" />
<add key="id6num4" value="2" />
<add key="id6num5" value="4" />
<add key="id6num6" value="3" />
<add key="id6num7" value="1" />
<add key="id6num8" value="1" />
<add key="id6num9" value="4" />
<add key="id6num10" value="5" />
<add key="id6num11" value="8" />
<add key="id6num12" value="2" />
<add key="id6num13" value="2" />
<add key="id6num14" value="2" />
<add key="id6num15" value="2" />
<add key="id6num16" value="2" />
<add key="id6num17" value="2" />
<add key="id6num18" value="2" />
<add key="id6num19" value="2" />
<add key="id6num20" value="2" />
<add key="id6num21" value="2" />
<add key="id6num22" value="2" />
<add key="id6num23" value="2" />
<add key="id6num24" value="2" />
<add key="id6num25" value="2" />
<add key="id7num1" value="2" />
<add key="id7num2" value="5" />
<add key="id7num3" value="4" />
<add key="id7num4" value="2" />
<add key="id7num5" value="4" />
<add key="id7num6" value="3" />
<add key="id7num7" value="1" />
<add key="id7num8" value="1" />
<add key="id7num9" value="4" />
<add key="id7num10" value="5" />
<add key="id7num11" value="8" />
<add key="id7num12" value="2" />
<add key="id7num13" value="2" />
<add key="id7num14" value="2" />
<add key="id7num15" value="2" />
<add key="id7num16" value="2" />
<add key="id7num17" value="2" />
<add key="id7num18" value="2" />
<add key="id7num19" value="2" />
<add key="id7num20" value="2" />
<add key="id7num21" value="2" />
<add key="id7num22" value="2" />
<add key="id7num23" value="2" />
<add key="id7num24" value="2" />
<add key="id7num25" value="2" />
<add key="id8num1" value="2" />
<add key="id8num2" value="5" />
<add key="id8num3" value="4" />
<add key="id8num4" value="2" />
<add key="id8num5" value="4" />
<add key="id8num6" value="3" />
<add key="id8num7" value="1" />
<add key="id8num8" value="1" />
<add key="id8num9" value="4" />
<add key="id8num10" value="5" />
<add key="id8num11" value="8" />
<add key="id8num12" value="2" />
<add key="id8num13" value="2" />
<add key="id8num14" value="2" />
<add key="id8num15" value="2" />
<add key="id8num16" value="2" />
<add key="id8num17" value="2" />
<add key="id8num18" value="2" />
<add key="id8num19" value="2" />
<add key="id8num20" value="2" />
<add key="id8num21" value="2" />
<add key="id8num22" value="2" />
<add key="id8num23" value="2" />
<add key="id8num24" value="2" />
<add key="id8num25" value="2" />
<add key="id9num1" value="2" />
<add key="id9num2" value="5" />
<add key="id9num3" value="4" />
<add key="id9num4" value="2" />
<add key="id9num5" value="4" />
<add key="id9num6" value="3" />
<add key="id9num7" value="1" />
<add key="id9num8" value="1" />
<add key="id9num9" value="4" />
<add key="id9num10" value="5" />
<add key="id9num11" value="8" />
<add key="id9num12" value="2" />
<add key="id9num13" value="2" />
<add key="id9num14" value="2" />
<add key="id9num15" value="2" />
<add key="id9num16" value="2" />
<add key="id9num17" value="2" />
<add key="id9num18" value="2" />
<add key="id9num19" value="2" />
<add key="id9num20" value="2" />
<add key="id9num21" value="2" />
<add key="id9num22" value="2" />
<add key="id9num23" value="2" />
<add key="id9num24" value="2" />
<add key="id9num25" value="2" />
<add key="id10num1" value="2" />
<add key="id10num2" value="5" />
<add key="id10num3" value="4" />
<add key="id10num4" value="2" />
<add key="id10num5" value="4" />
<add key="id10num6" value="3" />
<add key="id10num7" value="1" />
<add key="id10num8" value="1" />
<add key="id10num9" value="4" />
<add key="id10num10" value="5" />
<add key="id10num11" value="8" />
<add key="id10num12" value="2" />
<add key="id10num13" value="2" />
<add key="id10num14" value="2" />
<add key="id10num15" value="2" />
<add key="id10num16" value="2" />
<add key="id10num17" value="2" />
<add key="id10num18" value="2" />
<add key="id10num19" value="2" />
<add key="id10num20" value="2" />
<add key="id10num21" value="2" />
<add key="id10num22" value="2" />
<add key="id10num23" value="2" />
<add key="id10num24" value="2" />
<add key="id10num25" value="2" />
</appsettings>
</configuration>