华为云用户手册
-
响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 code String 参数解释 错误码 error CommonResponseErrorOfAPITest object 参数解释 统一错误返回 reason String 参数解释 失败原因 result BasicAwRes object 参数解释 结果 status String 参数解释 状态 costTimeResult String 参数解释 提交耗时 表4 CommonResponseErrorOfAPITest 参数 参数类型 描述 code String 参数解释 接口调用失败错误码 reason String 参数解释 接口调用失败原因 表5 BasicAwRes 参数 参数类型 描述 aw_code String 参数解释 关键字代码, hascode字段为1时有效 aw_description String 参数解释 关键字描述 aw_mark Integer 参数解释 关键字标记 aw_operationid String 参数解释 关键字操作编号 aw_tags String 参数解释 关键字tags aw_type Integer 参数解释 关键字类型 aw_uniqueid String 参数解释 关键字来源 by_order Integer 参数解释 关键字顺序 create_time String 参数解释 关键字创建时间 create_time_stamp Long 参数解释 关键字创建时间戳 create_time_string String 参数解释 关键字创建时间戳(字符串格式) create_user String 参数解释 关键字创建者 create_user_id String 参数解释 关键字创建者ID delete_time String 参数解释 关键字删除时间 delete_user String 参数解释 关键字删除者 description String 参数解释 关键字描述 dft_check_point_list Array of objects 参数解释 默认检查点列表 dft_custom_header Array of objects 参数解释 默认请求头参数对象 dft_retry_interval String 参数解释 重试间隔时间 (ms) ,为空表示不等待 dft_retry_times String 参数解释 重试次数 dft_variable_list Array of objects 参数解释 默认变量信息列表 extra_info Object 参数解释 补充信息 group_name String 参数解释 分组名 has_code Integer 参数解释 是否存在代码, 0-不存在代;1-存在代码 id String 参数解释 关键字编号 import_package Array of strings 参数解释 导入的包名 interface_label String 参数解释 接口的x-extend字段说明 is_favorite Integer 参数解释 是否收藏 method String 参数解释 关键字方法名 name String 参数解释 关键字名 nameView String 参数解释 在页面上显示的名字 origin_project String 参数解释 源工程信息 param_type_and_dft_value Array of objects 参数解释 参数类型和参数默认值 project_id String 参数解释 工程编号 protocol_type String 参数解释 协议类型 public_aw_lib Object 参数解释 公共关键字信息 public_aw_lib_id String 参数解释 公共关键字id region String 参数解释 region信息 return_type String 参数解释 返回值类型 root_id String 参数解释 根节点编号 source String 参数解释 关键字依赖的类源 special_type Integer 参数解释 特殊关键字类型 tmssCaseNumber String 参数解释 关键字编号(来自测试管理服务) tmss_case_id String 参数解释 测试用例id update_time String 参数解释 关键字更新时间 update_time_stamp Long 参数解释 关键字更新时间戳 update_time_string String 参数解释 关键字更新时间戳(字符串格式) update_user String 参数解释 关键字更新者 warningMsg String 参数解释 警告信息 yamlName String 参数解释 yaml名称 状态码:401 Unauthorized 状态码:403 Forbidden 状态码:404 Not Found
-
响应参数 状态码:204 No Content 状态码:400 表5 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:401 表6 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:404 表7 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:500 表8 响应Body参数 参数 参数类型 描述 error_code String 参数解释: 接口调用失败错误码 取值范围: 不涉及 error_msg String 参数解释: 接口调用失败错误信息 取值范围: 不涉及
-
请求示例 批量更新测试用例结果 post https://{endpoint}/v1/projects/efdb403066474ab08836b9eeaaa23bca/testcases/result { "execute_list" : [ { "description" : "这是一条备注信息", "duration" : 10, "end_time" : 16659743037899, "execute_id" : "efdb403066474ab08836b9eeaaa23bca", "result_id" : "0", "testcase_id" : "b66aab5469cc4ab39b0dda8e644a42a4" } ], "service_id" : 13 }
-
URI POST /v1/projects/{project_id}/testcases/result 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 项目id,对应"需求管理 CodeArts Req"项目唯一标识,测试计划管理页面地址栏url https://{host}/cloudtestportal/project/{project_id}/testplan中project_id变量的值 约束限制: 不涉及 取值范围: 项目uuid应符合如下规则:长度等于32位,包含大小写字母、数字 默认取值: 不涉及
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 execute_list 是 Array of UpdateTestCaseResultBean objects 测试用例状态信息,数组长度小于等于50 service_id 是 Integer 参数解释: 测试用例类型ID,指定指定对应类型的测试用例ID 约束限制: 需要与execute_list中提供的用例的执行方式一致 取值范围: 大于0整数 默认取值: 不涉及 表4 UpdateTestCaseResultBean 参数 是否必选 参数类型 描述 description 否 String 参数解释: 用于记录该次结果执行的备注信息 约束限制: 不涉及 取值范围: 长度小于2000字符 默认取值: 不涉及 duration 否 Long 参数解释: 执行用例持续时长ms 约束限制: 更新状态时该字段必传 取值范围: 大于0整数,单位ms 默认取值: 不涉及 end_time 是 Long 参数解释: 用例结束执行的时间戳 约束限制: 在执行结束时该字段必传 取值范围: 符合时间戳格式 默认取值: 不涉及 execute_id 是 String 参数解释: 注册服务执行id 约束限制: 该值不允许重复 取值范围: 长度为1-32位字符(字母或数字) 默认取值: 不涉及 result_id 是 String 参数解释: 测试用例结果 约束限制: 不涉及 取值范围: 0-成功,1-失败,5-执行中,6-停止 默认取值: 不涉及 testcase_id 是 String 参数解释: 用例uri,测试用例唯一标识,测试用例详情页面地址栏url https://{host}/cloudtestportal/project/{project_id}/testcase?branch_id={branch_id}&case_id={case_id}&detail=base中case_id变量的值 约束限制: 不涉及 取值范围: 长度11-34位字符(字母和数字) 默认取值: 不涉及
-
响应示例 状态码:200 OK { "assigned_user" : { "id" : "ID", "name" : "名称" }, "execute_count" : 4, "extend_info" : { "author" : { "id" : "1111", "name" : "名称", "time" : "2000-01-01 00:00:00" }, "defect_list" : [ { "id" : "ID", "name" : "名称" } ], "description" : "描述信息", "domain" : { "id" : "ID", "name" : "名称" }, "fixed_version" : { "id" : "ID", "name" : "名称" }, "issue" : { "id" : "ID", "name" : "名称" }, "label_list" : [ { "id" : "ID", "name" : "名称" } ], "module" : { "id" : "ID", "name" : "名称" }, "preparation" : "前置条件", "steps" : [ { "expect_result" : "[\"\\u003cp\\u003e预期结果1\\u003c/p\\u003e\",\"\\u003cp\\u003e预期结果2\\u003c/p\\u003e\"]", "test_step" : "[\"\\u003cp\\u003e步骤描述1\\u003c/p\\u003e\",\"\\u003cp\\u003e步骤描述2\\u003c/p\\u003e\"]" } ], "test_version_id" : "97b82412f1", "updator" : { "id" : "1111", "name" : "名称", "time" : "2000-01-01 00:00:00" } }, "name" : "某个测试用例", "project_id" : "2394921", "rank_id" : "2", "result_id" : "0", "service_id" : 13, "status_id" : "1", "testcase_id" : "97b82412f1ca4628803b918c27ed09de", "testcase_number" : "1234" }
-
请求示例 更新自定义测试服务类型用例 put https://{endpoint}/v1/projects/efdb403066474ab08836b9eeaaa23bca/testcases/1234 { "extend_info" : { "assigned_id" : "b66aab5469cc416hestdda8e644a42a4", "defect_id_list" : [ { "issueId" : "018fd45b181c4f6aa94afac9f769d625", "title" : "缺陷1" }, { "issueId" : "018fd45b181c4f6aa94afac9f769d625", "title" : "缺陷2" }, { "issueId" : "018fd45b181c4f6aa94afac9f769d625", "title" : "缺陷3" } ], "description" : "这是一条描述信息", "fix_version_id" : "1234", "issue_id" : "b66aab5469cc4ab39b0dda8e644a42a4", "label_list" : [ "标签1" ], "module_id" : "b66aab5469cc4ab39b0dda8e644a42a4", "preparation" : "需要满足的前置条件", "status_id" : "0", "steps" : [ { "expect_result" : "[\"\\u003cp\\u003e预期结果1\\u003c/p\\u003e\",\"\\u003cp\\u003e预期结果2\\u003c/p\\u003e\"]", "test_step" : "[\"\\u003cp\\u003e步骤描述1\\u003c/p\\u003e\",\"\\u003cp\\u003e步骤描述2\\u003c/p\\u003e\"]" } ], "test_version_id" : "1.1.0.1" }, "name" : "testcase", "rank_id" : "2", "service_id" : 13, "testcase_number" : "1234" }
-
响应参数 状态码:200 表6 响应Body参数 参数 参数类型 描述 assigned_user AssignedUserInfo object 参数解释: 处理者信息 取值范围: 不涉及 execute_count Integer 参数解释: 测试用例执行次数 取值范围: 不涉及 extend_info ExtendInfo object 参数解释: 测试用例扩展信息 取值范围: 不涉及 name String 参数解释: 测试用例名称 取值范围: 不涉及 project_id String 参数解释: 软开云项目唯一标识 取值范围: 不涉及 rank_id String 参数解释: 测试用例等级 取值范围: 0|1|2|3|4 result_id String 参数解释: 测试用例执行结果 取值范围: 不涉及 service_id Integer 参数解释: 注册测试类型服务接口返回的服务id 取值范围: 不涉及 status_id String 参数解释: 测试用例状态 取值范围: 不涉及 testcase_id String 参数解释: 用例uri,测试用例唯一标识 取值范围: 11-34位字符(字母和数字) testcase_number String 参数解释: 测试用例编号 取值范围: 不涉及 表7 ExtendInfo 参数 参数类型 描述 author ExtendAuthorInfo object 参数解释: 创建者信息 取值范围: 不涉及 defect_list Array of AssignedUserInfo objects 参数解释: 缺陷信息 取值范围: 不涉及 description String 参数解释: 描述信息 取值范围: 不涉及 domain AssignedUserInfo object 参数解释: 租户信息 取值范围: 不涉及 fixed_version AssignedUserInfo object 参数解释: 迭代信息 取值范围: 不涉及 issue AssignedUserInfo object 参数解释: 需求信息 取值范围: 不涉及 label_list Array of AssignedUserInfo objects 参数解释: 标签信息 取值范围: 不涉及 module AssignedUserInfo object 参数解释: 模块信息 取值范围: 不涉及 preparation String 参数解释: 前置条件 取值范围: 不涉及 steps Array of ExternalServiceCaseStep objects 参数解释: 测试步骤 取值范围: 数组长度小于10 test_version_id String 参数解释: 测试版本号 取值范围: 不涉及 updator ExtendAuthorInfo object 参数解释: 更新者信息 取值范围: 不涉及 表8 AssignedUserInfo 参数 参数类型 描述 id String 参数解释: id信息 取值范围: 不涉及 name String 参数解释: 名称信息 取值范围: 不涉及 表9 ExternalServiceCaseStep 参数 参数类型 描述 expect_result String 参数解释: 测试用例预期结果信息 约束限制: 不涉及 取值范围: 0-500位字符 默认取值: 不涉及 test_step String 参数解释: 测试步骤描述信息 约束限制: 不涉及 取值范围: 0-500位字符 默认取值: 不涉及 表10 ExtendAuthorInfo 参数 参数类型 描述 id String 参数解释: id信息 取值范围: 不涉及 name String 参数解释: 名称信息 取值范围: 不涉及 time String 参数解释: 时间信息 取值范围: 不涉及 状态码:400 表11 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:401 表12 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:404 表13 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:500 表14 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及
-
URI PUT /v1/projects/{project_id}/testcases/{testcase_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 项目UUID,项目唯一标识,固定长度32位字符(字母和数字)。获取方式请参见获取项目ID。 约束限制: 不涉及 取值范围: 32位字符(字母和数字) 默认取值: 不涉及 testcase_id 是 String 参数解释: 用例uri,测试用例唯一标识,长度11-34位字符(字母和数字)。 约束限制: 不涉及 取值范围: 长度11-34位字符(字母和数字) 默认取值: 不涉及
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释: 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 约束限制: 不涉及 取值范围: 字符串长度不少于1,不超过100000 默认取值不涉及: 表3 请求Body参数 参数 是否必选 参数类型 描述 extend_info 否 ExternalServiceBizCase object 测试用例其他扩展信息 name 是 String 参数解释: 页面上显示的用例名称,长度为[3-128]位字符 约束限制: 不涉及 取值范围: 3-128位字符 默认取值: 不涉及 rank_id 否 String 参数解释: 测试用例等级,可选值为[0,1,2,3,4],不填时默认为2 约束限制: 不涉及 取值范围: 0|1|2|3|4 默认取值: 2 service_id 是 Integer 参数解释: 注册测试类型服务接口返回的服务id,取值范围为10-9999 约束限制: 不涉及 取值范围: 10-9999 默认取值: 不涉及 testcase_number 否 String 参数解释: 用例编号,不填该值时会自动生成,长度为[3-128]位字符 约束限制: 不涉及 取值范围: 3-128位字符 默认取值: 不涉及 表4 ExternalServiceBizCase 参数 是否必选 参数类型 描述 assigned_id 否 String 参数解释: 处理者id信息,长度0-32位 约束限制: 不涉及 取值范围: 0-32位字符 默认取值: 不涉及 defect_id_list 否 Array of strings 参数解释: 缺陷id信息,数组长度小于50个 约束限制: 不涉及 取值范围: 数组长度小于50 默认取值: 不涉及 description 否 String 参数解释: 测试用例描述信息,长度为[0-500]位字符 约束限制: 不涉及 取值范围: 0-500位字符 默认取值: 不涉及 fix_version_id 否 String 参数解释: 迭代号,长度为[0-32]位字符 约束限制: 不涉及 取值范围: 0-32位字符 默认取值: 不涉及 issue_id 否 String 参数解释: 用例关联的需求id信息,长度为[0-32]位字符 约束限制: 不涉及 取值范围: 0-32位字符 默认取值: 不涉及 label_list 否 Array of strings 参数解释: 标签名称列表,数组长度小于25 约束限制: 不涉及 取值范围: 数组长度小于25 默认取值: 不涉及 module_id 否 String 参数解释: 模块号,长度为[0-32]位字符 约束限制: 不涉及 取值范围: 0-32位字符 默认取值: 不涉及 preparation 否 String 参数解释: 执行该测试用例时需要满足的前置条件,长度为[0-500]位字符 约束限制: 不涉及 取值范围: 0-500位字符 默认取值: 不涉及 status_id 否 String 参数解释: 测试用例状态信息,(0-新建,5-设计中,6-测试中,7-完成) 约束限制: 不涉及 取值范围: 0-新建,5-设计中,6-测试中,7-完成 默认取值: 不涉及 steps 否 Array of ExternalServiceCaseStep objects 参数解释: 测试步骤,数组长度小于10 约束限制: 不涉及 取值范围: 数组长度小于10 默认取值: 不涉及 test_version_id 否 String 测试版本号,长度为[1-64]位字符 表5 ExternalServiceCaseStep 参数 是否必选 参数类型 描述 expect_result 否 String 参数解释: 测试用例预期结果信息 约束限制: 不涉及 取值范围: 0-500位字符 默认取值: 不涉及 test_step 否 String 参数解释: 测试步骤描述信息 约束限制: 不涉及 取值范围: 0-500位字符 默认取值: 不涉及
-
请求示例 质量报告看板统计 post https://{{endpoint}}/testreport/v4/testhub/projects/875ab809ae454c808b8565bd8695692d/data-dashboard/overview { "plan_id" : "vx785d2300op22kb6c", "branch_id" : "v9050000uop22kb6", "module_id" : "889109272257798144,-2", "fixed_version_id" : "884537509955936256,884770598208577537,-2" }
-
响应示例 状态码:200 OK { "defect" : { "total" : 3, "not_solved" : 3, "severity_number_list" : [ { "name" : "提示", "value" : 3 } ] }, "case_pass_rate" : { "pass_rate" : "99.5%", "result_number_list" : [ { "name" : "成功", "value" : 3000 }, { "name" : "未执行", "value" : 15 } ] }, "project_type" : "ipd", "issue_cover_rate" : { "summary" : { "testing" : 0, "finished" : 0, "not_tested" : 17, "total_number" : 17, "cover_rate" : "0.0%" } } }
-
响应参数 状态码:200 表4 响应Body参数 参数 参数类型 描述 defect DefectVo object 缺陷统计信息 case_pass_rate CasePassRateVo object 用例通过率信息 case_completion_rate CaseCompletionRateVo object 用例通过率信息 project_type String 参数解释: 项目类型 取值范围: 不涉及 issue_cover_rate IssueCoverRateVo object 参数解释: 需求覆盖率信息 取值范围: 不涉及 表5 DefectVo 参数 参数类型 描述 total Integer 参数解释: 缺陷数 取值范围: 不涉及 not_solved Integer 参数解释: 未关闭缺陷数 取值范围: 不涉及 severity_number_list Array of NameAndValueVo objects 参数解释: 组装缺陷每种重要程度的名称和对应的数目 取值范围: 不涉及 表6 CasePassRateVo 参数 参数类型 描述 pass_rate String 参数解释: 用例通过率 取值范围: 0%-100% result_number_list Array of NameAndValueVo objects 参数解释: 用户自定义结果对应的用例数目 取值范围: 不涉及 表7 CaseCompletionRateVo 参数 参数类型 描述 total Integer 参数解释: 总用例数 取值范围: 不涉及 completion_rate String 参数解释: 用例完成率 取值范围: 0%-100% status_number_list Array of NameAndValueVo objects 参数解释: 用户自定义状态对应的用例数目 取值范围: 不涉及 表8 NameAndValueVo 参数 参数类型 描述 name String 参数解释: 名称 取值范围: 不涉及 value Integer 参数解释: 值 取值范围: 不涉及 表9 IssueCoverRateVo 参数 参数类型 描述 epic CoverRateVo object 参数解释: epic类型需求覆盖率, 仅scrum项目返回 取值范围: 不涉及 feature CoverRateVo object 参数解释: feature类型需求覆盖率, 仅scrum项目返回 取值范围: 不涉及 story CoverRateVo object 参数解释: story类型需求覆盖率, 仅scrum项目返回 取值范围: 不涉及 summary CoverRateVo object 参数解释: summary类型需求覆盖率, 仅scrum项目返回 取值范围: 不涉及 表10 CoverRateVo 参数 参数类型 描述 testing Integer 统计测试中的需求 finished Integer 统计已完成的需求 not_tested Integer 统计未测试的需求 total_number Integer 计算需求总数 cover_rate String 需求覆盖率 状态码:400 表11 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:401 表12 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:404 表13 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及 状态码:500 表14 响应Body参数 参数 参数类型 描述 error_code String 参数解释 接口调用失败错误码 取值范围 不涉及 error_msg String 参数解释 接口调用失败错误信息 取值范围 不涉及
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值) 约束限制 不涉及 取值范围 字符串长度不少于1,不超过100000 默认取值 不涉及 表3 请求Body参数 参数 是否必选 参数类型 描述 plan_id 否 String 参数解释: 测试计划id 约束限制: plan_id和branch_id不能同时为空,优先取plan_id 取值范围: 不涉及 默认取值: 不涉及 branch_id 否 String 参数解释: 分支id 约束限制: plan_id和branch_id不能同时为空,优先取plan_id 取值范围: 不涉及 默认取值: 不涉及 module_id 否 String 参数解释: 模块ID 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及 fixed_version_id 否 String 参数解释: 筛选迭代ID 约束限制: 不涉及 取值范围: 不涉及 默认取值: 不涉及
-
HStore表的优势 HStore表采用附加delta表的形式,可以实现高效的存储与更新平衡,具体表现在以下几个方面: 批量数据处理: 批量插入数据直接写入CU 保持与传统列存一致的压缩效率 增量数据处理: 更新的列数据和小批量插入先序列化压缩 通过后台定期MERGE操作整合到主表CU 存储效率: 最大程度降低磁盘占用空间 保持列存格式的高压缩率特性 性能表现: 支持高并发更新操作入库 提供卓越的查询响应速度 适用场景 需要实时数据入库和实时查询 要求具备传统TP事务处理能力 高并发更新与查询并重的混合负载
-
使用建议 参数设置 为确保HStore表的查询性能与存储效率,推荐参数设置: 1 2 3 4 autovacuum_max_workers_hstore=3 # 专用于HStore的MERGE线程数 autovacuum_max_workers=6 # 系统总autovacuum线程数 autovacuum=true # 启用自动清理 enable_col_index_vacuum=on # 启用列索引清理 入库建议(推荐使用HStore_opt表) 更新操作: 避免直接使用UPDATE,改用UPSERT方式。 无并发冲突时开启enable_hstore_nonconflict_upsert_optimization参数。 有并发冲突时关闭上述参数,系统会自动选择最优路径。 删除操作: 确保执行计划走索引扫描。 采用JDBC batch方式入库效率最佳。 批量入库: 单次入库量超过100W/DN且数据无重复时,考虑使用MERGE INTO。 常规场景推荐使用UPSERT。 点查建议(推荐使用HStore_opt表) 在等值过滤条件使用最多且distinct值分布相对均匀的一个列上创建二级分区(distinct值的分布过于倾斜或者个数太少的列不要创建二级分区); 除了二级分区之外的等值过滤列,如果过滤条件涉及的列在查询中基本固定,使用cbtree索引,创建索引的列数不要超过5列; 除了二级分区之外的等值过滤列,如果过滤条件涉及的列在不同查询中变化,使用gin索引,创建索引的列数不要超过5列; 所有涉及等值过滤的字符串列,都可以建表时指定bitmap索引,不限列数,后续不可修改; 时间范围过滤的列,指定为分区列; 点查返回数据量超过10W/dn的场景,索引扫描很可能不如非索引扫描,建议使用guc参数enable_seqscan对比测试下性能,灵活选择。 索引相关 索引会占用额外存储空间 对性能提升有要求时创建索引 需要执行UPSERT操作时使用索引 有唯一性或接近唯一的点查需求使用索引。 MERGE相关 入库速度控制: 入库速度不得超过MERGE处理能力 通过控制入库并发防止Delta表膨胀 空间复用问题: Delta表空间复用受oldestXmin影响 长时间运行的事务可能导致空间复用延迟和膨胀
-
列存表存储机制 在 GaussDB (DWS)中,列存表以压缩单元(CU)为最小存储单位,每列默认以60000行当做一个CU进行存储。由于CU采用追加写模式,更新和删除操作不会修改原有CU。CU一旦生成,其数据便不可更改,无论插入1条还是60,000条数据,都会生成一个新的完整CU。 因此使用过程中会产生如下问题: 删除操作:仅在字典中将旧数据标记为作废,并未释放空间。 更新操作:标记旧数据删除后,将新记录写入新的CU。 空间问题:频繁更新/删除会导致表空间膨胀和大量存储空间无法有效利用。
-
自动分区创建规则 自动创建新分区 分区自动管理每隔period的时间就会自动创建分区,每次创建一个或多个时间范围为period的新分区,以推进最大的分区边界时间,保证其大于nowTime+30*period。由于每次创建分区时,都动态地为未来时间创建了预留分区,所以只要有一次自动创建新分区成功,就可以保证在未来30个period的时间之内,都不会出现实时数据因为没有对应分区而导入失败的情况。 图1 自动创建分区示意图 自动删除过期分区 边界时间早于nowTime-ttl的分区被认为是过期分区。分区自动管理每隔period的时间就会遍历检测所有分区,并删除其中的过期分区,如果所有的分区都是过期分区,则保留一个分区,并TRUNCATE该表。
-
约束限制 在使用分区管理功能时,需要满足如下约束: 不支持在小型机、加速集群、单机集群上使用。 支持在8.1.3及以上集群版本中使用。 仅支持行存范围分区表、列存范围分区表、时序表以及冷热表。 分区键必须保持唯一性,其支持的数据类型包括TIMESTAMP、TIMESTAMPTZ、DATE,以及在9.1.0.200版本中新增的INT、BIGINT、VARCHAR和TEXT类型。 不支持存在maxvalue分区。 (nowTime - boundaryTime) / period需要小于分区个数上限,其中nowTime为当前时间,boundaryTime为现有分区中最早的分区边界时间。 period、ttl取值范围为1hour ~ 100years。另外,在兼容Teradata或MySQL的数据库中,分区键类型为date时,period不能小于1day。 表级参数ttl不支持单独存在,必须要提前或同时设置period,并且要大于或等于period。 集群在线扩容期间,自动增加分区会失败,但是由于每次增分区时,都预留了足够的分区,所以不影响使用。 time_format选项不支持SET修改。当period被RESET时(表示已经关闭自动分区,会报出提示),此时可以RESET此选项。
-
步骤二:准备GaussDB(DWS)的样例数据 连接到GaussDB(DWS)的默认数据库gaussdb,创建一个名为dws_test的数据库。 1 CREATE DATABASE dws_test; 重新连接到新创建的数据库dws_test,创建名为dws_data的SCHEMA,同时在该SCHEMA下创建名为rpg_order的表,并插入4条数据。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE SCHEMA dws_data; CREATE TABLE dws_data.dws_order ( order_id VARCHAR, order_channel VARCHAR, order_time VARCHAR, cust_code VARCHAR, pay_amount DOUBLE PRECISION, real_pay DOUBLE PRECISION ) DISTRIBUTE BY HASH (order_id); INSERT INTO dws_data.dws_order VALUES ('202306270001', 'webShop', '2023-06-27 10:00:00', 'CUST1', 1000, 1000); INSERT INTO dws_data.dws_order VALUES ('202306270002', 'webShop', '2023-06-27 11:00:00', 'CUST2', 5000, 5000); INSERT INTO dws_data.dws_order VALUES ('202307100003', 'webShop', '2023-07-10 13:00:00', 'CUST1', 3000, 3000); INSERT INTO dws_data.dws_order VALUES ('202307200004', 'webShop', '2023-07-20 14:00:00', 'CUST2', 4000, 4000); 查询表数据,验证数据是否插入。 1 SELECT * FROM dws_data.dws_order; 创建使用Power BI的数据库用户,密码需自定义。 1 CREATE USER dws_thiru PASSWORD '{password}'; 授权该用户可访问对应Schema和表的权限。 1 2 GRANT USAGE ON SCHEMA dws_data TO dws_thiru; GRANT SELECT ON dws_data.dws_order TO dws_thiru;
-
步骤四:添加DWS的连接信息到Power BI的网关列表中 基于 数据仓库 安全角度考虑,GaussDB(DWS)不能直接暴露到公网上,因此Power BI无法一直与GaussDB(DWS)建立连接以实时刷新已发布的报表数据。此时,需参见以下步骤将DWS连接信息添加到Power BI的网关列表中。 访问链接,登录在线Power BI,输入电子邮件和密码,单击“提交”。 在Power BI在线页面,单击左侧“Workspaces”,单击已保存报表的工作区。 图18 选中工作区 单击需要设置的报表右上角的,单击“Settings”。 图19 设置报表 将“Use an On-premises or VNet data gateway”开关打开,并单击“Actions”下面的,在弹出的下拉信息中,单击“Add to gateway”。 图20 添加到网关 填写DWS的连接信息,如表1所示。 表1 添加网关信息 参数 描述 示例 Connection name 连接名称。 用户自定义 Server DWS的连接地址和端口。 192.168.0.196:8000 Database 待连接的DWS数据库名称。 dws_test Authentication method 鉴权方式。 Basic Username 数据库用户名称。 dws_thiru Password 数据库用户密码。 前面用户自定义的密码 Encrypted connection 是否加密连接。 Not encrypted Privacy level 隐私级别。 Organizational 图21 添加网关信息 核对参数无误,单击“Create”。上方新创建的连接信息将出现在网关列表中。 图22 添加网关成功 选择新创的连接名“pbogw_dws_cn1”,单击“Apply”。 网关映射成功。已完成报表与DWS的数据对接。 图23 网关映射成功
-
查询数据库大小 查询数据库的大小。 1 select datname,pg_size_pretty(pg_database_size(datname)) from pg_database; 示例: 1 2 3 4 5 6 7 select datname,pg_size_pretty(pg_database_size(datname)) from pg_database; datname | pg_size_pretty -----------+---------------- template1 | 61 MB template0 | 61 MB postgres | 320 MB (3 rows)
-
查询指定SCHEMA下的表大小及表对应索引的大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 SELECT t.tablename, indexname, c.reltuples AS num_rows, pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size, pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size, CASE WHEN indisunique THEN 'Y' ELSE 'N' END AS UNIQUE, idx_scan AS number_of_scans, idx_tup_read AS tuples_read, idx_tup_fetch AS tuples_fetched FROM pg_tables t LEFT OUTER JOIN pg_class c ON t.tablename=c.relname LEFT OUTER JOIN ( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x JOIN pg_class c ON c.oid = x.indrelid JOIN pg_class ipg ON ipg.oid = x.indexrelid JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid ) AS foo ON t.tablename = foo.ctablename WHERE t.schemaname='public' ORDER BY 1,2;
-
查询数据库 使用gsql的\l元命令查看数据库系统的数据库列表。 1 2 3 4 5 6 7 8 9 10 \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+-----------+---------+-------+------------------- gaussdb | Ruby | SQL_ASCII | C | C | template0 | Ruby | SQL_ASCII | C | C | =c/Ruby + | | | | | Ruby=CTc/Ruby template1 | Ruby | SQL_ASCII | C | C | =c/Ruby + | | | | | Ruby=CTc/Ruby (3 rows) 如果用户在数据库安装的时候没有指定LC_COLLATE、LC_CTYPE参数,则LC_COLLATE、LC_CTYPE参数的默认值为C。 如果用户在创建数据库时没有指定LC_COLLATE、LC_CTYPE参数,则默认使用模板数据库的排序顺序及字符分类。 详细内容可参见CREATE DATABASE参数说明。 通过系统表pg_database查询数据库列表。 1 2 3 4 5 6 7 SELECT datname FROM pg_database; datname ----------- template1 template0 gaussdb (3 rows)
-
查询表分布键 使用PG_GET_TABLEDEF函数查询某个表(例如表名为customer_t1)的分布键,回显信息中的“HASH(c_last_name)”表示该表分布方式为HASH,且分布键为c_last_name。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SELECT * FROM PG_GET_TABLEDEF('customer_t1'); pg_get_tabledef ----------------------------------------------------------------------------------- SET search_path = tpchobs; + CREATE TABLE customer_t1 ( + c_customer_sk integer, + c_customer_id character(5), + c_first_name character(6), + c_last_name character(8) + ) + WITH (orientation=column, compression=middle, colversion=2.0, enable_delta=false)+ DISTRIBUTE BY HASH(c_last_name) + TO GROUP group_version1; (1 row) 批量查询多个表的分布方式和分布键,使用以下SQL语句。语句末尾的dbadmin替换为实际的表owner,以下示例为查询dbadmin创建的所有表的分布方式和分布键。 下图回显的distribute_type表示分布方式,例如HASH;distributekey表示分布键,例如ca_address_sk。 1 2 3 4 5 6 7 8 9 10 11 12 13 SELECT pg_catalog.pg_get_userbyid(pc.relowner) AS tableowner, pn.nspname AS schemaname, pc.relname AS tablename, CASE pxc.pclocatortype WHEN 'N' THEN 'ROUND ROBIN' WHEN 'R' THEN 'REPLICATION' WHEN 'H' THEN 'HASH' WHEN 'M' THEN 'MODULO' END AS distribute_type, pc.relkind, getdistributekey(pxc.pcrelid) AS distributekey, pc.reloptions FROM pgxc_class pxc, pg_class pc,pg_namespace pn WHERE pxc.pcrelid = pc.oid AND pn.oid=pc.relnamespace AND tableowner='dbadmin';
-
快速查询全库中所有表占用空间大小 8.1.3及以上集群版本在大集群大数据量(表数量大于1000)场景下,如果进行全库表查询,建议优先使用pgxc_wlm_table_distribution_skewness视图,该视图可以查到全库内的各表空间使用情况以及数据倾斜分布情况。其中,total_size和avg_size的单位为字节(bytes)。 1 2 3 4 5 6 7 SELECT *, pg_size_pretty(total_size) as tableSize FROM pgxc_wlm_table_distribution_skewness ORDER BY total_size desc; schema_name | table_name | total_size | avg_size | max_percent | min_percent | skew_percent | tablesize --------------------+---------------------------------------------------+------------+-----------+-------------+-------------+--------------+----------- public | history_tbs_test_row_1 | 804347904 | 134057984 | 18.02 | 15.63 | 7.53 | 767 MB public | history_tbs_test_row_3 | 402096128 | 67016021 | 18.30 | 15.60 | 8.90 | 383 MB public | history_tbs_test_row_2 | 401743872 | 66957312 | 18.01 | 15.01 | 7.47 | 383 MB public | i_history_tbs_test_1 | 325263360 | 54210560 | 17.90 | 15.50 | 6.90 | 310 MB 查询结果显示history_tbs_test_row_1表占用空间最大,且数据有一定的倾斜。 视图pgxc_wlm_table_distribution_skewness需要打开GUC参数use_workload_manager和enable_perm_space才能进行查询,在低版本查询全库时建议使用table_distribution()函数,如果仅查询某一张表的大小,推荐使用table_distribution(schemaname text, tablename text)函数。 8.2.1及以上集群版本中,GaussDB(DWS)已支持pgxc_wlm_table_distribution_skewness视图,可直接查询。 在8.1.3集群版本中,可使用如下定义创建视图后再进行查询: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 CREATE OR REPLACE VIEW pgxc_wlm_table_distribution_skewness AS WITH skew AS ( SELECT schemaname, tablename, pg_catalog.sum(dnsize) AS totalsize, pg_catalog.avg(dnsize) AS avgsize, pg_catalog.max(dnsize) AS maxsize, pg_catalog.min(dnsize) AS minsize, (maxsize - avgsize) * 100 AS skewsize FROM pg_catalog.gs_table_distribution() GROUP BY schemaname, tablename ) SELECT schemaname AS schema_name, tablename AS table_name, totalsize AS total_size, avgsize::numeric(1000) AS avg_size, ( CASE WHEN totalsize = 0 THEN 0.00 ELSE (maxsize * 100 / totalsize)::numeric(5, 2) END ) AS max_percent, ( CASE WHEN totalsize = 0 THEN 0.00 ELSE (minsize * 100 / totalsize)::numeric(5, 2) END ) AS min_percent, ( CASE WHEN totalsize = 0 THEN 0.00 ELSE (skewsize / maxsize)::numeric(5, 2) END ) AS skew_percent FROM skew;
-
步骤一:准备OBS数据 下载数据样例文件。 登录OBS控制台,单击桶列表中已创建好的dws-demo01桶名称。 左侧选择“对象”,单击“新建文件夹”,命名为obs-dws。 进入到obs-dws的文件夹下,单击“上传对象”,将1下载的样例文件上传到obs-dws文件夹下。 获取OBS的Endpoint。 回到obs-dwst桶名的主页面,左侧选择“概览”。 在“ 域名 信息”中记录Endpoint,例如obs.cn-north-4.myhuaweicloud.com。
-
步骤二:创建OBS的外部服务器和外表 外部服务器(Foreign server)是数据仓库/数据库系统中用于定义和管理对外部数据源(其他数据库、文件系统等)的逻辑连接对象。它的主要作用是支持异构分布式数据的联邦访问,是实现数据整合、实时分析和数据虚拟化的重要工具。 创建OBS外部Server,通过在Server中指定OBS的Endpoint,AK、SK,才可以基于外部Server访问OBS桶数据。 连接数据库后,执行以下SQL语句创建外部服务器。 其中ADDRESS填写5获取地址,AC CES S_KEY、 SECRET_ACCESS_KEY分别填写准备工作中获取账户的AK和SK。 1 2 3 4 5 6 7 CREATE SERVER obs_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( ADDRESS 'obs.aaaaa.bbbbb.com', ACCESS_KEY 'xxxxxxxxx', SECRET_ACCESS_KEY 'yyyyyyyyyyyyy', TYPE 'OBS' ); 执行以下SQL,创建名为dws_data的Schema。 1 CREATE SCHEMA dws_data; 切换到新创的Schema下,创建外表。 注意,foldername '/obs-demo01/obs-dws/'请替换为数据文件实际存放的OBS路径,且确保OBS桶与DWS集群在同一个区域下,本例为obs-demo01桶名下的obs-dws文件夹。 SERVER obs_server为1创建的外部服务器实际的名称,本例为obs_server。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE FOREIGN TABLE dws_data.obs_pq_order ( order_idVARCHAR(14)PRIMARY KEY NOT ENFORCED, order_channel VARCHAR(32), order_timeTIMESTAMP, cust_codeVARCHAR(6), pay_amountDOUBLE PRECISION, real_payDOUBLE PRECISION ) SERVER obs_server OPTIONS ( foldername '/obs-demo01/obs-dws/', format 'parquet', encoding 'utf8' ) READ ONLY DISTRIBUTE BY roundrobin;
-
步骤四:将GaussDB(DWS)某张表的数据导出到OBS桶 创建一张新的本地表。 1 2 3 4 5 6 7 CREATE TABLE dws_data.dws_order ( order_idVARCHAR(14)PRIMARY KEY, order_channel VARCHAR(32), order_timeTIMESTAMP, cust_codeVARCHAR(6), pay_amountDOUBLE PRECISION, real_payDOUBLE PRECISION ); 插入三条数据。 1 2 3 4 INSERT INTO dws_data.dws_order VALUES ('20230627000001', 'webShop', TIMESTAMP '2023-06-27 10:00:00', 'CUST1', 1000, 1000) , ('20230627000002', 'webShop', TIMESTAMP '2023-06-27 11:00:00', 'CUST2', 5000, 5000) , ('20240309000003', 'webShop', TIMESTAMP '2024-03-09 13:00:00', 'CUST1', 2000, 2000); 创一张外表,用于导出数据到OBS桶。 其中foldername '/obs-demo01/obs-dws/'请替换为实际需要导出的OBS桶路径。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE FOREIGN TABLE dws_data.obs_orc_order ( order_idVARCHAR(14)PRIMARY KEY NOT ENFORCED, order_channel VARCHAR(32), order_timeTIMESTAMP, cust_codeVARCHAR(6), pay_amountDOUBLE PRECISION, real_payDOUBLE PRECISION ) SERVER obs_server OPTIONS ( foldername '/obs-demo01/obs-dws/', format 'ORC', encoding 'utf8' ) WRITE ONLY DISTRIBUTE BY roundrobin; 执行以下语句,将本地表数据写入OBS外表。 1 2 3 INSERT INTO dws_data.obs_orc_order ( order_id, order_channel, order_time, cust_code, pay_amount, real_pay ) SELECT order_id, order_channel, order_time, cust_code, pay_amount, real_pay FROM dws_data.dws_order; 查询外表,数据写入成功。 1 SELECT * FROM dws_data.obs_orc_order; 成功写入后,您可以登录OBS控制台,查看OBS桶对应路径下是否有数据文件存在。 同时可以验证下,是否允许同一张外表下额外插入数据。 1 2 3 INSERT INTO dws_data.obs_orc_order ( order_id, order_channel, order_time, cust_code, pay_amount, real_pay ) SELECT order_id, order_channel, order_time, cust_code, pay_amount, real_pay FROM dws_data.dws_order; 结果会报错:“the file path specified in the foreign table is not empty”,但如果删除外表中指定的OBS文件路径下的数据文件后,可以重新插入数据。 执行以下语句,验证下是否允许更新和删除外表数据。 1 2 UPDATE dws_data.obs_orc_order SET pay_amount = 3000, real_pay = 3000 WHERE order_id = '20240309000003'; DELETE FROM dws_data.obs_orc_order WHERE order_id = '20240309000003'; 从显示结果看,不支持更新和删除外表数据。
-
如何群发短信? 准备群发短信相关数据: 已创建短信应用,并获取APP_Key、APP_Secret和APP接入地址。 (仅国内短信)已申请短信签名,获取签名通道号。 已申请短信模板,并获取模板ID。 您可以使用如下三种方式群发短信: 调用发送短信API,向单个或多个用户发送相同内容的短信。 调用发送分批短信API,向多个用户发送不同内容的短信。 通过群发助手提交发送任务。 群发助手暂不支持发送验证码类短信。 父主题: 短信发送相关
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- ...
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333