华为云用户手册
-
操作步骤 进入创建“设备维修管理系统”应用中创建的应用。 在“Equipment”目录中,将鼠标放在“Script”上,单击界面上出现的“+”,在弹出菜单中选择“脚本”。 选中“创建一个新脚本”,在“名称”文本框中输入“deleteEquipment”,单击“添加”。 当编辑已有脚本时,为防止编辑时多人篡改,编辑前请单击进行锁定。 在代码编辑器中插入如下脚本代码。 脚本代码中,“HW__”前缀由租户命名空间namespace决定,请根据实际情况进行替换。 //本脚本用于删除设备 import * as db from 'db';//导入处理object相关的标准库 import * as context from 'context';//导入上下文相关的标准库 //定义入参结构,入参包含1个参数:Equipment对象,为必填字段 @action.object({ type: "param" }) export class ActionInput { @action.param({ type: 'String', required: true, label: 'String' }) id: string; } //定义出参结构,出参包含1个参数,Equipment的记录id @action.object({ type: "param" }) export class ActionOutput { @action.param({ type: 'String' }) id: string; } //使用数据对象HW__Equipment__ CS T @useObject(['HW__Equipment__CST']) @action.object({ type: "method" }) export class DeleteEquipment { //定义接口类,接口的入参为ActionInput,出参为ActionOutput @action.method({ input: 'ActionInput', output: 'ActionOutput' }) public deleteEquipment(input: ActionInput): ActionOutput { let out = new ActionOutput(); //新建出参ActionOutput类型的实例,作为返回值 let error = new Error(); //新建错误类型的实例,用于在发生错误时保存错误信息 try { let id = input.id; let s = db.object('HW__Equipment__CST'); //获取HW__Equipment__CST这个Object的操作实例 //查询条件 let condition = { "conjunction": "AND", "conditions": [{ "field": "id", "operator": "eq", "value": id }] }; let isDeleted = s.deleteByCondition(condition); if (isDeleted) { out.id = id; } else { error.name = "EQERROR"; error.message = "删除设备失败!"; throw error; } } catch (error) { console.error(error.name, error.message); error.Error(error.name, error.message); } return out; } } 单击脚本编辑器上方的,保存脚本。
-
实现“生成工单” 通过定义“提交”按钮的“点击”事件,实现生成工单的能力。定义“取消”按钮的“点击”事件,返回工单列表页面(客服人员)。 定义“提交”按钮“点击”事件。 在“HW__createWorkOrder”页面的“设计视图”下,选中“提交”按钮。 在右侧“事件”页签中,单击“点击”后的“+”。 在“添加动作”弹窗的“自定义动作”中,输入如下事件代码。 事件代码中,“HW”为命名空间的名称,请根据实际需求进行替换。 // 配置页面的bpm参数bp.name,通过submitTask方法启动BPM并提交工单数据workOrderData到BPM context.$page.params["bp.name"] = "HW__WorkOrderBpm"; let basicInfo = $model.get('basicInfo').getData(); basicInfo.HW__workOrderId__CST = basicInfo.HW__type__CST + "_" + new Date().getTime(); let workOrderData = { "workOrderData": basicInfo }; context.$bp.submitTask(workOrderData).then(function (resp) { context.$page.loadStdPage('HW__workOrderList'); }); 单击“创建”,退出事件编排窗口。 定义“取消”按钮的“点击”事件。 在“设计视图”中,选中“取消”按钮。 参考“提交”按钮,给“取消”按钮定义以下代码事件 //返回工单列表页面 context.$page.loadStdPage('HW__workOrderList'); 单击“创建”,退出事件编排窗口。
-
验证 页面组装及事件添加完成后,需要在预览页面,初步检查页面预览效果,验证页面的数据绑定及事件代码正确性。当前工单流转相关的BPM及工单列表尚未创建,因此暂不验证“保存”、“取消”按钮。 在“HW__createWorkOrder”页面中,单击界面上方的,进入预览页面。 系统会弹出“HW__createWorkOrder”预览页面。 在“基本信息”区域的“设备名称”下拉框中,选中一个设备名称,检查“设备详情”区域是否显示了对应的设备详情。显示正确,则说明组件与模型的绑定,以及下拉框事件执行正确。如不显示,则需要检查相关事件代码。 检查“工单类型”、“优先级”下拉框中,是否有值,显示正确则说明下拉框属性设置正确。
-
实现“根据设备编码自动加载工单其他信息” 在“我的应用”中,单击“设备维修管理系统”,进入应用。 单击打开“HW__createWorkOrder”页面。 添加页面事件代码。 在“设计视图”中,选中最外层的“页面”,也可以直接单击组件导航,快速定位。 在右侧“事件”页签中,单击“加载”后的“+”,为页面添加事件代码。 在“添加动作”弹窗的“自定义动作”中,输入如下事件代码。 $model.ref('equipmentOptions').setData({inputParam:{}}); $model.ref('equipmentOptions').run().then(function(response){ if(response.equipList){ $model.ref("equipmentList").setData(response.equipList); } }); 单击“创建”,退出事件编排窗口。
-
实现“显示设备详细信息” 通过定义“基本信息”区域“设备名称”下拉框的“数据改变”事件,可以实现根据所选设备,在“设备详情”区域显示设备信息。 在“HW__createWorkOrder”页面中,选中“设备名称”下拉框。 图1 添加“数据改变”事件代码 在右侧“事件”页签中,单击“数据改变”后的“+”。 在“添加动作”弹窗的“自定义动作”中,输入如下事件代码。 事件代码中,“HW”为命名空间的名称,请根据实际需求进行替换。 let equipment = $model.ref("basicInfo").getData(); let equipmentId = equipment.HW__equipmentId__CST; let queryEquipParam = {"id" : equipmentId}; $model.ref('equipmentOptions').setData({inputParam: queryEquipParam}); $model.ref('equipmentOptions').run().then(function (response) { if (response.equipment) { $model.ref("equipmentInfo").setData(response.equipment); } }); 单击“创建”,退出事件编排窗口。
-
验证并发布 测试新增逻辑能否正常执行。 单击编辑器上方的,执行脚本。 在界面底部输入测试数据,单击测试窗口右上角执行图标。 测试报文样例如下,equipmentId可参考创建“编辑设备”脚本验证新增设备时生成的设备ID: { "equipmentId": "cQue000000e1qnhgtCng" } 执行成功,会在“输出”页签返回查询结果,返回结果是上一节中新增的设备信息。 图1 查询返回的设备信息 测试成功,单击编辑器上方的,启用脚本。
-
操作步骤 进入创建“设备维修管理系统”应用中创建的应用。 在“Equipment”中,将鼠标放在“Script”目录上,单击界面上出现的“+”,选择“脚本”。 在弹窗中,选中“创建一个新脚本”,在“名称”文本框中输入“queryEquipmentDetail”,单击“添加”。 系统实际创建的脚本名称为“HW__queryEquipmentDetail”,“HW__”前缀由租户命名空间namespace决定。新建创建的脚本,默认是当前用户锁定状态,可以进行编辑保存等操作。 当编辑已有脚本时,为防止编辑时多人篡改,编辑前请单击进行锁定。 在代码编辑器中插入如下脚本代码。 脚本代码中,“HW__”前缀由租户命名空间namespace决定,请根据实际情况进行替换。 /***************************** * 本脚本用于按设备ID查询设备详情 * ***************************/ import * as db from 'db';//导入处理object相关的标准库 import * as context from 'context';//导入上下文相关的标准库 //定义入参结构 @action.object({ type: "param" }) export class ActionInput { @action.param({ type: 'String', required: true }) equipmentId: string;//设备ID } //定义出参结构 @action.object({ type: "param" }) export class ActionOutput { @action.param({ type: 'Any', label: 'equipment' }) equipment: object;//设备对象 } @useObject(['HW__Equipment__CST'])//使用数据库对象HW__Equipment__CST @action.object({ type: "method" }) export class QueryEquipmentDetail { @action.method({ input: 'ActionInput', output: 'ActionOutput' }) public queryEquipmentDetail(input: ActionInput): ActionOutput { let out = new ActionOutput(); //新建出参ActionOutput类型的实例,作为返回值 let error = new Error(); //新建错误类型的实例,用于在发生错误时保存错误信息 try { //必填校验 if (!input.equipmentId || input.equipmentId == "") { error.name = "EQM"; error.message = "Equipment id is required."; throw error; } //获取HW__Equipment__CST这个Object的操作实例 let s = db.object('HW__Equipment__CST'); //查询字段(全部) let option = {}; //查询条件 let condition = { "conjunction": "AND", "conditions": [{ "field": "id", "operator": "eq", "value": input.equipmentId }] }; //调用按条件查询Equipment__CST的接口 let record = s.queryByCondition(condition, option); //如果查询到数据 if (record && record[0]) { //拼接前台省市区级联选择器的数据模型 let cascaderAddress = []; if (record[0].HW__installationSiteProvince__CST) { cascaderAddress.push(record[0].HW__installationSiteProvince__CST); if (record[0].HW__installationSiteCity__CST) { cascaderAddress.push(record[0].HW__installationSiteCity__CST); if (record[0].HW__installationSiteArea__CST) { cascaderAddress.push(record[0].HW__installationSiteArea__CST); } } } record[0].cascaderAddress = cascaderAddress; //将结果挂入输出对象中 out.equipment = record[0] } } catch (error) { console.error(error.name, error.message); context.setError(error.name, error.message); } return out; } } 单击编辑器上方的,保存脚本。
-
验证 您可以用对象的页面布局Layout能力,检查对象的定义是否符合预期。 创建对象时,系统会自动为对象创建两个页面布局: 设备详情页面Equipment Detail:显示对象中单条记录的详细信息。如果手工创建字段时选中了“添加本字段到该页面布局”,设备详情页面包含name和添加的自定义字段。脚本创建的默认不添加,但是不影响后续的操作。 设备列表页面Equipment Records:显示对象中的记录列表。列表页面中默认只显示了name字段(设备名称)。因为后续章节的测试中,经常需要检查记录ID、设备编码和设备名称,所以将其他几个字段也添加到列表页面中。 修改设备对象的列表页面布局。 单击设备对象HW__Equipment__CST的“布局”页签。 单击“Equipment Records”,打开页面详情。 图8 对象布局 选中列表“表格”,如图9所示,再单击界面右侧“属性”页签中的。 如果当前页面已锁定,请先单击,解锁页面。 图9 绑定Records 单击Records后的编辑图标。 图10 编辑Records 选择对象及要显示在页面上的字段,如图11所示,单击“下一步”,再单击“确定”。 图11 为Records添加字段 在图10对话框中,单击选中“Records”,再单击“确定”。 单击编辑器上方的,保存设置。 预览、测试对象。 单击页面上的,进入预览页面。 单击“添加”,再输入任意测试数据,单击“保存”。 系统返回页面,并显示新插入的数据,则表示对象创建成功。
-
背景与知识 “用户管理”功能包括业务新增业务用户、查看删除业务用户、添加业务用户权限集三部分。 在业务场景中,会区分不同业务用户,业务用户对应了不同的用户权限,本示例应用中包含的业务用户,即是使用设备管理应用的用户,分别是客服人员、派单员及维修人员。 在华为云Astro轻应用开发的应用的所有业务用户,最终都会存储到平台的业务用户表中,即PortalUser表。业务用户在登录应用后的访问权限是通过Profile进行控制管理的,可基于平台预置的Portal User Profile进行自定义业务用户权限。 图1 业务用户 父主题: 用户管理功能开发
-
步骤3:创建空白应用 创建应用是在华为云Astro轻应用开发环境开发项目的第一步,也是端到端构建软件应用的入口。 以华为账号登录华为云Astro轻应用服务控制台。 在实例列表中,单击“进入首页”,进入应用开发页面。 在左侧导航栏中,单击“应用”,进入低代码应用页面。 单击新建低代码应用后的,进入新建空白应用页面。 图9 进入创建轻应用入口 在新建低代码应用中,选择“标准应用”,单击“确定”。 设置应用标签和名称,此处均设置为BTA。 图10 设置轻应用标签和名称 图10名称前模糊掉的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改,请谨慎定义。 单击“新建”,进入BTA新版应用设计器。 图11 BTA新版应用设计器
-
操作流程 在华为云Astro轻应用中开发出差审批应用的流程,如图2所示。 图2 出差审批应用开发流程 步骤一:添加业务用户并进行授权 本示例中的应用包括主管和员工两种角色的业务用户。创建出差审批应用前,需要将员工、主管添加到华为云Astro轻应用中。 步骤二:创建队列 队列是华为云Astro轻应用中的一种成员集,即在实际业务场景中,用来记录一类具有相同权限和任务对象的成员集。本示例中需要创建2个队列,用于在工作流中区分不同角色在流程中处理的任务。 步骤3:创建空白应用 创建应用是在华为云Astro轻应用开发环境开发项目的第一步,也是端到端构建软件应用的入口。 步骤四:创建工作流 基于工作流中HR类流程模板,创建工作流,并设置各泳道责任人。 步骤五:配置BTA应用 在应用配置中,定义出差审批应用的导航菜单栏。 步骤六:业务功能调测 验证出差审批流程是否按照预期执行,即员工提交出差申请,主管对申请进行审批,分别测试审批通过、拒绝与重填。
-
步骤四:创建工作流 基于工作流中HR类流程模板,创建工作流,并设置各泳道责任人。 创建工作流。 在BTA新版应用设计器的“开始”页面中,单击“新建工作流”。 在新建工作流页面,单击“基于模板”,设置标签、名称和描述信息。 图12 添加工作流 单击“选择模板”,选择“HR”中的“出差申请”模板后,单击“创建”。 图13 选择出差申请模板 创建完成后,自动进入出差申请工作流编辑页面。在设置工作流前,您可以先通过表2了解出差申请工作流中各节点的功能。 图14 出差申请工作流开发页面 表2 出差申请工作流中各节点功能介绍 编号 节点 功能说明 1 提交申请 开始节点,调用一个标准表单TravelRequest,供出差申请人提交出差申请。 2 数据映射 将出差申请标准表单中的请求字段映射到对象中。 3 申请审批 用户任务,将对象中的字段渲染到标准表单Approve并且确定审批人。 4 审批网关 审批人进行通过或拒绝两种操作。 5 数据映射 申请拒绝后,将Approve标准表单中的字段映射回TravelRequest标准表单。 6 重新填写请求 刷新TravelRequest表单中的内容,重新提交出差申请。 7 数据映射 将TravelRequest表单中的字段值映射到Approve中,重新发起审批申请。 8 发送邮件 审批通过,发送邮件将结果告知出差申请人。 9 流程结束 结束节点,执行到此整个工作流执行结束。 设置工作流,配置各泳道处理人。 在进行工作流设计前,请先参照工作流中内容对工作流设计界面进行全面的了解。 在工作流开发页面,单击“Process Owner”泳道,配置工作队列为“Employee”。 图15 配置员工为申请人 单击“Reviewer”泳道,配置工作队列为“Manager”。 图16 配置主管为审批人 单击泳道“Process Owner”上的“重新填写请求”用户任务元素,设置任务标题为“待重新提交”。 执行该操作的目的是,后续在“我的待办”中可以看到“待重新提交”的任务状态。 图17 配置为待重新提交 单击泳道“Reviewer”上的“申请审批”用户任务元素,设置任务标题为“待主管审批”。 执行此操作的目的是,后续在“我的待办”中可以看到“待主管审批”的任务状态。 图18 配置为待主管审批 单击,保存工作流。 单击,启用工作流。
-
方案概述 华为云Astro轻应用低代码平台基于业界BPMN 2.0标准,实现了自己的业务流程管理系统,即工作流。华为云Astro轻应用中的工作流是一套图形化的流程编排引擎,着重于构建带有用户交互行为的业务流程,例如审批流、工单派发流程等。本实践通过创建一个出差审批应用,帮助您快速熟悉华为云Astro轻应用中的工作流。 员工出差是企业运营中最常见的业务场景,涉及到一系列的管理流程,例如出差申请、审批、行程安排、费用报销等。本实践以一个简单的员工出差场景,即员工在出差前需要提交一个出差申请审批的电子流程,员工提交出差申请后,主管处理审批或拒绝提交人申请,向您介绍如何使用华为云Astro轻应用中的工作流。本示例中的出差审批应用主要包括如下功能: 基于工作流模板创建出差电子流。 发送邮件。 图1 出差审批应用最终效果图
-
了解高级页面 华为云Astro轻应用前端页面有标准页面、高级页面和表单三种。本节主要带您了解、学习并使用高级页面。 标准页面:对于一般的业务应用系统,其功能主要是针对业务数据的增、删、改、查,前端界面的样式相对简单的页面场景,此时,推荐您使用平台提供的“标准页面”。您可以通过拖、拉、拽页面组件,再加上少量事件代码,即可拼装出所需页面,具体介绍请参见标准页面。 高级页面:对于一些样式比较复杂的页面,例如网站、电商、园区大屏等,您可以使用平台提供的“高级页面”。 高级页面是由一个或者多个Widget(即组件)拼装而成。如图1所示,组件是可复用的页面组成元素,一个页面由一个或多个组件拼装而成。如果将一个页面看成拼图游戏的完整图案,那么组件就相当于拼图的每一小块。 图1 页面与widget(组件)的关系 Widget的运行依赖Library(库),如果缺少相应的Library(库),则Widget不能正常运行。因此在加载widget前,需要先加载必要的Library。 在操作前端页面时,经常会需要调用后台数据,例如即将开发的登录页面,需要获取业务用户信息。这时需要通过桥接器调用后台的服务编排、Script等获取后台数据。因此,在引用widget时,经常需要配置桥接器。 华为云Astro轻应用高级页面中的组件分为系统预置组件和自定义组件: 系统预置组件,可以直接使用。 登录组件属于自定义组件。本示例中已经为您提供了开发好的组件包,您只需要上传到站点中即可使用。自定义登录组件的开发方法,请参考(可选)开发自定义登录组件。
-
应用场景 在企业运营过程中,经常会遇到一些需要快速处理或者特殊关注的任务。例如,某些紧急项目需要快速审批,以便尽快启动。当企业重要客户提出需求时,需要快速响应以满足客户需求。或者在某些特殊情况下,高层领导需要具有优先审批权。 在华为云Astro轻应用的工作流中,通过设置用户任务的优先审批功能,可轻松实现上述功能。用户任务用来表示业务流程中由用户参与完成的工作。当引擎处理到该节点时,给指定的用户或者一组用户创建待处理的任务项,等待用户的处理。关于用户任务图元的详细介绍,可参见为华为云Astro轻应用工作流添加活动类图元。 本实践将为您介绍在华为云Astro轻应用工作流中,如何通过配置用户任务的审批动作和终止动作,在会签过程中实现优先级审批功能。
-
步骤一:创建审批流对象 创建一个审批流对象,用于存储用户提交的申请数据。 创建一个低代码应用。 参考授权用户使用华为云Astro轻应用并购买实例中操作,申请华为云Astro轻应用免费试用或购买商业实例。 实例购买后,在华为云Astro轻应用服务控制台的“主页”中,单击“进入首页”,进入应用开发页面。 在“应用”中,单击“新建低代码应用”或单击,进入新建低代码应用页面。 在新建低代码应用页面,应用类型选择“标准应用”,单击“确定”。 输入应用的标签和名称,单击“新建”,即可进入应用设计器。 图2 创建一个空白应用 表1 新建空白应用参数说明 参数 说明 示例 标签 新建应用的标签,长度不能超过80个字符。标签是应用在系统中的唯一标识,创建后不支持修改。 我的第一个应用 名称 新建应用的名称,输入标签值后单击该参数的输入框,系统会自动生成应用的名称,同时自动在名称前,添加命名空间__。命名要求如下: 长度不能超过31个字符,包括前缀命名空间的长度。 名称前的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不允许以下划线结尾。 A 在应用设计器的左侧导航栏中,选择“数据”,单击对象中的“+”。 设置对象的名称和唯一标识,单击“确定”。 图3 创建对象processDemo 表2 新建processDemo对象参数说明 参数 说明 示例 对象名称 新建对象的名称,创建后可修改。 取值范围:1~80个字符。 processDemo 唯一标识 新建对象在系统中的标识,创建后不支持修改。命名要求如下: 长度不能超过63个字符,包括前缀命名空间的长度。 标识前模糊掉的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。 必须以英文字母开头,只能由英文字母,数字和下划线组成,且不能以下划线结尾。 processDemo 在已创建的对象中,单击,进入对象详情页面。 在“字段”页签,单击“添加”,为对象添加apply字段。 图4 添加apply字段 表3 添加apply字段参数说明 参数 说明 示例 显示名称 新建字段的名称,创建后可修改。 取值范围:1~63个字符。 申请标题 唯一标识 新建字段在系统中的标识,创建后不支持修改。命名要求如下: 长度不能超过63个字符,包括前缀命名空间的长度。 必须以英文字母开头,只能由英文字母,数字和单下划线组成,且不能以下划线结尾。 apply 字段类型 单击,在弹出的页面中,根据页面提供的参数解释,选择新建字段所属的类型。 文本 数据长度 允许输入字段的长度。 64 在“字段”页签,再次单击“添加”按钮,添加表4中字段。 图5 processDemo对象中包含字段 表4 待添加字段 显示名称 唯一标识 字段类型 申请类型 type 文本 申请时间 deadline 日期 流程标识 bpmId 文本 流程状态 bpmState 文本
-
步骤三:从第三方数据库获取数据 在自定义连接器的“动作”页签中,单击6中添加的动作,进入动作列表页。 图18 单击动作名称 在页面右上方,单击“测试”,进入测试页面。 “认证信息”选择5中创建的noauth,设置输入参数,单击“测试”。 图19 测试 例如,从第三方数据库的“indexes”表中,获取1条数据。其中,“sql”为8中添加的输入参数,“indexes”为第三方数据库中某个表的名称。单击“测试”,返回如下数据: { "result": { "content": [ { "created_by": "10gd000000bHFh7DZ9iS", "created_date": "2021-04-09T00:59:20.000+00:00", "description": null, "field_id1": "cust000000hDkpq2Puy0", "field_id2": null, "index_id": "cust000000inMlDAbr6X", "index_name": "HWAC__applicationId__CST", "index_type": 3, "label": null, "last_modified_by": null, "last_modified_date": "2021-04-09T00:59:20.000+00:00", "obj_id": "cust000000hBjuCHLJom", "status": 0, "tenant_id": "0000000000bHFh7DZ9iT" } ] }, "dataForm": "2006-01-02", "dataTimeFormat": "2006-01-02 15:04:05", "reqMsg": "", "respMsg": "{\"url\":\"http://10.10.10.1:30280/astro/native/demo/dbadapter/mysql/datasource1/read\",\"method\":\"POST\",\"parameters\":{\"content\":\"******\"},\"tenantID\":\"000000000142c5UhjFvk\",\"statusCode\":200}", "timeElapsed": 207722711, "statusCode": 200, "headers": { "Connection": "keep-alive", "Content-Type": "application/json", "Date": "Fri, 13 Dec 2024 08:55:24 GMT", "Server": "nginx" } }
-
步骤四:通过脚本调用连接器获取数据 在应用设计器中,选择“逻辑”,单击脚本后的“+”。 新建一个空白的脚本,名称设置为“dbscript”,单击“添加”。 图20 创建脚本dbscript 在脚本编辑器中,输入示例代码。 示例代码中,“命名空间__demoDB”为4中定义的连接器名称,“命名空间__noauth”为3中添加的认证信息,“命名空间__demoSql”为6中添加的动作。 import * as connector from 'connector'; import * as context from 'context';//导入上下文相关的标准库 //定义入参结构 @action.object({ type: "param" }) export class ActionInput { @action.param({ type: 'String', required: false, label: 'String' }) sql: string; } //定义出参结构 @action.object({ type: "param" }) export class ActionOutput { @action.param({ type: 'any' }) res: any; } @action.object({ type: "method" }) export class CreateWorkOrder { //定义接口类,接口的入参为ActionInput,出参为ActionOutput @action.method({ input: 'ActionInput', output: 'ActionOutput' }) public createWorkOrder(input: ActionInput): ActionOutput { let out = new ActionOutput(); //新建出参ActionOutput类型的实例,作为返回值 let error = new Error(); //新建错误类型的实例,用于在发生错误时保存错误信息 try { // 页面上自己创建的自定义连接器的调用方法,第一个参数是创建的自定义连接器名称,第二个参数是认证信息名称 let client = connector.newClient("命名空间__demoDB", "命名空间__noauth"); //入参 let input = { "sql": "select * from flowinstance limit 1" }; // 第一个入参是动作名称, 第二个参数是入参 let resp = client.invoke("命名空间__demoSql", input); // 打印输出结果 console.log(resp); out.res = resp; } catch (error) { console.error(error.name, error.message); context.setError(error.name, error.message); } return out; } } 单击页面上方的,保存脚本。 单击编辑器上方的,执行脚本。 在页面底部单击测试窗口右上角的,在“输出参数”中可以查看到返回的数据库数据。 图21 查看返回数据
-
步骤二:创建连接器对接第三方数据库 创建一个低代码应用。 参考授权用户使用华为云Astro轻应用并购买实例中操作,申请华为云Astro轻应用免费试用或购买商业实例。 实例购买后,在华为云Astro轻应用服务控制台的“主页”中,单击“进入首页”,进入应用开发页面。 在“应用”中,单击“新建低代码应用”或单击,进入新建低代码应用页面。 在新建低代码应用页面,应用类型选择“标准应用”,单击“确定”。 输入应用的标签和名称,单击“新建”,即可进入应用设计器。 图13 创建一个空白应用 表3 新建空白应用参数说明 参数 说明 示例 标签 新建应用的标签,长度不能超过80个字符。标签是应用在系统中的唯一标识,创建后不支持修改。 我的第一个应用 名称 新建应用的名称,输入标签值后单击该参数的输入框,系统会自动生成应用的名称,同时自动在名称前,添加命名空间__。命名要求如下: 长度不能超过31个字符,包括前缀命名空间的长度。 名称前的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不允许以下划线结尾。 A 在应用设计器中,选择“集成”,单击“连接器”下的“连接器实例”。 在类型中,选择“自定义连接器”,进入自定义连接器页面。 单击“+”,配置连接器信息,单击“保存”。 图14 创建自定义连接器 表4 自定义连接器参数说明 参数 说明 示例 标签 自定义连接器的标签,创建后可修改。 取值范围:1~64个字符。 demoDB 名称 自定义连接器的名称,名称是连接器在系统中的唯一标识,创建后不可修改。命名要求如下: 长度不能超过64个字符,包括前缀命名空间的长度。 标识前模糊掉的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。 demoDB 为自定义连接器新建认证信息。 在“认证信息”页签,单击“新建”,进入添加认证信息页面。 设置认证信息,单击“保存”。 图15 添加认证信息 表5仅介绍本实践中使用到的参数,其他参数解释请参见使用自定义连接器调用第三方接口。 表5 添加认证信息参数说明 参数 说明 示例 标签 认证的标签名,用于在页面显示。 取值范围:1~64个字符。 noauth 名称 认证的名称,名称是认证在系统中的唯一标识,创建后不可修改。命名要求如下: 长度不能超过64个字符,包括前缀命名空间的长度。 标识前模糊掉的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。 noauth 为自定义连接器添加动作。 在“动作”页签中,单击“新建”。 设置动作的基本信息,单击“下一步”。 图16 设置基本信息 表6 动作基本信息参数说明 参数 说明 示例 标签 新建动作的标签名,用于在页面显示。 取值范围:1~64个字符。 demoSql 名称 新建动作的名称,名称是动作在系统中的唯一标识。命名要求如下: 长度不能超过64个字符,包括前缀命名空间的长度。 标识前模糊掉的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。 demoSql URL 第三方提供的协议服务的URL地址,即5中调试成功的地址。 http://10.10.10.1:30280/astro/native/demo/dbadapter/mysql/datasource1/read 方法 选择请求的方法。 POST 内容类型 输入内容的类型,该值取决于第三方支持哪种类型,是在HTTP标准协议中定义的。 application/json 返回类型 选择返回类型。 取值为“application/json”时,表示会忽略第三方实际返回的“content-type”,使用第三方配置的“content-type”来解析第三方返回的内容。 如果该参数取值为空,表示使用HTTP返回中的“content-type”,来解析第三方返回的内容。 application/json 本示例无需设置消息头入参,请单击删除第一行参数,再单击“下一步”。 设置输入参数,单击“下一步”。 图17 输入参数配置页面 表7仅介绍本实践中使用到的参数,其他参数解释请参见使用自定义连接器调用第三方接口。 表7 输入参数说明 参数 说明 示例 标签 输入参数的标签名,用于在页面显示。 sql 名称 新建输入参数的名称,名称是输入参数在系统中的唯一标识。 sql 参数位置 设置输入参数的位置。 消息体 数据类型 设置输入参数的数据类型,直接在下拉框中选择。 字符串 本示例无需设置输出参数,请单击删除第一行参数,再单击“保存”。 返回动作页签,单击该动作所在行的,启用该动作。
-
前提条件 db-adapter是用于操作第三方数据库的后端java demo代码。resources目录下的datasource.json文件用于配置第三方数据库的地址链接以及用户名、密码,用户可以基于自己的第三方数据库进行配置。DBExecuteController.java用于连接上数据库后,处理外部请求,返回数据库数据。 图2 datasource.json 图3 DBExecuteController.java 基于db-adapter生成jar包,把编出的jar包放在“build”目录下,构建docker镜像。已将制作好的镜像包上传到 容器镜像服务 SWR,如何上传镜像包请参见页面上传镜像。 使用docker save制作镜像压缩包时,请使用“{image}:{tag}”命令,不要使用“image id”,否则无法在容器 镜像服务 SWR页面上传。镜像上传失败时,可参考为什么通过页面上传镜像失败?中操作处理。 图4 使用maven install,将db-adapter打成jar包 图5 构建镜像
-
背景信息 在购买华为云Astro轻应用后,如果发现当前的规格无法满足业务需求时,您可以变更套餐的规格。当需要变更到高规格套餐时,需补齐版本差价,剩余服务周期按照剩余天数(不含闰年的2.29号)/365 进行计算(变更当天不算),续费时按照变更后的版本进行续费。 升级版本费用 = 升级后版本价格 * 剩余周期 - 未升级版本价格 * 剩余周期 剩余周期计算:按照实际剩余有效期进行换算 示例:2023/11/1客户购买了3年的华为云Astro轻应用,有效期截止到2026/11/1,客户在2024/5/1发生变更版本,则剩余周期=2024年剩余周期+2025年剩余周期+2026年剩余周期=244/365+1+305/365=2.50(年)。
-
创建空白应用 参考登录零代码工作台中操作,登录零代码应用开发工作台。 在“全部应用”中,单击“开始创建”后的,选择“创建空白应用”。 设置应用名称、图标和图标颜色,单击应用名称后的,可设置名称的多语言属性。 图1 设置应用名称和图标 应用创建成功后,选择一种方式,创建所需的应用。 图2 选择一种方式 创建普通表单:对于一些业务数据在线收集、数据共享和事件跟进等场景,可选择创建普通表单。创建普通表单时,支持创建空白表单和从Excel创建表单两种方式。 图3 创建普通表单 创建流程表单:在出差审批申请、工单派发流程等场景中,需要多个角色人员按流程分步骤互相协作,这时可使用创建流程表单来实现。
-
约束与限制 为确保导入数据的准确性,请按照以下规则进行导入: 请按照平台提供的“标准表单模板”在模板内录入数据,只导入第一张表单(xls或xlsx格式)。 修改表头将有可能导致导入失败。 单个文件最大不能超过10M。 表格列数不能超过200列,数据不能超过10000行。 不支持引用、汇总、附件、公式、子表、矩阵量表、文本组合、隐私保护、定位、电子签名、富文本、自动编号字段的导入。 多个字段名称相同时,请手动选择映射关系。
-
新建外部链接 参考登录华为云Astro轻应用移动端零代码工作台中操作,登录移动端零代码工作台。 在全部应用中,单击已创建的应用,进入应用。 在应用页面的右下方,单击。 在弹出的页面,单击,选择“编辑应用”。 图1 编辑应用 在导航设置页签,单击“新建”,选择“新建外部链接”。 图2 选择新建外部链接 设置外部链接信息。 图3 新建外部链接 设置完成后,单击“确定”。 在导航设置中,可查看到已新建的外部链接。单击该链接,可跳转到对应页面。 图4 外部链接地址
-
使用模板创建应用 参考登录华为云Astro轻应用移动端零代码工作台中操作,登录移动端零代码工作台。 在全部应用中,单击“创建应用”,选择“从模板创建应用”。 图1 选择创建空白应用 在弹出的页面,输入应用的名称,单击“保存并编辑”。 在模板中心,单击对应模板上的“安装”。 安装完成后,即可进入应用模板。 图2 单击安装应用 (可选)当需要基于已有的模板页面进行定制时,可执行该步骤。 在应用页面右下方,单击。 图3 进入应用详情页面 在弹出的页面,单击,选择“编辑应用”。 图4 单击编辑应用 在导航设置中,单击待修改表单后的,选择“编辑”。 图5 单击编辑 在表单编辑页面,根据业务需求,进行定制,完成后单击“保存”。 分享表单。 在应用页面右下方,单击,选择对应的表单,进入表单填报页。 图6 选择表单 单击分享图标,选择对内部用户分享。 图7 单击分享图标 选择分享方式,当前支持通过链接或二维码的方式,对内部用户分享表单。 图8 选择分享方式
-
创建空白应用 参考登录华为云Astro轻应用移动端零代码工作台中操作,登录移动端零代码工作台。 在全部应用中,单击“创建应用”,选择“创建空白应用”。 图1 选择创建空白应用 在弹出的页面,输入应用的名称,单击“保存并编辑”。 在导航设置页签中,单击“创建表单”。 表单由文本框、单选、多选和下拉列表等组件构成,用于用户填报提交数据,并收集数据的工具。一个应用中,可以创建一个或多个表单,一个表单管理一类数据,多个表单共同组成了一个应用。 在华为云Astro轻应用零代码平台中,数据的收集和录入都需要对应的工作表。例如,组织问卷调查、预订会议室、填写财务报销、订餐、健康防疫打卡、在线投票等,都可以通过表单来实现。 图2 单击创建表单 输入表单名称后,单击“创建”,进入编辑表单页面,如图3。 图3 表单编辑页面 在表单编辑页面,单击“添加字段”,根据自身业务需求,完成表单的定制。 表单中各组件的功能和PC端相同,详细介绍请参见零码组件介绍。组件添加后,单击字段后的,可编辑字段、克隆字段、对字段进行排序或删除字段。 图4 管理字段 设置完成后,单击“保存”。 分享表单 在保存成功提示页面,单击“分享”,支持对内部用户和对外公开分享该表单。 图5 分享应用 运行表单 在保存成功提示页面,单击“运行”,可在线提交问卷。 图6 提交问卷
-
登录移动端零代码工作台 参考步骤1:(可选)注册 WeLink 账号中,完成WeLink账号的注册。 参考步骤2 绑定WeLink中操作,在华为云Astro轻应用中绑定WeLink。 绑定WeLink,参考步骤3 为WeLink账号添加零码开发者权限中操作,为同步到华为云Astro轻应用的WeLink用户,赋予零码开发者权限(NoCode Developer Profile)。 WeLink用户添加开发者权限后,即可登录蓝版WeLink,开发/发布零代码应用。 在WeLink手机端,输入“AppCube应用魔方”,单击搜索到的结果。 在弹出的页面,单击“进入工作台”,进入移动端零代码工作台。 图1 华为云Astro轻应用移动端零码工作台
-
测试自动化任务 自动化任务启用成功后,会出现“测试”按钮,单击该按钮可进行自动化测试。 自动化任务启用成功后,单击页面右上方的“测试”。 图3 测试自动化任务 触发条件为“流程事件触发”时(如图4),不支持测试功能,即无测试按钮。 图4 流程事件触发 在弹出的测试页面,选择一条记录,单击“开始测试”。 图5 选择一条记录 触发条件为“定时触发”时(如图6),无需选择记录,即可立即测试(如图7)。 图6 定时触发 图7 测试定时触发自动化任务 执行成功后,单击“跟踪”,可查看自动化任务测试结果。 图8 查看测试结果
-
新建自动化任务 参考登录零代码工作台中操作,登录零代码应用开发工作台。 在全部应用中,单击应用后的“...”,选择“编辑”,进入编辑应用页面。 单击页面右上角的,进入自动化页面。 图1 进入自动化页面 在自动化页面,单击“开始创建”。 选择所需的触发类型,例如选择“数据更新时触发”,单击“确定”。 图2 选择触发类型 在自动化页面左上角,设置自动化任务名称。 图3 设置自动化任务名称 在触发器中,设置触发条件,单击“保存”。 图4 设置触发条件 触发条件:自动化任务触发条件。 数据新增时触发:当表单中新增数据,且数据符合条件时触发。 数据更新时触发:当表单中更新数据,且数据符合条件时触发。 数据符合条件时触发:当表单中新增或更新数据,且数据符合条件时触发。 定时触发:按照预设的时间周期循环触发。 流程事件触发:流程任务开始、完成时触发,如审批完成后触发更新表单数据。 数据删除时触发:当表单中删除数据,且数据符合条件时触发。 选择表单:触发自动化任务的表单。选择表单后,请根据界面提示设置筛选条件、选择字段等。 设置执行动作,单击“保存”。 图5 设置执行动作 新增数据 选择要新增数据的表单:根据业务需求,选择需要新增数据的表单。 新增类型:选择新增一条数据还是基于数据源新增多条数据。 选择数据源:在当前节点前,插入一个“获取多条数据”动作,作为数据源使用。 图6 在前面插入动作 图7 选择获取多条数据 字段设置:给字段设置所需的值,请至少设置一个字段。 更新数据 选择更新对象:根据业务需求,选择需要更新的对象。 更新字段:对符合条件的数据选择相应的字段进行更新。 未获取到数据时:未获取到数据时,选择跳过当前节点还是新增一条数据。 获取单条数据 获取方式:支持“从表单中获取”和“从关联记录中获取”。 从表单中获取 选择获取数据的表单:在下拉框中,选择获取数据的表单。 筛选条件:从表单中获取符合条件的数据,未设置筛选条件则通过排序规则从查询记录中获取唯一数据。 排序规则:如果查找到多条数据,则选择按照排序规则获取第一条数据。 查询结果为空:查询结果为空时,是继续执行还是终止执行。 从关联记录中获取 选择获取对象:根据业务需求,选择需要获取数据的对象。 选择关联记录类型的字段:选择表单中关联记录组件对应的字段。 获取多条数据 获取方式:支持“从表单中获取”和“从关联记录中获取”。 从表单中获取 选择获取数据的表单:根据业务需求,选择获取数据的表单。 筛选条件:从表单中获取符合条件的数据,未设置筛选条件则通过排序规则从查询记录中获取唯一数据。 排序规则:如果查找到多条数据,则选择按照排序规则获取第一条数据。 限制数量:按照排序规则,获取前N条数据。 查询结果为空:查询结果为空时,是继续执行还是终止执行。 从关联记录中获取 选择获取对象:根据业务需求,选择需要获取数据的对象。 选择关联记录类型的字段:选择表单中关联记录组件对应的字段。 删除数据:删除数据时,触发自动化任务执行。 发送邮件 通知类型:邮件通知。 发件人邮箱账号:选择发件人邮箱地址,单击“邮箱管理”,租户系统管理员可设置并修改邮箱信息,详情请参见邮箱管理。 收件人:单击“指定人员”,设置邮件接收人信息,支持指定具体人员、角色或动态获取。 抄送:单击“指定人员”,设置邮件抄送人信息,支持指定具体人员、角色或动态获取。 主题:设置邮件主题,支持直接输入,或单击,从记录中添加。 图8 设置邮件主题 内容:设置发送邮件内容。单击“节点对象”,可从记录中复制粘贴字段到内容中。 图9 设置发送邮件内容 来源:选择发送来源,接收方信息中将展示该自动化任务所在的应用名称,便于追溯。 企业微信通知 通知类型:企业微信。 发送给:单击“指定人员”,设置企业微信接收人信息,支持指定具体人员、角色或动态获取。 图片:勾选后,单击“上传图片”,可发送图文 消息通知 。如果不勾选,按照文本卡片消息方式发送通知。 当前仅支持JPG和PNG格式的图片,图片大小建议不超过1068*455(大图)、150*150(小图)。 主题:设置微信主题,支持直接输入,或单击,从记录中添加。 内容:设置发送的微信内容,支持直接输入,或单击,从记录中添加。 详情:设置跳转链接。 来源:选择发送来源,接收方信息中将展示该自动化任务所在的应用名称,便于追溯。 Welink卡片 发送WeLink卡片通知是指向通知中心发送卡片消息,单次发送用户数最大1000人,如需使用请先绑定WeLink组织。 发送给:单击“指定人员”,设置WeLink接收人信息,支持指定具体人员、角色或动态获取。 主题:设置WeLink主题,支持直接输入,或单击,从记录中添加。 内容:设置发送的WeLink内容,支持直接输入,或单击,从记录中添加。 详情:设置跳转链接。 来源:选择发送来源,接收方信息中将展示该自动化任务所在的应用名称,便于追溯。 服务编排 选择服务编排时,请确保已在华为云Astro轻应用低代码应用平台创建一个服务编排。 选择服务编排:选择已创建的服务编排。 字段设置:单击“添加字段”,向服务编排的输入参数传递初始值,供其执行时使用 触发器设置完成后,单击页面右上角的“保存”。 保存成功后,可参考启用自动化任务中操作,启用自动化任务。
-
导出统计页面 参考登录零代码工作台中操作,登录零代码应用开发工作台。 在全部应用中,单击对应的应用,进入应用开发页面。 单击页面右上角的“查看统计”,进入统计页面。 单击已有统计页面后的,选择“导出”。 当前仅支持导出png格式的统计页面。 图1 导出统计页面(运行态) 您也可以在应用开发页面,单击页面右上角的“编辑应用”,进入编辑应用页面。在编辑应用页面,单击待导出统计后的,选择“导出”。 图2 导出统计页面(开发态)
共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