ListView 百分比进度条(delphi版)
作者:我爱土豆
本文通过实例代码给大家介绍ListView 百分比进度条,本文使用的是delphi语言实现的,代码比较简单实用,希望的朋友参考下
在看代码之前先给大家附上效果图:
废话不多说了,直接给大家贴代码了。
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ImgList; type TForm1 = class(TForm) btn1: TButton; lv1: TListView; trckbr1: TTrackBar; il1: TImageList; procedure lv1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); procedure lv1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure btn1Click(Sender: TObject); procedure trckbr1Change(Sender: TObject); private function ReDrawItem(HwndLV: HWND; ItemIndex: integer): boolean; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses CommCtrl; {$R *.dfm} //画状态条 procedure DrawSubItem(LV: TListView; Item: TListItem; SubItem: Integer; Prosition: Single; Max, Style: Integer; IsShowProgress: Boolean; DrawColor: TColor = $00005B00; FrameColor: TColor = $00002F00); //获取SubItem的区域 function GetItemRect(hWndLV: HWnd; iItem, iSubItem: Integer): TRect; var Rect: TRect; begin ListView_GetSubItemRect(hWndLV, iItem, iSubItem, iSubItem, @Rect); Result := Rect; end; var PaintRect, R: TRect; i, iWidth, x, y: Integer; S: string; begin with lv do begin PaintRect := GetItemRect(lv.Handle, Item.Index, SubItem); R := PaintRect; if Prosition >= Max then Prosition := 100 else begin if Prosition <= 0 then Prosition := 0 else Prosition := Round((Prosition / MAX) * 100); end; if (Prosition = 0) and (not IsShowProgress) then Canvas.FillRect(r) //如果是0 ,直接显示空白 else begin //先填充背景 Canvas.FillRect(r); Canvas.Brush.Color := Color; //画一个外框 InflateRect(R, -2, -2); Canvas.Brush.Color := FrameColor; Canvas.FrameRect(R); Canvas.Brush.Color := Color; InflateRect(R, -1, -1); //InflateRect(R,-1,-1); //根据百分比计算出要花的进度条内容概述 iWidth := R.Right - Round((R.Right - R.Left) * ((100 - Prosition) / 100)); case Style of 0: //实心 begin Canvas.Brush.Color := DrawColor; R.Right := iWidth; Canvas.FillRect(R); end; 1: //竖线填充 begin i := r.Left; while i < iWidth do begin Canvas.Pen.Color := Color; Canvas.MoveTo(i, R.Top); Canvas.Pen.Color := DrawColor; Canvas.LineTo(i, R.Bottom); Inc(i, 3); end; end; end; //case end //画好进度条后,现在要做的就是显示进度数字了 Canvas.Brush.Style := bsClear; if Prosition = Round(Prosition) then S := Format('%d%%', [Round(Prosition)]) else S := FormatFloat('#0.0', Prosition); with PaintRect do begin x := Left + (Right - Left + 1 - Canvas.TextWidth(S)) div 2; y := Top + (Bottom - Top + 1 - Canvas.TextHeight(S)) div 2; end; SetBkMode(Canvas.Handle, TRANSPARENT); Canvas.TextRect(PaintRect, x, y, S); end; //画完恢复 Canvas.Brush.Color := Color; end; end; procedure TForm1.lv1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); begin end; //上面是画进度条的,现在要给TlistView处理Item重绘的消息,事件是OnCustomDrawItem,需要说明的是,如果想要随心所欲的自画Item,那么就要全部自己来完成,不再需要系统来处理: procedure TForm1.lv1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var BoundRect, Rect: TRect; i: integer; TextFormat: Word; LV: TListView; //这个子过程是用来画CheckBox和ImageList的 procedure Draw_CheckBox_ImageList(r: TRect; aCanvas: TCanvas; Checked: Boolean); var R1: TRect; i: Integer; begin if Sender.Checkboxes then begin aCanvas.Pen.Color := clBlack; aCanvas.Pen.Width := 2; //画CheckBox外框 aCanvas.Rectangle(R.Left + 2, R.Top + 2, R.Left + 14, R.Bottom - 2); if Checked then //画CheckBox的钩 begin aCanvas.MoveTo(R.Left + 4, R.Top + 6); aCanvas.LineTo(R.Left + 6, R.Top + 11); aCanvas.LineTo(R.Left + 11, R.Top + 5); end; aCanvas.Pen.Width := 1; end; //开始画图标 i := 2; //ImageIndex的值,可以任意 if i > -1 then begin //获取图标的RECT if Boolean(ListView_GetSubItemRect(sender.Handle, item.Index, 0, LVIR_ICON, @R1)) then begin //ImageList_Stats.Draw(LV.Canvas, R1.Left, R1.Top, i); if item.ImageIndex > -1 then LV.SmallImages.Draw(LV.Canvas, R1.Right + 2, R1.Top, item.ImageIndex); end; end; end; begin LV := TListView(Sender); BoundRect := Item.DisplayRect(drBounds); InflateRect(BoundRect, -1, 0); //这个地方你可以根据自己的要求设置成想要的颜色,实现突出显示 LV.Canvas.Font.Color := clBtnText; //查看是否被选中 if Item.Selected then begin if cdsFocused in State then begin LV.Canvas.Brush.Color := $00ECCCB9; // //clHighlight; end else begin LV.Canvas.Brush.Color := $00F8ECE5; //clSilver; end; end else begin if (Item.Index mod 2) = 0 then LV.Canvas.Brush.Color := clWhite else LV.Canvas.Brush.Color := $00F2F2F2; end; LV.Canvas.FillRect(BoundRect); // 初始化背景 for i := 0 to LV.Columns.Count - 1 do begin //获取SubItem的Rect ListView_GetSubItemRect(LV.Handle, Item.Index, i, LVIR_LABEL, @Rect); case LV.Columns[i].Alignment of taLeftJustify: TextFormat := DT_LEFT; taRightJustify: TextFormat := DT_RIGHT; taCenter: TextFormat := DT_CENTER; else TextFormat := DT_CENTER; end; case i of 0: //画Caption,0表示Caption,不是Subitem begin //先画选择框和图标 Draw_CheckBox_ImageList(BoundRect, LV.Canvas, Item.Checked); //再画Caption的文字 InflateRect(Rect, -(5 + il1.Width), 0); //向后移3个像素,避免被后面画线框时覆盖 //InflateRect(Rect, -(5), 0); //向后移3个像素,避免被后面画线框时覆盖 DrawText(LV.Canvas.Handle, PAnsiChar(Item.Caption), Length(Item.Caption), Rect, DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or TextFormat); end; 1..MaxInt: //画SubItem[i] begin if (i - 1) = 1 then //显示状态条,本示例是第三栏显示,可以随便定 begin DrawSubItem(LV, Item, i, StrToFloatDef(Item.SubItems[i - 1], 0), 100, 0, True); end else begin //画SubItem的文字 InflateRect(Rect, -2, -2); if i - 1 <= Item.SubItems.Count - 1 then DrawText(LV.Canvas.Handle, PCHAR(Item.SubItems[i - 1]), Length(Item.SubItems[i - 1]), Rect, DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or TextFormat); end; end; end; //end case end; //end for LV.Canvas.Brush.Color := clWhite; if Item.Selected then //画选中条外框 begin if cdsFocused in State then//控件是否处于激活状态 LV.Canvas.Brush.Color := $00DAA07A // $00E2B598; //clHighlight; else LV.Canvas.Brush.Color := $00E2B598; //$00DAA07A // clHighlight; LV.Canvas.FrameRect(BoundRect); // end; DefaultDraw := False; //不让系统画了 with Sender.Canvas do if Assigned(Font.OnChange) then Font.OnChange(Font); end; function TForm1.ReDrawItem(HwndLV: HWND; ItemIndex: integer): boolean; begin Result := ListView_RedrawItems(HwndLV, ItemIndex, ItemIndex); end; procedure TForm1.btn1Click(Sender: TObject); var Item: TListItem; begin //使用: item := LV1.Items[1]; if Item = nil then Exit; item.subitems[1] := '30'; //设置为30% //然后刷新这个item ReDrawItem(LV1.handle, Item.Index); end; procedure TForm1.trckbr1Change(Sender: TObject); var Item: TListItem; begin //使用: item := LV1.Items[0]; item.subitems[1] := IntToStr(trckbr1.Position); //然后刷新这个item ReDrawItem(LV1.handle, Item.Index); end; end. object Form1: TForm1 Left = 416 Top = 301 Width = 494 Height = 170 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object btn1: TButton Left = 272 Top = 96 Width = 75 Height = 25 Caption = 'btn1' TabOrder = 0 OnClick = btn1Click end object lv1: TListView Left = 16 Top = 8 Width = 457 Height = 81 Columns = < item Caption = '名称' Width = 100 end item Caption = '分类' Width = 100 end item Caption = '进度' Width = 100 end item Caption = '资源' Width = 100 end> GridLines = True Items.Data = { 5B000000020000000200000000000000FFFFFFFF020000000000000006B4F3B8 BBCECC04D3CECFB70333354D01000000FFFFFFFFFFFFFFFF0200000000000000 08446F7461B4ABC6E604D3CECFB7043130304DFFFFFFFFFFFFFFFF} ShowWorkAreas = True SmallImages = il1 TabOrder = 1 ViewStyle = vsReport OnCustomDrawItem = lv1CustomDrawItem end object trckbr1: TTrackBar Left = 16 Top = 96 Width = 233 Height = 33 Max = 100 TabOrder = 2 OnChange = trckbr1Change end object il1: TImageList Left = 384 Top = 96 Bitmap = { 494C010103000F00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000004000000001002000000000000040 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600004D4D 4D00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600004D4D 4D00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600004D4D 4D00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600004D4D 4D00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 00004D4D4D004D4D4D0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 00004D4D4D004D4D4D0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 00004D4D4D004D4D4D0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 00004D4D4D004D4D4D0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000D90 1A00026F0400165D0E004D4D4D00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000D90 1A00026F0400165D0E004D4D4D00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000D90 1A00026F0400165D0E004D4D4D00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000D90 1A00026F0400165D0E004D4D4D00000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000066000014A0 270016AB2B0007840F00056303004D4D4D004D4D4D0000000000000000000000 00000000000000000000000000000000000000000000000000000066000014A0 270016AB2B0007840F00056303004D4D4D004D4D4D0000000000000000000000 00000000000000000000000000000000000000000000000000000066000014A0 270016AB2B0007840F00056303004D4D4D004D4D4D0000000000000000000000 00000000000000000000000000000000000000000000000000000066000014A0 270016AB2B0007840F00056303004D4D4D004D4D4D0000000000000000000000 00000000000000000000000000000000000000000000000000000066000019A5 32001CB5360017B02D000C951700016A02001A5C11004D4D4D00000000000000 00000000000000000000000000000000000000000000000000000066000019A5 32001CB5360017B02D000C951700016A02001A5C11004D4D4D00000000000000 00000000000000000000000000000000000000000000000000000066000019A5 32001CB5360017B02D000C951700016A02001A5C11004D4D4D00000000000000 00000000000000000000000000000000000000000000000000000066000019A5 32001CB5360017B02D000C951700016A02001A5C11004D4D4D00000000000000 0000000000000000000000000000000000000000000000000000006600001FAB 3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D000000 0000000000000000000000000000000000000000000000000000006600001FAB 3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D000000 0000000000000000000000000000000000000000000000000000006600001FAB 3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D000000 0000000000000000000000000000000000000000000000000000006600001FAB 3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D000000 00000000000000000000000000000000000000000000000000000066000023B0 460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D 4D004D4D4D0000000000000000000000000000000000000000000066000023B0 460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D 4D004D4D4D0000000000000000000000000000000000000000000066000023B0 460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D 4D004D4D4D0000000000000000000000000000000000000000000066000023B0 460029C2520022BB44001CB5360017B02D000FA91F0005880B00016A01004D4D 4D004D4D4D0000000000000000000000000000000000000000000066000026B3 4D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271 030011610B004D4D4D00000000000000000000000000000000000066000026B3 4D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271 030011610B004D4D4D00000000000000000000000000000000000066000026B3 4D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271 030011610B004D4D4D00000000000000000000000000000000000066000026B3 4D0030C9600029C2520022BB44001CB5360017B02D000FA91F00089B10000271 030011610B004D4D4D00000000000000000000000000000000000066000027B3 4D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D 0600066404004D4D4D00000000000000000000000000000000000066000027B3 4D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D 0600066404004D4D4D00000000000000000000000000000000000066000027B3 4D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D 0600066404004D4D4D00000000000000000000000000000000000066000027B3 4D0033CC660030C9600029C2520022BB44001CB5360017B02D000EA41D00037D 0600066404004D4D4D0000000000000000000000000000000000006600002DB9 530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D 0E00000000000000000000000000000000000000000000000000006600002DB9 530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D 0E00000000000000000000000000000000000000000000000000006600002DB9 530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D 0E00000000000000000000000000000000000000000000000000006600002DB9 530035CE680033CC660030C9600029C2520022BB440015A12800036F0500165D 0E000000000000000000000000000000000000000000000000000066000032BE 58003CD56F0035CE680033CC660030C960001494280005630300000000000000 00000000000000000000000000000000000000000000000000000066000032BE 58003CD56F0035CE680033CC660030C960001494280005630300000000000000 00000000000000000000000000000000000000000000000000000066000032BE 58003CD56F0035CE680033CC660030C960001494280005630300000000000000 00000000000000000000000000000000000000000000000000000066000032BE 58003CD56F0035CE680033CC660030C960001494280005630300000000000000 00000000000000000000000000000000000000000000000000000066000036C2 5C0043DC76003CD56F002BBB55000A7913000F5F090000000000000000000000 00000000000000000000000000000000000000000000000000000066000036C2 5C0043DC76003CD56F002BBB55000A7913000F5F090000000000000000000000 00000000000000000000000000000000000000000000000000000066000036C2 5C0043DC76003CD56F002BBB55000A7913000F5F090000000000000000000000 00000000000000000000000000000000000000000000000000000066000036C2 5C0043DC76003CD56F002BBB55000A7913000F5F090000000000000000000000 0000000000000000000000000000000000000000000000000000006600003DC9 630049E27C0025A84200046D07002D581E000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600003DC9 630049E27C0025A84200046D07002D581E000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600003DC9 630049E27C0025A84200046D07002D581E000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600003DC9 630049E27C0025A84200046D07002D581E000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600003CC5 5F00158721000961050000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600003CC5 5F00158721000961050000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600003CC5 5F00158721000961050000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600003CC5 5F00158721000961050000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 0000245E19000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 0000245E19000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 0000245E19000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 0000245E19000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000660000245E 1900000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000660000245E 1900000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000660000245E 1900000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000660000245E 1900000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000BA877700CE7E6200D07E5D00D07E 5D00CE7E6200C396880000000000000000000000000000000000006600004D4D 4D00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600004D4D 4D00000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000B7A5A2008D6F6A008D6F6A008D6F6A008D6F6A00A28A 8600BFAEAB000000000000000000000000000000000000000000000000000000 0000000000000000000000000000CF795600EDB18D00F3BC9900F1BA9600F0B7 9400F0B79400E5A07D00CA715200000000000000000000000000006600000066 00004D4D4D004D4D4D0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000066 00004D4D4D004D4D4D0000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000C5B6 B4009B817C0093757000B8979100DDB9B200C09E9800BD9E9800BD9D9700AA8B 850091746F008D6F6A0000000000000000000000000000000000000000000000 00000000000000000000CD795D00F1A77B00EFA47800EDA07400EB9B7000DA83 5D00DD886000E4906600DA835D00E4BAAC000000000000000000006600000D90 1A00026F0400165D0E004D4D4D00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000006600000D90 1A00026F0400165D0E004D4D4D00000000000000000000000000000000000000 00000000000000000000000000000000000000000000A9928E008D6F6A00AA8B 8500D1AEA700F0CAC200F0CAC200F0CAC200E9C7C100F3D3CC00F3D3CC00F0CA C200D6B3AC008D6F6A00000000000000000000000000000000005D9D5F003B9E 3500409F33003B9E3500C06F4400F4A17000F19C6C00ED956600E2875A00C56A 4D00D06E4700E2845600E2845600E1B3A50000000000000000000066000014A0 270016AB2B0007840F00056303004D4D4D004D4D4D0000000000000000000000 00000000000000000000000000000000000000000000000000000066000014A0 270016AB2B0007840F00056303004D4D4D004D4D4D0000000000000000000000 00000000000000000000000000000000000000000000997A7500EAC4BD00F0CA C200F0CAC200F0CAC200F0CAC200F0CAC200EBCBC600F4D7D100F3D3CC00F3D3 CC00D6B3AC008D6F6A000000000000000000000000002395240061B9510074C2 5F007AC9690080CF7200B47A4900F9AA7800F4A17000F19C6C00CA715200E7C7 C100CB6A4700E88D5E00DF805500E6C0B40000000000000000000066000019A5 32001CB5360017B02D000C951700016A02001A5C11004D4D4D00000000000000 00000000000000000000000000000000000000000000000000000066000019A5 32001CB5360017B02D000C951700016A02001A5C11004D4D4D00000000000000 00000000000000000000000000000000000000000000A6868000F0CAC200F0CA C200F0CAC200F0CAC200F0CAC200F0CAC200D6B3AC00C5ADA900CDB5B000D7BD B700BD9E98008D6F6A000000000000000000000000000B99170018AB29000B93 15001BA52A0033C850007A934700EC986A00F9AA7800D0734E00ECD0C800F4E7 E500CE7E6200ED956600D3734B00000000000000000000000000006600001FAB 3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D000000 0000000000000000000000000000000000000000000000000000006600001FAB 3D0022BB44001CB5360017B02D000FA51E0003790600096105004D4D4D000000 00000000000000000000000000000