From b0a8bc69196da405c03248786aa12ca5a2710e9a Mon Sep 17 00:00:00 2001 From: LG_lai Date: Wed, 17 Aug 2022 14:27:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8E=82=E7=89=88=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 000-Data/3-Infomation.robot | 36 ++++++- .../Client/FactoryReceipt.robot | 22 ++++ .../1-Client/FactoryReceipt.robot | 37 +++++++ .../2-FactoryBackstage/PaymentOperation.robot | 34 ++++++ .../Client/FactoryOffsite.robot | 59 +++++++++++ .../Client/FactoryOutbound.robot | 0 .../Client/FactoryOutbound.robot | 64 +++++++++++ .../Client}/1-FactoryReceipt.robot | 29 ++--- .../Client}/2-FactoryOffsite.robot | 0 Factory/Client/3-FactoryOutbound.robot | 100 ++++++++++++++++++ .../1-PaymentOperation.robot | 6 +- {Login => Test/Login}/__init__.robot | 0 {Login => Test/Login}/factory.robot | 0 {Login => Test/Login}/关键字.robot | 0 .../ZTB小程序}/出货.robot | 0 .../ZTB小程序}/厂内收货.robot | 0 .../ZTB小程序}/厂外收货.robot | 0 .../ZTB小程序}/常规代卖.robot | 0 .../ZTB小程序}/登录.robot | 0 __init__.txt => Test/__init__.txt | 0 log.html => Test/log.html | 0 output.xml => Test/output.xml | 0 report.html => Test/report.html | 0 ztb-factory.sh => Test/ztb-factory.sh | 0 .../系统设置}/员工管理.robot | 0 common_26091119022578881.jpg | Bin 0 -> 71441 bytes 26 files changed, 364 insertions(+), 23 deletions(-) create mode 100644 001-FactoryReceiptManual/Client/FactoryReceipt.robot create mode 100644 002-FactoryReceiptSwipe/1-Client/FactoryReceipt.robot create mode 100644 002-FactoryReceiptSwipe/2-FactoryBackstage/PaymentOperation.robot create mode 100644 003-FactoryOffsite/Client/FactoryOffsite.robot rename 001-Client/3-FactoryOutbound.robot => 004-FactoryOutOrderManual/Client/FactoryOutbound.robot (100%) create mode 100644 005-FactoryOutSwipe/Client/FactoryOutbound.robot rename {001-Client => Factory/Client}/1-FactoryReceipt.robot (68%) rename {001-Client => Factory/Client}/2-FactoryOffsite.robot (100%) create mode 100644 Factory/Client/3-FactoryOutbound.robot rename {002-FactoryBackstage => Factory/FactoryBackstage}/1-PaymentOperation.robot (93%) rename {Login => Test/Login}/__init__.robot (100%) rename {Login => Test/Login}/factory.robot (100%) rename {Login => Test/Login}/关键字.robot (100%) rename {ZTB小程序 => Test/ZTB小程序}/出货.robot (100%) rename {ZTB小程序 => Test/ZTB小程序}/厂内收货.robot (100%) rename {ZTB小程序 => Test/ZTB小程序}/厂外收货.robot (100%) rename {ZTB小程序 => Test/ZTB小程序}/常规代卖.robot (100%) rename {ZTB小程序 => Test/ZTB小程序}/登录.robot (100%) rename __init__.txt => Test/__init__.txt (100%) rename log.html => Test/log.html (100%) rename output.xml => Test/output.xml (100%) rename report.html => Test/report.html (100%) rename ztb-factory.sh => Test/ztb-factory.sh (100%) mode change 100755 => 100644 rename {系统设置 => Test/系统设置}/员工管理.robot (100%) create mode 100644 common_26091119022578881.jpg diff --git a/000-Data/3-Infomation.robot b/000-Data/3-Infomation.robot index 005ab08..6fe6620 100644 --- a/000-Data/3-Infomation.robot +++ b/000-Data/3-Infomation.robot @@ -35,6 +35,19 @@ getInformation Set Global Variable ${name} Set Global Variable ${CustomerId} Set Global Variable ${customerSettleType} + #获取厂内收货供应商列表 + Create Session ztbf ${ztbClient} ${client_header} + ${reps} GET On Session ztbf ztb-factory/factory/get/customer-list params=name=&pageNum=1&pageSize=1500 + ${ReceiptCustomerList} Get From Dictionary ${reps.json()['data']} records #供应商列表 + FOR ${ReceiptCustomerInfo} IN @{ReceiptCustomerList} + ${ReceiptName} Get From Dictionary ${ReceiptCustomerInfo} name #供应商姓名 + ${ReceiptcardNo} Get From Dictionary ${ReceiptCustomerInfo} cardNo #供应商卡ID + ${ReceiptCustomerId} Get From Dictionary ${ReceiptCustomerInfo} id #供应商唯一标识 + Exit For Loop If '${ReceiptCustomerId}'=='136' #判断小可爱供应商id + END + Set Global Variable ${ReceiptName} + Set Global Variable ${ReceiptcardNo} + Set Global Variable ${ReceiptCustomerId} #获取厂外收货供应商列表 Create Session ztbf ${ztbClient} ${client_header} ${reps} GET On Session ztbf ztb-factory/factory/get/customer-list params=name=&pageNum=1&pageSize=1500 @@ -43,7 +56,7 @@ getInformation ${Offsitename} Get From Dictionary ${CustomerInfo} name #供应商姓名 ${OffsitecardNo} Get From Dictionary ${CustomerInfo} cardNo #供应商卡ID ${OffsiteCustomerId} Get From Dictionary ${CustomerInfo} id #供应商唯一标识 - Exit For Loop If '${OffsiteCustomerId}'=='133' + Exit For Loop If '${OffsiteCustomerId}'=='133' #判断卢雪庵供应商id END Set Global Variable ${Offsitename} Set Global Variable ${OffsitecardNo} @@ -66,6 +79,18 @@ getInformation ${enterpriseMemberName} Get From Dictionary ${MemberInfo} enterpriseMemberName #企业员工name Set Global Variable ${enterpriseMemberId} Set Global Variable ${enterpriseMemberName} + #获取出货员工 + ${reps} GET On Session ztbf recycle-user-center/get/self-department-member-list params=enterpriseId=null&isPassFromBackstage=1 + ${OutMemberList} Get From Dictionary ${reps.json()['data']} records #获取员工列表 + FOR ${OutMemberInfo} IN @{OutMemberList} + ${OutCarNo} Get From Dictionary ${OutMemberInfo} cardNo #出货员工卡ID + ${OutMemberId} Get From Dictionary ${OutMemberInfo} enterpriseMemberId #出货员工id + ${OutMemberName} Get From Dictionary ${OutMemberInfo} enterpriseMemberName #出货员工name + Exit For Loop If '${OutMemberId}'=='738823017987182592' #判断南瓜员工id + END + Set Global Variable ${OutCarNo} + Set Global Variable ${OutMemberId} + Set Global Variable ${OutMemberName} #上传图片 ${filepath} Evaluate open('./21042217001449712.png','rb') ${image} Evaluate open('./21042217001449712.png','rb') @@ -75,3 +100,12 @@ getInformation ${reps} POST On Session order recycle-user-center/file-uploading/upload/image data=${type} files=${file_data} ${Image} Get From Dictionary ${reps.json()} data #获取图片阿里云地址 Set Global Variable ${Image} + #上传出货磅单图片 + ${OutFile} Evaluate open('./common_26091119022578881.jpg','rb') + ${OutImage} Evaluate open('./common_26091119022578881.jpg','rb') + ${File} Create Dictionary file=${OutFile} image=${OutImage} + ${type} Create Dictionary type=image + Create Session order ${ztbClient} ${Header} + ${reps} POST On Session order recycle-user-center/file-uploading/upload/image data=${type} files=${File} + ${OutboundImage} Get From Dictionary ${reps.json()} data #获取图片阿里云地址 + Set Global Variable ${OutboundImage} diff --git a/001-FactoryReceiptManual/Client/FactoryReceipt.robot b/001-FactoryReceiptManual/Client/FactoryReceipt.robot new file mode 100644 index 0000000..a6d58ae --- /dev/null +++ b/001-FactoryReceiptManual/Client/FactoryReceipt.robot @@ -0,0 +1,22 @@ +*** Settings *** +Library Collections +Library RequestsLibrary + +*** Test Cases *** +ReceiptOrder + #创建厂内收货订单--手工单 + Create Session ztbf ${ztbClient} ${client_header} + ${unitPrice} Set Variable 1.8 + ${netWeight} Set Variable 11000 + ${settleWeight} Set Variable 11000 + ${settlePrice} Evaluate ${unitPrice}*${settleWeight} + ${data} Set Variable { \ \ \ \ "deductType":1, \ \ \ \ "isWithoutTare":0, \ \ \ \ "status":null, \ \ \ \ "factoryCustomerId":"${CustomerId}", \ \ \ \ "factoryCustomerName":"${name}", \ \ \ \ "netWeight":"${netWeight}", \ \ \ \ "settleWeight":"${settleWeight}", \ \ \ \ "plateNumber":"55555", \ \ \ \ "productInfoList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"${unitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${defaultUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0, \ \ \ \ \ \ \ \ \ \ \ \ "settleWeight":"${settleWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "settlePrice":"${settlePrice}" \ \ \ \ \ \ \ \ } \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/save/scrap-paper-onside-receipt-order ${data.encode('utf-8')} + ${OrderId} Get From Dictionary ${reps.json()} data + Set Global Variable ${OrderId} + #审核过磅单 + ${auditData} Set Variable {"id":"${OrderId}"} + ${reps} POST On Session ztbf ztb-factory/factory/audit-pass/order ${auditData.encode('utf-8')} + #支付订单:现金、银行卡支付 + ${paymentData} Set Variable {"settleType":2,"ids":["${OrderId}"]} + ${reps} POST On Session ztbf ztb-factory/wechat-applet/merge-receiving-pay-order/pay ${paymentData.encode('utf-8')} diff --git a/002-FactoryReceiptSwipe/1-Client/FactoryReceipt.robot b/002-FactoryReceiptSwipe/1-Client/FactoryReceipt.robot new file mode 100644 index 0000000..f3814ee --- /dev/null +++ b/002-FactoryReceiptSwipe/1-Client/FactoryReceipt.robot @@ -0,0 +1,37 @@ +*** Settings *** +Library Collections +Library RequestsLibrary + +*** Test Cases *** +ReceiptWeigh + #厂内收货--刷卡过磅 + #刷卡过磅--过毛重 + Create Session ztbf ${ztbClient} ${client_header} + ${weight} Set Variable 2410 + ${weighData} Set Variable {"cardNo":"${ReceiptcardNo}","weight":${weight}} + ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${weighData.encode('utf-8')} + ${ReceiptOrderId} Get From Dictionary ${reps.json()['data']} id #订单id + Set Global Variable ${ReceiptOrderId} + Should Be Equal As Strings ${reps.json()["message"]} 毛重称重成功,${weight}公斤,请下地磅 + #定价详情 + ${reps} GET On Session ztbf ztb-factory/factory/wechat-applet/get/order-detail/${ReceiptOrderId} + ${plateNumber} Get From Dictionary ${reps.json()['data']} plateNumber #车牌号 + ${isWithoutTare} Get From Dictionary ${reps.json()['data']} isWithoutTare #是否无皮过磅,0否1是 + ${proportionOfProduct} Get From Dictionary ${reps.json()['data']} proportionOfProduct + ${plateNumber} Set Variable If '${plateNumber}'=='${None}' null ${plateNumber} + #确定定价 + ${unitPrice} Set Variable 1.88 + ${submitData} Set Variable { \ \ \ \ "id":"${ReceiptOrderId}", \ \ \ \ "productInfoDtoList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"2.1", \ \ \ \ \ \ \ \ \ \ \ \ "proportionOfProduct":"${proportionOfProduct}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${defaultUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0 \ \ \ \ \ \ \ \ } \ \ \ \ ], \ \ \ \ "plateNumber":${plateNumber}, \ \ \ \ "factoryCustomerId":"${ReceiptCustomerId}", \ \ \ \ "deductType":1, \ \ \ \ "inspectionRemark":"确定定价", \ \ \ \ "isWithoutTare":"${isWithoutTare}" } + ${reps} POST On Session ztbf ztb-factory/factory/submit/order-price ${submitData.encode('utf-8')} + #刷卡过磅--过皮重 + ${weightTare} Set Variable 2000 + ${weighData} Set Variable {"cardNo":"${ReceiptcardNo}","weight":${weightTare}} + ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${weighData.encode('utf-8')} + ${ReceiptOrderId} Get From Dictionary ${reps.json()['data']} id #订单id + Should Be Equal As Strings ${reps.json()["message"]} 皮重称重成功,${weightTare}公斤,正在打印磅单 + #过磅审核 + ${auditData} Set Variable {"id":"${ReceiptOrderId}"} + ${reps} POST On Session ztbf ztb-factory/factory/audit-pass/order ${auditData.encode('utf-8')} + #支付订单--千鸟代付 + ${paymentData} Set Variable {"settleType":3,"ids":["${ReceiptOrderId}"]} + ${reps} POST On Session ztbf ztb-factory/wechat-applet/merge-receiving-pay-order/pay ${paymentData.encode('utf-8')} diff --git a/002-FactoryReceiptSwipe/2-FactoryBackstage/PaymentOperation.robot b/002-FactoryReceiptSwipe/2-FactoryBackstage/PaymentOperation.robot new file mode 100644 index 0000000..593135d --- /dev/null +++ b/002-FactoryReceiptSwipe/2-FactoryBackstage/PaymentOperation.robot @@ -0,0 +1,34 @@ +*** Settings *** +Library Collections +Library RequestsLibrary +Library DateTime + +*** Test Cases *** +PaymentReview + #千鸟代付审核列表 + Create Session ztbf ${opsztb} ${ops_header} + ${reps} GET On Session ztbf ztb-factory/admin/get/agency-payment-order-audit-request-list params=status=&orderId=${ReceiptOrderId}&pageNum=1&pageSize=10 + ${AuditId} Get From Dictionary ${reps.json()['data']['records'][0]} id #代付审核id + #代付审核通过 + ${data} Set Variable { \ \ \ \ "id":"${AuditId}", \ \ \ \ "remark":"", \ \ \ \ "status":1 } + ${reps} POST On Session ztbf ztb-factory/admin/audit/agency-payment-order-audit-request ${data.encode('utf-8')} + +PaymentPayable + #代付应付 + Create Session ztbf ${opspsc} ${ops_header} + ${reps} GET On Session ztbf payment-settlement-center/admin/get/agency-payment-order-payable-list params=status=&pageNum=1&pageSize=10&orderId=${ReceiptOrderId} + ${PayId} Get From Dictionary ${reps.json()['data']['records'][0]} id #代付应付Id + #代付应付通过 + ${PayData} Set Variable { \ \ \ \ "id":"${PayId}", \ \ \ \ "isMergePayment":0, \ \ \ \ "auditStatus":1 } + ${reps} POST On Session ztbf payment-settlement-center/admin/audit/agency-payment-order-payable/${PayId} ${PayData.encode('utf-8')} + +PaymentReceivable + #代付应收 + Create Session ztbf ${opspsc} ${ops_header} + ${reps} GET On Session ztbf /payment-settlement-center/admin/get/agency-payment-order-receivable-list params=status=0&orderId=${ReceiptOrderId}&pageNum=1&pageSize=10 + ${ReceiveId} Get From Dictionary ${reps.json()['data']['records'][0]} id #代付应收id + ${receivablePrice} Get From Dictionary ${reps.json()['data']['records'][0]} receivablePrice #代付应收金额 + #确认收款 + ${Time} get current date result_format=%Y-%m-%d + ${ReceiveData} Set Variable { \ \ \ \ "id":"${ReceiveId}", \ \ \ \ "realReceivedPrice":"${receivablePrice}", \ \ \ \ "realReceivedTime":"${Time}" } + ${reps} POST On Session ztbf payment-settlement-center/admin/comfirm-receive/agency-payment-order-receivable-list ${ReceiveData.encode('utf-8')} diff --git a/003-FactoryOffsite/Client/FactoryOffsite.robot b/003-FactoryOffsite/Client/FactoryOffsite.robot new file mode 100644 index 0000000..b2d123a --- /dev/null +++ b/003-FactoryOffsite/Client/FactoryOffsite.robot @@ -0,0 +1,59 @@ +*** Settings *** +Library String +Library urllib3 +Library Collections +Library RequestsLibrary + +*** Test Cases *** +OffsiteOrder + #创建厂外收货订单 + Create Session ztbf ${ztbClient} ${client_header} + ${unitPrice} Set Variable 1.66 #单价(公斤) + ${plateNumber} Set Variable 粤M33333 #车牌号 + ${equipmentRemark} Set Variable NP-003 #设备 + ${ReceiptData} Set Variable { \ \ \ \ "productCategoryInfos":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productCategoryName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"${unitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${defaultUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0 \ \ \ \ \ \ \ \ } \ \ \ \ ], \ \ \ \ "predictDeliveryToFactoryTime":null, \ \ \ \ "factoryCustomerId":"${OffsiteCustomerId}", \ \ \ \ "factoryCustomerName":"${Offsitename}", \ \ \ \ "plateNumber":"${plateNumber}", \ \ \ \ "driverId":"${enterpriseMemberId}", \ \ \ \ "driverName":"${enterpriseMemberName}" } + ${reps} POST On Session ztbf ztb-factory/create/scrap-paper-offsite-receipt-order ${ReceiptData.encode('utf-8')} + #外出收货订单列表 + ${reps} GET On Session ztbf ztb-factory/get/scrap-paper-offsite-receipt-order-list params=orderStatus=0&orderType=2&pageNum=1&pageSize=15 + ${OrderList} Get From Dictionary ${reps.json()['data']} records #订单列表 + FOR ${items} IN @{OrderList} + ${driverId} Get From Dictionary ${items} driverId #司机id + ${OffsiteOrderId} Get From Dictionary ${items} orderId #订单编号 + Exit For Loop If '${driverId}'=='${enterpriseMemberId}' + END + #外出收货订单详情 + ${reps} GET On Session ztbf ztb-factory/get/scrap-paper-offsite-receipt-order-detail params=id=${OffsiteOrderId} + ${scrapPaperPurchaseOrderId} Get From Dictionary ${reps.json()['data']['productCategoryInfos'][0]} scrapPaperPurchaseOrderId #收货订单id + #提交订单 + ${offsiteTareWeight} Set Variable 500 #皮重(公斤) + ${offsiteGrossWeight} Set Variable 1000 #毛重(公斤) + ${netWeight} Evaluate ${offsiteGrossWeight}-${offsiteTareWeight} + ${ReceiptWeight} Set Variable { \ \ \ \ "scrapPaperReceiptId":"${OffsiteOrderId}", \ \ \ \ "offsiteGrossWeight":"${offsiteGrossWeight}", \ \ \ \ "offsiteTareWeight":"${offsiteTareWeight}", \ \ \ \ "weightNoteList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "grossWeight":null, \ \ \ \ \ \ \ \ \ \ \ \ "tareWeight":null, \ \ \ \ \ \ \ \ \ \ \ \ "weightNoteImage":null, \ \ \ \ \ \ \ \ \ \ \ \ "netWeight":"${netWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "scrapPaperPurchaseOrderId":"${scrapPaperPurchaseOrderId}" \ \ \ \ \ \ \ \ } \ \ \ \ ], \ \ \ \ "orderImageList":[ \ \ \ \ \ \ \ \ "${Image}", \ \ \ \ \ \ \ \ "${Image}", \ \ \ \ \ \ \ \ "${Image}" \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/submit/scrap-paper-offsite-receipt-weight-note ${ReceiptWeight.encode('utf-8')} + #确认定价 + ${OrderPrice} Set Variable { \ \ \ \ "scrapPaperReceiptId":"${OffsiteOrderId}", \ \ \ \ "productCategorySettleInfoDtoList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "scrapPaperPurchaseOrderId":"${scrapPaperPurchaseOrderId}", \ \ \ \ \ \ \ \ \ \ \ \ "deductWeight":null, \ \ \ \ \ \ \ \ \ \ \ \ "deductPercent":null, \ \ \ \ \ \ \ \ \ \ \ \ "settleUnitPrice":"${unitPrice}" \ \ \ \ \ \ \ \ } \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/submit/scrap-paper-offsite-receipt-order-price ${OrderPrice.encode('utf-8')} + #刷卡过毛重 + ${weight} Set Variable ${offsiteGrossWeight} + ${weighData} Set Variable {"cardNo":"${OffsitecardNo}","weight":${weight}} + ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${weighData.encode('utf-8')} + ${orderId} Get From Dictionary ${reps.json()['data']} id #订单id + Set Global Variable ${orderId} + Should Be Equal As Strings ${reps.json()["message"]} 毛重称重成功,${weight}公斤,请下地磅 + #过磅审核通过 + ${ReceiptData} Set Variable {"scrapPaperReceiptId":"${OffsiteOrderId}"} + ${reps} POST On Session ztbf ztb-factory/renew/scrap-paper-offsite-receipt-order-price ${ReceiptData.encode('utf-8')} + #非代付 + #获取客户所有未支付订单 + ${reps} GET On Session ztbf ztb-factory/get/scrap-paper-offsite-receipt-order-list params=factoryCustomerId=${OffsiteCustomerId}&statusList=4%2C%2042&pageSize=100 + ${orderList} Get From Dictionary ${reps.json()['data']} records #客户所有订单列表 + ${List} Create List + FOR ${items} IN @{orderList} + ${orderId} Get From Dictionary ${items} orderId #客户订单id + Append To List ${List} ${orderId} + END + ${str} Convert To String ${List} + ${List} Replace String ${str} ' " + #支付订单 + ${paymentData} Set Variable { \ \ \ \ "settleType":2, \ \ \ \ "ids":${List}} + ${reps} POST On Session ztbf ztb-factory/wechat-applet/merge-receiving-pay-order/pay ${paymentData.encode('utf-8')} diff --git a/001-Client/3-FactoryOutbound.robot b/004-FactoryOutOrderManual/Client/FactoryOutbound.robot similarity index 100% rename from 001-Client/3-FactoryOutbound.robot rename to 004-FactoryOutOrderManual/Client/FactoryOutbound.robot diff --git a/005-FactoryOutSwipe/Client/FactoryOutbound.robot b/005-FactoryOutSwipe/Client/FactoryOutbound.robot new file mode 100644 index 0000000..7c07a5d --- /dev/null +++ b/005-FactoryOutSwipe/Client/FactoryOutbound.robot @@ -0,0 +1,64 @@ +*** Settings *** +Library Collections +Library RequestsLibrary + +*** Test Cases *** +OutboundDeviceOrder + #出货--刷卡单 + #第一次刷卡过磅--皮重 + Create Session ztbf ${ztbClient} ${client_header} + ${OutFirstWeight} Set Variable 2000 + ${OutFirstWeightData} Set Variable { \ \ \ \ "cardNo":"${OutCarNo}", \ \ \ \ "weight":"${OutFirstWeight}" } + ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${OutFirstWeightData.encode('utf-8')} + ${OutWeightId} Get From Dictionary ${reps.json()['data']} id #刷卡过磅id + Should Be Equal As Strings ${reps.json()['message']} 第一次过磅成功,${OutFirstWeight}公斤,请下地磅 + #绑定磅单图片 + ${OutFirstBinding} Set Variable { \ \ \ \ "orderId":"${OutWeightId}", \ \ \ \ "imageUrl":"${OutboundImage}", \ \ \ \ "index":"1" } + ${reps} POST On Session ztbf /ztb-factory/binding/order-image ${OutFirstBinding.encode('utf-8')} + sleep 0.5 + #第二次刷卡过磅--毛重 + ${OutSecondWeight} Set Variable 4520 + ${OutSecondWeightData} Set Variable { \ \ \ \ "cardNo":"${OutCarNo}", \ \ \ \ "weight":"${OutSecondWeight}" } + ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${OutSecondWeightData.encode('utf-8')} + Should Be Equal As Strings ${reps.json()['message']} 第二次过磅成功,${OutSecondWeight}公斤,请下地磅 + #绑定磅单图片 + ${OutSecondBinding} Set Variable { \ \ \ \ "orderId":"${OutWeightId}", \ \ \ \ "imageUrl":"${OutboundImage}", \ \ \ \ "index":"1" } + ${reps} POST On Session ztbf /ztb-factory/binding/order-image ${OutSecondBinding.encode('utf-8')} + sleep 0.5 + #出货列表 + ${reps} GET On Session ztbf ztb-factory/get/outbound-delivery-order-list params=pageNum=1&pageSize=15 + ${OutList} Get From Dictionary ${reps.json()['data']} records #出货列表 + FOR ${OutInfo} IN @{OutList} + ${OutId} Get From Dictionary ${OutInfo} id #出货id + ${status} Get From Dictionary ${OutInfo} status #出货订单状态 + ${factoryId} Get From Dictionary ${OutInfo} factoryId #出货工厂id + ${createTime} Get From Dictionary ${OutInfo} createTime #出货订单创建时间 + ${orderNumber} Get From Dictionary ${OutInfo} orderNumber #出货订单 + ${weightNoteId} Get From Dictionary ${OutInfo} weightNoteId #出货磅单id + ${NetWeight} Get From Dictionary ${OutInfo} outboundDeliveryNetWeight #出货总净重(公斤) + Exit For Loop If '${weightNoteId}'=='${OutWeightId}' #判断订单编号是否相等 + END + #确认出货 + ${unitPrice} Set Variable 2.35 #出货品类单价 + ${plateNumber} Set Variable 川F66666 #出货车牌号 + ${estimatedAmount} Evaluate ${unitPrice}*${NetWeight} #预估金额(元) + ${defaultUnitPrice} Set Variable ${defaultUnitPrice}*1000 #指导价格 + ${OutboundOrderData} Set Variable { \ \ \ \ "id":"${OutId}", \ \ \ \ "factoryId":"${factoryId}", \ \ \ \ "operaterId":null, \ \ \ \ "operaterName":null, \ \ \ \ "weightNoteId":"${weightNoteId}", \ \ \ \ "deliveryChannelType":1, \ \ \ \ "consigneeId":null, \ \ \ \ "consigneeName":"${ChannelName}", \ \ \ \ "productId":null, \ \ \ \ "productName":null, \ \ \ \ "packageQuantity":null, \ \ \ \ "status":"${status}", \ \ \ \ "plateNumber":"${plateNumber}", \ \ \ \ "driverName":null, \ \ \ \ "auditorName":null, \ \ \ \ "auditorId":null, \ \ \ \ "createTime":"${createTime}", \ \ \ \ "updadeTime":null, \ \ \ \ "agencySellOrderItemId":null, \ \ \ \ "unitPrice":null, \ \ \ \ "totalEstimatedAmount":0, \ \ \ \ "orderNumber":"${orderNumber}", \ \ \ \ "remark":null, \ \ \ \ "isHandworkOrder":0, \ \ \ \ "salesGuy":null, \ \ \ \ "receiptAddress":null, \ \ \ \ "roleName":null, \ \ \ \ "totalWeight":"${OutFirstWeight}", \ \ \ \ "netWeight":"${NetWeight}", \ \ \ \ "emptyWeight":"${OutSecondWeight}", \ \ \ \ "factoryDeliveryChannelId":"${ChannelId}", \ \ \ \ "estimatedAmount":"${estimatedAmount}", \ \ \ \ "outboundDeliveryOrderProductItemList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"${unitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "productCategoryId":"${productcategoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${defaultUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0, \ \ \ \ \ \ \ \ \ \ \ \ "settleWeight":null, \ \ \ \ \ \ \ \ \ \ \ \ "deductPercent":null, \ \ \ \ \ \ \ \ \ \ \ \ "estimatedAmount":"${estimatedAmount}", \ \ \ \ \ \ \ \ \ \ \ \ "proportionOfProduct":100 \ \ \ \ \ \ \ \ } \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/relevancy/weight-note/and/outbound-delivery-order ${OutboundOrderData.encode('utf-8')} + #出货审核通过 + ${OutAuditData} Set Variable {"id":"${OutId}","auditStatus":1} + ${reps} POST On Session ztbf ztb-factory/audit/outbount-delivery-order ${OutAuditData.encode('utf-8')} + #待付款列表 + ${reps} GET On Session ztbf ztb-factory/get/outbound-delivery-order-list params=pageNum=1&pageSize=15&status=1 + ${deliveryList} Get From Dictionary ${reps.json()['data']} records + FOR ${items} IN @{deliveryList} + ${id} Get From Dictionary ${items} id #订单编号 + ${productItemId} Get From Dictionary ${items['productItemList'][0]} id #订单项编号 + Exit For Loop If '${id}'=='${OutId}' + END + #确认付款 + ${paperMillNetWeight} Set Variable 10 #纸厂净重(吨) + ${deductPercent} Set Variable 2 #扣点(%) + ${settleWeight} Evaluate ${paperMillNetWeight}-${paperMillNetWeight}*${deductPercent}/1000 #结算重量(吨) + ${OutPayData} Set Variable { \ \ \ \ "id":"${OutId}", \ \ \ \ "categoryId":"${categoryId}", \ \ \ \ "outboundDeliveryOrderProductItemList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "settlementProductId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "id":"${productItemId}", \ \ \ \ \ \ \ \ \ \ \ \ "paperMillNetWeight":"${paperMillNetWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "settleWeight":"${settleWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "deductPercent":"${deductPercent}", \ \ \ \ \ \ \ \ \ \ \ \ "settleUnitPrice":"${unitPrice}" \ \ \ \ \ \ \ \ } \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/confirm/outbound-delivery-order-receipt ${OutPayData.encode('utf-8')} diff --git a/001-Client/1-FactoryReceipt.robot b/Factory/Client/1-FactoryReceipt.robot similarity index 68% rename from 001-Client/1-FactoryReceipt.robot rename to Factory/Client/1-FactoryReceipt.robot index b830ca6..dc7f38f 100644 --- a/001-Client/1-FactoryReceipt.robot +++ b/Factory/Client/1-FactoryReceipt.robot @@ -23,44 +23,35 @@ ReceiptOrder ReceiptWeigh #厂内收货--刷卡过磅 - #获取客户列表 - Create Session ztbf ${ztbClient} ${client_header} - ${reps} GET On Session ztbf ztb-factory/factory/get/customer-list params=name=&pageNum=1&pageSize=1500 - ${customerList} Get From Dictionary ${reps.json()['data']} records #客户列表 - FOR ${CustomerInfo} IN @{customerList} - ${name} Get From Dictionary ${CustomerInfo} name #客户姓名 - ${cardNo} Get From Dictionary ${CustomerInfo} cardNo #客户卡ID - ${CustomerId} Get From Dictionary ${CustomerInfo} id #客户唯一标识 - Exit For Loop If '${CustomerId}'=='136' - END #刷卡过磅--过毛重 + Create Session ztbf ${ztbClient} ${client_header} ${weight} Set Variable 2410 - ${weighData} Set Variable {"cardNo":"${cardNo}","weight":${weight}} + ${weighData} Set Variable {"cardNo":"${ReceiptcardNo}","weight":${weight}} ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${weighData.encode('utf-8')} - ${orderId} Get From Dictionary ${reps.json()['data']} id #订单id - Set Global Variable ${orderId} + ${ReceiptOrderId} Get From Dictionary ${reps.json()['data']} id #订单id + Set Global Variable ${ReceiptOrderId} Should Be Equal As Strings ${reps.json()["message"]} 毛重称重成功,${weight}公斤,请下地磅 #定价详情 - ${reps} GET On Session ztbf ztb-factory/factory/wechat-applet/get/order-detail/${orderId} + ${reps} GET On Session ztbf ztb-factory/factory/wechat-applet/get/order-detail/${ReceiptOrderId} ${plateNumber} Get From Dictionary ${reps.json()['data']} plateNumber #车牌号 ${isWithoutTare} Get From Dictionary ${reps.json()['data']} isWithoutTare #是否无皮过磅,0否1是 ${proportionOfProduct} Get From Dictionary ${reps.json()['data']} proportionOfProduct ${plateNumber} Set Variable If '${plateNumber}'=='${None}' null ${plateNumber} #确定定价 ${unitPrice} Set Variable 1.88 - ${submitData} Set Variable { \ \ \ \ "id":"${orderId}", \ \ \ \ "productInfoDtoList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"2.1", \ \ \ \ \ \ \ \ \ \ \ \ "proportionOfProduct":"${proportionOfProduct}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${defaultUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0 \ \ \ \ \ \ \ \ } \ \ \ \ ], \ \ \ \ "plateNumber":${plateNumber}, \ \ \ \ "factoryCustomerId":"${CustomerId}", \ \ \ \ "deductType":1, \ \ \ \ "inspectionRemark":"确定定价", \ \ \ \ "isWithoutTare":"${isWithoutTare}" } + ${submitData} Set Variable { \ \ \ \ "id":"${ReceiptOrderId}", \ \ \ \ "productInfoDtoList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"2.1", \ \ \ \ \ \ \ \ \ \ \ \ "proportionOfProduct":"${proportionOfProduct}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${defaultUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0 \ \ \ \ \ \ \ \ } \ \ \ \ ], \ \ \ \ "plateNumber":${plateNumber}, \ \ \ \ "factoryCustomerId":"${ReceiptCustomerId}", \ \ \ \ "deductType":1, \ \ \ \ "inspectionRemark":"确定定价", \ \ \ \ "isWithoutTare":"${isWithoutTare}" } ${reps} POST On Session ztbf ztb-factory/factory/submit/order-price ${submitData.encode('utf-8')} #刷卡过磅--过皮重 ${weightTare} Set Variable 2000 - ${weighData} Set Variable {"cardNo":"${cardNo}","weight":${weightTare}} + ${weighData} Set Variable {"cardNo":"${ReceiptcardNo}","weight":${weightTare}} ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${weighData.encode('utf-8')} - ${orderId} Get From Dictionary ${reps.json()['data']} id #订单id + ${ReceiptOrderId} Get From Dictionary ${reps.json()['data']} id #订单id Should Be Equal As Strings ${reps.json()["message"]} 皮重称重成功,${weightTare}公斤,正在打印磅单 #过磅审核 - ${auditData} Set Variable {"id":"${OrderId}"} + ${auditData} Set Variable {"id":"${ReceiptOrderId}"} ${reps} POST On Session ztbf ztb-factory/factory/audit-pass/order ${auditData.encode('utf-8')} #支付订单--千鸟代付 - ${paymentData} Set Variable {"settleType":3,"ids":["${OrderId}"]} + ${paymentData} Set Variable {"settleType":3,"ids":["${ReceiptOrderId}"]} ${reps} POST On Session ztbf ztb-factory/wechat-applet/merge-receiving-pay-order/pay ${paymentData.encode('utf-8')} Print_weight_order diff --git a/001-Client/2-FactoryOffsite.robot b/Factory/Client/2-FactoryOffsite.robot similarity index 100% rename from 001-Client/2-FactoryOffsite.robot rename to Factory/Client/2-FactoryOffsite.robot diff --git a/Factory/Client/3-FactoryOutbound.robot b/Factory/Client/3-FactoryOutbound.robot new file mode 100644 index 0000000..5cd47fe --- /dev/null +++ b/Factory/Client/3-FactoryOutbound.robot @@ -0,0 +1,100 @@ +*** Settings *** +Library Collections +Library RequestsLibrary + +*** Test Cases *** +OutboundOrder + #出货--手工单 + Create Session ztbf ${ztbClient} ${client_header} + ${netWeight} Set Variable 5000 #净重(公斤) + ${unitPrice} Set Variable 2.02 #单价(元/公斤) + ${konePrice} Evaluate ${defaultUnitPrice}*1000 #指导价格 + ${plateNumber} Set Variable 沪H22222 #车牌号 + ${estimatedAmount} Evaluate ${netWeight}*${unitPrice} + ${OutData} Set Variable { \ \ \ \ "isHandworkOrder":1, \ \ \ \ "estimatedAmount":"${estimatedAmount}", \ \ \ \ "deliveryChannelType":1, \ \ \ \ "factoryDeliveryChannelId":"${ChannelId}", \ \ \ \ "consigneeName":"${ChannelName}", \ \ \ \ "plateNumber":"${plateNumber}", \ \ \ \ "outboundDeliveryOrderProductItemList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"${unitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "productCategoryId":"${productcategoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${konePrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0, \ \ \ \ \ \ \ \ \ \ \ \ "netWeight":"${netWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "settleWeight":null, \ \ \ \ \ \ \ \ \ \ \ \ "deductPercent":null, \ \ \ \ \ \ \ \ \ \ \ \ "estimatedAmount":"${estimatedAmount}" \ \ \ \ \ \ \ \ } \ \ \ \ ], \ \ \ \ "weightNoteImageUrls":[ \ \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/save/outbound-delivery-order ${OutData.encode('utf-8')} + #待审核列表 + ${reps} GET On Session ztbf ztb-factory/get/outbound-delivery-order-list params=pageNum=1&pageSize=15&status=0 + ${weightNoteList} Get From Dictionary ${reps.json()['data']} records #待审核列表 + FOR ${items} IN @{weightNoteList} + ${OrderId} Get From Dictionary ${items} id #出货订单id + ${productId} Get From Dictionary ${items} productId #纸品id + Exit For Loop If '${productId}'=='${categoryId}' + END + #磅单审核通过 + ${auditData} Set Variable {"id":"${OrderId}","auditStatus":1} + ${reps} POST On Session ztbf ztb-factory/audit/outbount-delivery-order ${auditData.encode('utf-8')} + #待付款列表 + ${reps} GET On Session ztbf ztb-factory/get/outbound-delivery-order-list params=pageNum=1&pageSize=15&status=1 + ${deliveryList} Get From Dictionary ${reps.json()['data']} records + FOR ${items} IN @{deliveryList} + ${id} Get From Dictionary ${items} id #订单编号 + ${productItemId} Get From Dictionary ${items['productItemList'][0]} id #订单项编号 + Exit For Loop If '${id}'=='${OrderId}' + END + #确认付款 + ${paperMillNetWeight} Set Variable 13 #纸厂净重(吨) + ${deductPercent} Set Variable 2.1 #扣点(%) + ${settleWeight} Evaluate ${paperMillNetWeight}-${paperMillNetWeight}*${deductPercent}/1000 #结算重量(吨) + ${PayData} Set Variable { \ \ \ \ "id":"${OrderId}", \ \ \ \ "categoryId":"${categoryId}", \ \ \ \ "otherFee":0, \ \ \ \ "subsidy":0, \ \ \ \ "proxyPaySurcharge":0, \ \ \ \ "freight":0, \ \ \ \ "outboundDeliveryOrderProductItemList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "settlementProductId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "id":"${productItemId}", \ \ \ \ \ \ \ \ \ \ \ \ "paperMillNetWeight":"${paperMillNetWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "settleWeight":"${settleWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "deductPercent":"${deductPercent}", \ \ \ \ \ \ \ \ \ \ \ \ "settleUnitPrice":"${unitPrice}" \ \ \ \ \ \ \ \ } \ \ \ \ ], \ \ \ \ "factoryId":"${factoryId}" } + ${reps} POST On Session ztbf ztb-factory/confirm/outbound-delivery-order-receipt ${PayData.encode('utf-8')} + +OutboundDeviceOrder + #出货--刷卡单 + #第一次刷卡过磅--皮重 + Create Session ztbf ${ztbClient} ${client_header} + ${OutFirstWeight} Set Variable 2000 + ${OutFirstWeightData} Set Variable { \ \ \ \ "cardNo":"${OutCarNo}", \ \ \ \ "weight":"${OutFirstWeight}" } + ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${OutFirstWeightData.encode('utf-8')} + ${OutWeightId} Get From Dictionary ${reps.json()['data']} id #刷卡过磅id + Should Be Equal As Strings ${reps.json()['message']} 第一次过磅成功,${OutFirstWeight}公斤,请下地磅 + #绑定磅单图片 + ${OutFirstBinding} Set Variable { \ \ \ \ "orderId":"${OutWeightId}", \ \ \ \ "imageUrl":"${OutboundImage}", \ \ \ \ "index":"1" } + ${reps} POST On Session ztbf /ztb-factory/binding/order-image ${OutFirstBinding.encode('utf-8')} + sleep 0.5 + #第二次刷卡过磅--毛重 + ${OutSecondWeight} Set Variable 4520 + ${OutSecondWeightData} Set Variable { \ \ \ \ "cardNo":"${OutCarNo}", \ \ \ \ "weight":"${OutSecondWeight}" } + ${reps} POST On Session ztbf ztb-factory/factory-customer/save/order ${OutSecondWeightData.encode('utf-8')} + Should Be Equal As Strings ${reps.json()['message']} 第二次过磅成功,${OutSecondWeight}公斤,请下地磅 + #绑定磅单图片 + ${OutSecondBinding} Set Variable { \ \ \ \ "orderId":"${OutWeightId}", \ \ \ \ "imageUrl":"${OutboundImage}", \ \ \ \ "index":"1" } + ${reps} POST On Session ztbf /ztb-factory/binding/order-image ${OutSecondBinding.encode('utf-8')} + sleep 0.5 + #出货列表 + ${reps} GET On Session ztbf ztb-factory/get/outbound-delivery-order-list params=pageNum=1&pageSize=15 + ${OutList} Get From Dictionary ${reps.json()['data']} records #出货列表 + FOR ${OutInfo} IN @{OutList} + ${OutId} Get From Dictionary ${OutInfo} id #出货id + ${status} Get From Dictionary ${OutInfo} status #出货订单状态 + ${factoryId} Get From Dictionary ${OutInfo} factoryId #出货工厂id + ${createTime} Get From Dictionary ${OutInfo} createTime #出货订单创建时间 + ${orderNumber} Get From Dictionary ${OutInfo} orderNumber #出货订单 + ${weightNoteId} Get From Dictionary ${OutInfo} weightNoteId #出货磅单id + ${NetWeight} Get From Dictionary ${OutInfo} outboundDeliveryNetWeight #出货总净重(公斤) + Exit For Loop If '${weightNoteId}'=='${OutWeightId}' #判断订单编号是否相等 + END + #确认出货 + ${unitPrice} Set Variable 2.35 #出货品类单价 + ${plateNumber} Set Variable 川F66666 #出货车牌号 + ${estimatedAmount} Evaluate ${unitPrice}*${NetWeight} #预估金额(元) + ${defaultUnitPrice} Set Variable ${defaultUnitPrice}*1000 #指导价格 + ${OutboundOrderData} Set Variable { \ \ \ \ "id":"${OutId}", \ \ \ \ "factoryId":"${factoryId}", \ \ \ \ "operaterId":null, \ \ \ \ "operaterName":null, \ \ \ \ "weightNoteId":"${weightNoteId}", \ \ \ \ "deliveryChannelType":1, \ \ \ \ "consigneeId":null, \ \ \ \ "consigneeName":"${ChannelName}", \ \ \ \ "productId":null, \ \ \ \ "productName":null, \ \ \ \ "packageQuantity":null, \ \ \ \ "status":"${status}", \ \ \ \ "plateNumber":"${plateNumber}", \ \ \ \ "driverName":null, \ \ \ \ "auditorName":null, \ \ \ \ "auditorId":null, \ \ \ \ "createTime":"${createTime}", \ \ \ \ "updadeTime":null, \ \ \ \ "agencySellOrderItemId":null, \ \ \ \ "unitPrice":null, \ \ \ \ "totalEstimatedAmount":0, \ \ \ \ "orderNumber":"${orderNumber}", \ \ \ \ "remark":null, \ \ \ \ "isHandworkOrder":0, \ \ \ \ "salesGuy":null, \ \ \ \ "receiptAddress":null, \ \ \ \ "roleName":null, \ \ \ \ "totalWeight":"${OutFirstWeight}", \ \ \ \ "netWeight":"${NetWeight}", \ \ \ \ "emptyWeight":"${OutSecondWeight}", \ \ \ \ "factoryDeliveryChannelId":"${ChannelId}", \ \ \ \ "estimatedAmount":"${estimatedAmount}", \ \ \ \ "outboundDeliveryOrderProductItemList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "productId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "productName":"${categoryName}", \ \ \ \ \ \ \ \ \ \ \ \ "unitPrice":"${unitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "productCategoryId":"${productcategoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "konePrice":"指导价格:${defaultUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "highestUnitPrice":"${highestUnitPrice}", \ \ \ \ \ \ \ \ \ \ \ \ "lowestUnitPrice":0, \ \ \ \ \ \ \ \ \ \ \ \ "settleWeight":null, \ \ \ \ \ \ \ \ \ \ \ \ "deductPercent":null, \ \ \ \ \ \ \ \ \ \ \ \ "estimatedAmount":"${estimatedAmount}", \ \ \ \ \ \ \ \ \ \ \ \ "proportionOfProduct":100 \ \ \ \ \ \ \ \ } \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/relevancy/weight-note/and/outbound-delivery-order ${OutboundOrderData.encode('utf-8')} + #出货审核通过 + ${OutAuditData} Set Variable {"id":"${OutId}","auditStatus":1} + ${reps} POST On Session ztbf ztb-factory/audit/outbount-delivery-order ${OutAuditData.encode('utf-8')} + #待付款列表 + ${reps} GET On Session ztbf ztb-factory/get/outbound-delivery-order-list params=pageNum=1&pageSize=15&status=1 + ${deliveryList} Get From Dictionary ${reps.json()['data']} records + FOR ${items} IN @{deliveryList} + ${id} Get From Dictionary ${items} id #订单编号 + ${productItemId} Get From Dictionary ${items['productItemList'][0]} id #订单项编号 + Exit For Loop If '${id}'=='${OutId}' + END + #确认付款 + ${paperMillNetWeight} Set Variable 10 #纸厂净重(吨) + ${deductPercent} Set Variable 2 #扣点(%) + ${settleWeight} Evaluate ${paperMillNetWeight}-${paperMillNetWeight}*${deductPercent}/1000 #结算重量(吨) + ${OutPayData} Set Variable { \ \ \ \ "id":"${OutId}", \ \ \ \ "categoryId":"${categoryId}", \ \ \ \ "outboundDeliveryOrderProductItemList":[ \ \ \ \ \ \ \ \ { \ \ \ \ \ \ \ \ \ \ \ \ "settlementProductId":"${categoryId}", \ \ \ \ \ \ \ \ \ \ \ \ "id":"${productItemId}", \ \ \ \ \ \ \ \ \ \ \ \ "paperMillNetWeight":"${paperMillNetWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "settleWeight":"${settleWeight}", \ \ \ \ \ \ \ \ \ \ \ \ "deductPercent":"${deductPercent}", \ \ \ \ \ \ \ \ \ \ \ \ "settleUnitPrice":"${unitPrice}" \ \ \ \ \ \ \ \ } \ \ \ \ ] } + ${reps} POST On Session ztbf ztb-factory/confirm/outbound-delivery-order-receipt ${OutPayData.encode('utf-8')} diff --git a/002-FactoryBackstage/1-PaymentOperation.robot b/Factory/FactoryBackstage/1-PaymentOperation.robot similarity index 93% rename from 002-FactoryBackstage/1-PaymentOperation.robot rename to Factory/FactoryBackstage/1-PaymentOperation.robot index 988d3aa..593135d 100644 --- a/002-FactoryBackstage/1-PaymentOperation.robot +++ b/Factory/FactoryBackstage/1-PaymentOperation.robot @@ -7,7 +7,7 @@ Library DateTime PaymentReview #千鸟代付审核列表 Create Session ztbf ${opsztb} ${ops_header} - ${reps} GET On Session ztbf ztb-factory/admin/get/agency-payment-order-audit-request-list params=status=&orderId=${orderId}&pageNum=1&pageSize=10 + ${reps} GET On Session ztbf ztb-factory/admin/get/agency-payment-order-audit-request-list params=status=&orderId=${ReceiptOrderId}&pageNum=1&pageSize=10 ${AuditId} Get From Dictionary ${reps.json()['data']['records'][0]} id #代付审核id #代付审核通过 ${data} Set Variable { \ \ \ \ "id":"${AuditId}", \ \ \ \ "remark":"", \ \ \ \ "status":1 } @@ -16,7 +16,7 @@ PaymentReview PaymentPayable #代付应付 Create Session ztbf ${opspsc} ${ops_header} - ${reps} GET On Session ztbf payment-settlement-center/admin/get/agency-payment-order-payable-list params=status=&pageNum=1&pageSize=10&orderId=${orderId} + ${reps} GET On Session ztbf payment-settlement-center/admin/get/agency-payment-order-payable-list params=status=&pageNum=1&pageSize=10&orderId=${ReceiptOrderId} ${PayId} Get From Dictionary ${reps.json()['data']['records'][0]} id #代付应付Id #代付应付通过 ${PayData} Set Variable { \ \ \ \ "id":"${PayId}", \ \ \ \ "isMergePayment":0, \ \ \ \ "auditStatus":1 } @@ -25,7 +25,7 @@ PaymentPayable PaymentReceivable #代付应收 Create Session ztbf ${opspsc} ${ops_header} - ${reps} GET On Session ztbf /payment-settlement-center/admin/get/agency-payment-order-receivable-list params=status=0&orderId=${orderId}&pageNum=1&pageSize=10 + ${reps} GET On Session ztbf /payment-settlement-center/admin/get/agency-payment-order-receivable-list params=status=0&orderId=${ReceiptOrderId}&pageNum=1&pageSize=10 ${ReceiveId} Get From Dictionary ${reps.json()['data']['records'][0]} id #代付应收id ${receivablePrice} Get From Dictionary ${reps.json()['data']['records'][0]} receivablePrice #代付应收金额 #确认收款 diff --git a/Login/__init__.robot b/Test/Login/__init__.robot similarity index 100% rename from Login/__init__.robot rename to Test/Login/__init__.robot diff --git a/Login/factory.robot b/Test/Login/factory.robot similarity index 100% rename from Login/factory.robot rename to Test/Login/factory.robot diff --git a/Login/关键字.robot b/Test/Login/关键字.robot similarity index 100% rename from Login/关键字.robot rename to Test/Login/关键字.robot diff --git a/ZTB小程序/出货.robot b/Test/ZTB小程序/出货.robot similarity index 100% rename from ZTB小程序/出货.robot rename to Test/ZTB小程序/出货.robot diff --git a/ZTB小程序/厂内收货.robot b/Test/ZTB小程序/厂内收货.robot similarity index 100% rename from ZTB小程序/厂内收货.robot rename to Test/ZTB小程序/厂内收货.robot diff --git a/ZTB小程序/厂外收货.robot b/Test/ZTB小程序/厂外收货.robot similarity index 100% rename from ZTB小程序/厂外收货.robot rename to Test/ZTB小程序/厂外收货.robot diff --git a/ZTB小程序/常规代卖.robot b/Test/ZTB小程序/常规代卖.robot similarity index 100% rename from ZTB小程序/常规代卖.robot rename to Test/ZTB小程序/常规代卖.robot diff --git a/ZTB小程序/登录.robot b/Test/ZTB小程序/登录.robot similarity index 100% rename from ZTB小程序/登录.robot rename to Test/ZTB小程序/登录.robot diff --git a/__init__.txt b/Test/__init__.txt similarity index 100% rename from __init__.txt rename to Test/__init__.txt diff --git a/log.html b/Test/log.html similarity index 100% rename from log.html rename to Test/log.html diff --git a/output.xml b/Test/output.xml similarity index 100% rename from output.xml rename to Test/output.xml diff --git a/report.html b/Test/report.html similarity index 100% rename from report.html rename to Test/report.html diff --git a/ztb-factory.sh b/Test/ztb-factory.sh old mode 100755 new mode 100644 similarity index 100% rename from ztb-factory.sh rename to Test/ztb-factory.sh diff --git a/系统设置/员工管理.robot b/Test/系统设置/员工管理.robot similarity index 100% rename from 系统设置/员工管理.robot rename to Test/系统设置/员工管理.robot diff --git a/common_26091119022578881.jpg b/common_26091119022578881.jpg new file mode 100644 index 0000000000000000000000000000000000000000..678a9bd0116306bb166bb5fcef2755956b026f20 GIT binary patch literal 71441 zcmbUJd0bOx8#RpXj6fJf*&-kyh`^2t64_M-(Ev?ILVyfvZOY@LppejNK@=6MO&Ani>*`~0&0supr|-h!GefrRnV%{e%Gdb-uL^Rzs@=KM+qU*-uu4R zwXU_+&EMDlzJs_6xO^@`A|VI~{zLx0fg~cXP7G&;qpLH++0D&$l1IQ)k110;LVf+G z1%xwM5#h|Rxsfq~#gPlR3+INh-;3u8QzcT#{Kc}>GSMo5SdvD(2+7UO&114h$keGJ zY43!+llK4fzrS0M$&S=02PK6x6CqC~Q6`iAzJSbt&q*Uq{6qfzMWWJ3XH^HQ59tg>li5;N-|+c2-&#+8_kGi;AI_b>U~6r=cK9A|aH24h#PO&w>4a9M@zxE;5x$p*j%9 zMIvv8FUn*pEs#Z@5-)aGo#!!gzRD3zIB@L5S*M^#$sbcQHgqvOXW@5)pAd&Oab*AB z9az!-Uq|+T4($IPS0Ca+A;HC?Oh%R<*UhFn$(lW7m@N!Nv<9^ZTXjy2>1jq(%tp*M zR76tCFg+RWB5TCSYDBQIC!6#u*2#pR zna2*~^v;f+qMV~r*M`(zw9T&ZL99#;%S|zcSj8M9&}23!eR3Ac4x@JK&gE-6&~xVZ zoX^JP{2Yw$&&ini?!K*SZ*Cuc?UQ)q^bYO1!P+Q29gnJ?H9hCS>ay9}XT1CNX471I zlXcHe4{98i^y-|w$w%xzCZBQS%-nJBhohP5^FRJ!dvjve>dwMnZ6P6R)|;43J*`u| zTvq;tn`7PF9Yq$w`FEM_exI)?Gp%^Aj6K_{(?F$^2wC4Yi6$NjaFFg6~)=X4AqI*fEM{ z)nT1%IZ1A)Pca-Y}E$eoN%@m~v9S zfQg|kQ4d*cgNp5}%UwKnnWPWr>tyS<+*$LwtFPLv9mBhlb@8hnr1AsoZ;@`r`I-$& zd^Wr1Jx`svQ|O_6Paabh@Nh z>SCUZaDrzk=R1XdoTyH?Y})>?EY$&>@fq)4#Rg;mL>{@ZziH8+=^J2CcfyW-1jFRn1T3zgery5GxpInZIIpuQ4` zy#QAq-=rTKXbk;GO=nd_=`;R_Zi_M*XN-FAdDQ;0G3$n@`*XKgSdljiOh35ru<@vMZRevLlZwAnFFXxSwCi z_Ur5&2MNCA@365y8O2j(0N5t9N$JEasr@lO(jrrNP{l)pb$`SSSUl<<9#a&fF z<*_brnE%l<{_uY8(xIOEx(#0y?qDVfm^t3nS}_z-STKrMC0+ki6o-I2rhEeKRwr{% zcpLai<{%4-?P^zKLAl-DNoM?uhjYUKA}<)K)CguoMdU6h$K%diCbI{rwnSWPV6u3O z$`FpYHs;rj?aOp?2dg!8f;|VP7OeOq=iA1JndBntUy^?1?2DiI&%P0o<0+K7AJA2A ztVhl^h@P;gi1~2bUa0g08&wJ=qjj`8lF;!xsciNM^?$S^>CeWsA3U|;7veB-<%MVM zQ)|4Rt&f`ZDdWXE_kZxO`Ofpec^}%l>5PFdXMN!P*WoFykD6K-A_2Y3*>`tFT|Y==suLT zzteE@-F3qCp9L+=QXM!M(cP!xuw3x&w3&yctM?g-Inxl6*<=B<69pL5Oy$HG*Fgh< z2I6i#WU6D(C$K^$TL*WVEkintbgn|h2|zcS{RrfeF)QfuiGxI^-h5J{rUUZOOzrUePFHl5 zh@``8e)Xh$_AopG8|DOuA%6D_>Q$)3E+X+cVFAaXycmc~fWe}bblp}?si;!ZaR6_; zGtjCXNEx|NhdR0`m}#ii?W`{9(R|Ewk2pSz?%$)eO5L^9i|qC+OC573_=|fM|&&(Fyl3LDq7oP&DyI;*-%%t}f#@~j;h`aE}1AvJV8jkJ5+ zjh&?XT!n*o`V0Mm$1gKH1&3ZA0lQgxb zMs(sA8-6-7gd!!M)D81;lPvN}aZ7yWPl`M4Xp(p=8bAwHk8-?B%ak=P9)0EZ+C!G& z8;eAaSck8R_;zI|C9V`f%H3$UhAlX;ZSK38rpv-%*Z7@Tm@l|l(wp@{7yaktAKv-MO%F`HNo z5=6fd0D__u$S~6U?JSPJbz8T)q0ISFbjJyx0O#WbYGzJ&fF5eMNXtOX1V7;*DAcqQ zFcur!`sb$$6C{S;2_@`<2rvV*Rrr#@1=L!_>~m_F0FkkXwL>r+zyRU~X_8>) zyX|SbpLOi)cF&xe6L)&82L?a?c`8myr* z%8w}}A~~EmwSY~p&~^z|3v)KTQ}5m_#DQtZ6Md>VJjFit82ixY;n2*n&qos1oZN<<{C z!vM#(liUU5Cvb}`7}X-yY_+hf9j>!3QiqTRHFh!EW-_R$e#4Oy7rG0$qGf0#HQLfi z7Rftg&}M)MIrBLoirunQc}OK5;9|Fn@`dqy9h2!8WzeV-g*02hV>ar`NIbqTsUJh@ zYFkx%cv}bhs>)yJsX@&F7fn|duT1kc^_h7eeYf3>6+iP?MOve`zOuG(hF#UE%XA-F zl!@*-po=_e_HHAqNPc-QrAZ^Vi}HGlJNGqjvy+yTbX|$ONH2c+hr;Q;lV0ImgqCyp zqbbyZS~fL$7L2a(v502l$ZGOVrE*x2wwS z`8=BGF&u36SBh9z0!VH&{OH>mVJPoJ0MCqPgyI8i`u6)qXs%iN>nQg9b+UxqxckUs zzK-a@;$$vd95XO?5ffOeqx@bro~KLA*W>}&+ybyJkO^c6)8Pz!N2EQ($@i}V{wd)} z;OxQ*0pM5sQ!9v>c=$x`WXipWQX~3iaF`dg1fHT*N4$?oPl2kW{L?`HeVRcHZ;%Hs zOvixNPZTA*2z~zGv5G~%>J&2M*xY5y`fWMiQ2LH-;Y_0}T#XuHnpWu(%YJ1qecG^} zCf~iw9F!1;IeX7@n(8fFu06r{@=52Mscq;V@--&%XUYQ#g|b`Q?fxVc?NppAZ&N$S zXkir3@-Ci&(UOAeq{0xTd$*#sqTC5suV57l>>JS%=t0~#L=+j!9TbM5PU1t2=;qb= zC@dj(PnIbsQ%YW7nJk$s#7W*3-BycENcRyex7hsv=1dl{WKDNNbHkp!{NKC{8d0F! zpr)gejDv7ybWkJYvt0QNHvAx>YWvs1J`#%Am-JC7LGEt==YJR8$F zXL82DsR5~qf>#V=_dGKuJE)+L_i2^;*I}~Cb>V%hlD<=(4Cy29Z&iAKulo=13K6A1 zQd*}LAX&_U?i2BPsx5>G*E{1Nx!nF-pCRUi$fuT?(L<&yv3De-{xT+sD(MEuOFIXb zz=$JO?I9arVcA&rZ5SqsN1;MomiWj7f{bZ6H04F%Avrs4NxcGJw%O)n1<5 zp!7INR!8f}aLjB{KX8^iz)ucvLZGq8#K0`Vd?h~6c2@TErFW8m2wR)$p)%P9<+LXN zWSI;x|F${-5Eetsi))WI2BR(GGVyJ-LtzmIRwZJng6T2?njK<>PDwN^s4;`;nn276 zLxR1Caw6&xI-ZDYCtfn4wBJaRVyW3LP@+-@Z9f-Ox!D>D~AB zj;DV}3pX3lbjJmZ4_%i2t}rW9smuEH8^7rAOX%v##bTCj%Na=$;~PmIpw$hBn5Bx{ zoT!GW4b^q^=2iYoPC%WTb|<>C3Q)kOS}_RUENXyUAdO6=Rt(E?qLVq9aS@q74z0Gi z9&Zga;g)hcw6UB#6Q2HVmab6R&T3Gew;OZH$1IbD?&pQ?1fu6Kuk$JIgfJKQBzUWt zcd^Ocq-x{Tkjr8}BvJhzOWo7q1tMy&Yxw1(YyJP*tGc#pEhab&U*vn!nKx#y(;mYn z(>roDAH391)MXV>KVW|H(`;x#^oV(W*!9u0eyA81=VYt&L=t)d4}(6Xr=kF0e&=8% z6L6)1zJyA=L@@vu^!=S(oCt z7LOTqA8T?>r5oGBrn$cozV6BR~O0gHs`w7yXBU^>tj$_=vU+}9WW=l++JvrlEC+IE? zji}4`TC)i~IqM&aG%+_SFcLIFJuo{-C$WxQn2H#CX8^Q45evW{VY-F|>Z$n7s&e>s zGRM;kW<0Ekcma@eGL$Z2E$z6$Hg89A!Eb-5?f)`s^TGR{0~?Vh@ml#2c+xA9ta zgb<~t!#5uVd>XBoO)}~2q5u;P-OeXfv8^kS+H?+|mt;n8%qTaT_4H9Rqe>$pLpKz&oq+2RV-&y*9CJJe%~IWT^{Y3YB;^{) zeV8m7sy(F79A-xHE7c$=^_TVZF_DM%?Av8<#^shSp+isJghxe ziQfc}Ru(Aog&`u2sJye)(Z zW*W13kAjF6nbM91`00f9?aWhp2Rpn)B%6^x5^s9>gX(FSr4pY~ZIxt|*D#QDyQlH^ z@ShSNxiGRl4BuoP3ayR9d=dsL@k1s(ZON{2)6F<}yTer+k%+J4>k=!r>M1Yn*-KK# zT>eHpBS+&6=Ukq&m^x``QbXVoYwwxFj z5gz&}EMriLy=O>yX*el{B^sjs_*0eLD zavh(?K_by=C~y2L^5m46H7S93i$GyE4YNyZ!Qs$y#UND?+O&@CWrh|LF|Coh|LFD6<(p`gsM!3)36?P?UWud(@@@A%{Ut@Qs z`PFyG(pCdddFkntsDa+k`$;zMHwxFOLF_^iGdgINC`LpYIeRBt&6fN6zAz7cWnXN) zfY-`L;*Dlc#33j^k{OqJ^Tn}mxRJfO7Weq|%}Mo!7L1ykyWJKT6=hx`l&pECYG*ke zEsW{p#qQ1f7I7KJwbcP_eN04WE!geZ;a5@{uEChA_d>k?7!+>JdkH0*TD z+qmS2cfX2+YqO(=bgVY~ER8v+vR9NpbkN1?fRGNLL>cIW`&-p3dyr3O$BNYgYFK~~ z7qOBAiFP%!wA6@;c?EGfRTUbQl6PrXk`)#Pox%f!n%RkpIW9CCbh!Y7Myz&NHNkHy z)KExaAjQGhiA_wC^jfWUzalY6H(YI_}{=WfH>5O%P9_Lf;l2h6-H4;j3_ey=CPO4gV>5_#at5&oNaip84km=-zMJG$- zC=+>#6zE%Gb-MKUPJ1^9wJqy0+mdx5Or+X~K9u;d0}VwA41whrQm#WHc`4Lxr(?=~ zg~^^(u2VR=hA7}ZBwP_I5%Dafcz9fUz%;z1n{N&Q>qa27ukTm-=>+Q^ER;048S(a; z5_(On}2>*u?>fwfkOSjz* z<2k`^jkowe94X=du&?Kr*OK*y^D}h9?hW!wiotZ4Z&#VA&r;>X+DB%p-~PzD3_NT860EIKnR+96kb4_j#tfP+_6iX31(DF-n!H0Q zT3N|sl|^;@x6n1j0V#{MlN6Eh7rjhDs+xRzwZk!LesWuScU}it z;xg3iIkhcI2h-#MK9~(>^YTY{skzSN^Y!KqUwbY;Ks9a&RG8eX#@MZKG2L5-YdXpI zo)2>Zsp38uvmynK!+dr8su8|24vLE5<`$99zF=&2xM8L=x*Xf4O58ZJ^1H5c`>&KO zHk6l)nHFUo`K=F*F@qfIlXmP?r(B=m!3Un0@M%mW&|Ki1V2a6{;2Kb081Xz6zvCpr zj8mMJyaLTK5gyr!iut^RAvLpkcnb`m1%}G#(IgzP7Ql$@jgt{B=%}ouLefs`jp9=u z5C;`?YT4>l;8C!Hz53OWHcEoO)~$97BtCU)7n{L^Sr8HTRjH|grWv0x^-^q!PilTr zVR~m!?hF^GYIT@?B_&E9WoKMYBSXeMO z>I8GiJ_3+*OG2<4sW-TNgs@nE*&?Q^S*f6gxCjWbo|F=z)vd-IT?26skbzL0B8T{o z8l_X<_MTg}#~xCCmgc8~rToU8;*oMoe9-dPLOo@=C4Q+r_eM@$*K_#K`s63Qm7g|~ zGBU;vzj@$yd+cySdO`4S+y}chdE;MEOB)tl&Qf6H|NJH0ECtzx^t#D(3u?{p2OywY z(HvrGml!kB zD=ub#HBSZ?kX~w9+yjHagyJRf-~2iE$o#gCVqZi$$(v2)s4MYj$4t26N@h%6 z5}tpb?ogQ7RP$&Cvv1ogaYtscAV#uTzuf)JKvIs=kgxsg+Xy+Izt4$7-(R>Y*rB^m zTg$s=-!#h0@bB@rl$|0eA8RE37`Cz)tr^0bo9{nlA~m&R+S3e&Ph|)@{)!{sxA|^L z+Ya&(?+>(vKNbB;!dKvgvBqV6rbWwo6CPtJS)&xL}we zZP4f@h$bC=0-Z>?y&lvLxawg1!-RPmRGJF1nnq~^Z=WbR4!UAB(a=OtG4W6*5fkp? zL~;E)Uea~M>q32c5o?DAIwTAZUH`8E@_)UMcxTjYOax1&i#wsk%ILvhhSF??iYgd9 zh5u4z5jT}K^}piNo}zV$hxgFYPdDE#pL%jmjmO8{mzHcP`xO;GOx@N~u>AM$7d6K` zlcX&e>^rkj>fW|~i={JKuV%9vEVT;jLrNb1yQAv=SX;7~Z0Lr0kHyn0GZT8wjZcpz8|RB0wP*0| z;DnXBmCBI$(&V0P`xef!`|WYIe{2y8?kqZk+gmHt;Sn7<003}epccpk>;SY(Q0P@q zT>o%s767n2$Q1|CWr#%jZF_LQl&XVdHTfJMT!g#5E15SpG>2frw$<{-{G_{V zdR)En2>_>df?r@JJ-M>@>^*4%=In@25X50M8(fHaPfe|1+Ji(GV-Tg0-D8%n>y~Y zBSuq#f>7&Zwxirz|GJBfjQe)A`!Oe_j)7)cXs`TjNhwmis8bOO{H=CzjoqKAV6`KN zeW*u0sfVHPvLpjNDn3y2MnRumsav_X?JjS#%d;f!W4!fALA^Q~W%jqq50sM%k%F{L zo`P+uk-G0xb&qhjM0X7E+?M)lFO){vLZb9NxE71LAko88shx)nv9 zWj)#gP=xv_8^dW(c^P0)^}OC>MmKOV3W{td>WRr3PVOTv|0NJA5*1sFwQn#R#YG|+ zxUE$q9~TPJ#kZ9S+4O_{FvF{^(R?Lk@>a}UE8>NMbY$}~9Kz>I2AUxdz7^h6W1$`9uN3kUBA~P6U2{-4fyt z0|bwM%l-dqM4+WGilL8Y-2Lxk zpVn{H$=7Qi-8*{t>Pe1^bVRqi>F^uT>pj<#8dsia`e2LgbUNv*jWzi{>Dez7N~8UY zVljR0)^~6${Z2l6lGql;|DJqEP14vxx+DlIV-U(Xjrcm~Nv~+&lT+0_HOvqz#(A0W*FW1z+f;iGKd>h6;(%w7{DLRH%@^zHQ|xpC2$ zagmNXL2P54dn?WJas&uA%98`Awg>Hi3g@%kX4R%HA#wBgH9iSj^|U+c^>HzhA+>NU z`c6$IiWs8|TOEihS1!YFFtovx-KGugM$hjKjBRnyh8#zmdjDVg10 zrp>54V!Ucs)$TI0(iP~gI@F@3hJM-@5{>&lYVi)OYxeSj2o4m^eqly=vFiJZ6o0^_r!ET#aQi}T39to_2x#zbJL@YUtkys<_)|f7y+^f#ZM9iivHsw^nYX);t zLM$*|`{C4(!|V&DR>d|EOnmJq0}(%F8yhKR1odC6756E9Kw%x2^%UY8B-hZVX1qY3 znVJt2bf$9h_WPkwkFP`lMl;&fuQG+^(8965ktjV?&sd3#_9{tGXzg&#*`V0^4ZC{l zSF=ZwM^hI0P-E1Bm8@Rn6isJge-TECl}I!hD)z$w6y zd@1x~zHZ;oBR>>fzd>GSShQa{BKgqA^!>9>vlQ2#zTyXbal(9N7v44FuhVC4hkm6v zHYNQMec#&OxxbyxyEL`K+8(r~_N1(T{3}cLfxS~com~<4%jG@KV*fBydmeM0rQZ9q z&#z^ZX2zZR+22xi<r|rPf>RuWu|KKN$#LIXU~1|w78sU@635ozh;=ncecSg9I;<*u}yOm?V*TgzNz2ZH5z1uBfUmQp=c- zF7Pr`JE>V}R3e49lE7@*(FmzT zvRw?G4rYYOES{SOgxZPY3sQB9fp}wS10ACVW2O-Stj{2{3D{PF8SQg0Bh2S|pLA&o zWm-^gCB0l1X(KZr1~|fw_7$<5^isaL1D)a>s&QAO=B0F`W$Gf^DQKr_NK)!n(@@W# za@r}JX&KZE=rX33Io*O9x!LKvN~4)1i);^c=JG%*=)ft{ykw%q!WWi`LXwWt5r5TQ z%}8rT?kP#LUP%jeE938Udd{erA0u%Ys7#SL#YNsOXWjT?`kM++jf0LJR)6Ss-ESYI zh$Td3e8%_cK(|ltD~gZ0Xell`(oUXwe9MbtHMAjfXyHQl`T8uCYNV!CtGD~srVX&$ zqN4o`N_3OylJU>_&}(+TB8Y)x9+zyyCBDx`cnQx<<8h_l(LpCeXR7vIy5~|hR{e6{ zy!XOtQx-N;PGxMra_m}y*3eH(7oZq|23m>$Qs$%KQzlpqvU?VQXX zgCkX@cU^l8`3?q1?9a{ZfjFW)Qa>yEYghoU)Itb=uxY^{UPAYSEGf*%2m=GQW0%}3 zgv+QA7217hl#C~Qj<+81k+z38q>hQ8pbiZJO_K_^vG#c~>BV-MQ!7T;wNx9CHzBex zyWD^*pl6OCP~Pa$YX_k9g13~+hB>{e`W&>K&y+-a@i-XnSqry_7 zaHaSV-P#q+&`Jrx3Rc`i7l%*{%(ugd5LCMj&5h`C1nK@ilQFDm=;#0wBABml%CPq6 z_zc85MCG{mv@%9#yLxhARocUL{9fgrHB-aSeDS984Y}=bLsZs`^Qm29_pOKLoxGLL z911CSJNezNgm0eB5@oGEp!@yg2QSyxWq)?*Lr&;36uUUa%Db7{F} z(82Q07smR|E*tzYYq4cn_G*RKp&yZW^?=uz*$cl{|Yjvt(9 z=AJXJKj~p7hgkY+&m9)RX|sZ%0|x_@Hxc7Whj@qrwKMPKrQjrwrSqi6>(}TRcAu}A zUrbr1NRwsExk%K#uC$(1XI?_w?a-#JTUr#i6aGVy=4>3rv&&- znXyx`4Jw_*WCJC zm+K4sYR5cyEKQ-9{pGw&PUti9BHzuZ+u6PYY)WWe&~42VK2PB`W8(``=*hsS$6PLZ zR?&7)abL8d*)el_nkGC#Cl6gt3(gaf=G=P~29Nel8(kqR69b zHs9_-$-T~L3|zXhE0RpAOJFOv-$W4J)3dM=-wO5BuAJpu>Ywmq#O?S}KRWBchc(uG` zG#(p{^*$NK`9-t!>|?f@9k(7={`SE4^46i|wI3E5Z}T=UzP5|RN&b2yWH94|--)jg z#^9qN+KF0bBm1LgE>k{mjM3fxqfGVu;C}>f7F>u{FL*mIf7$8CyWO8({{EoStj(T1 z>51-<_fGQ6QjQl=U?B^B->>(hCHxvB^)anU5uX(NI$bm~#IjT~J924&Nv{(mdIEG3 zut!#UYG5F8#n0PoA))A!QzSU@xf4eI_QmJlZvJBa=Fh*C&iW#loAX|M3Td^;?h$V? ziJ(!72=_dI0m(;FBm~&tBtssf#D>fBQ#%#>KZp*2X4QO5eM zu*`hBj;^G6>yJBE+EsLpcfV%bGJap~tWHA@0b9+#iaMs>t0}-4X~$-k^&mipLk>4( zdwY*P=5CKh&kdXknpL5Qe4rq;EgL#vdOMqa?XR)Ls{%HWHE);N)0Qx8RLv?~!BpFl z#?ZL?53ZZSr#+^8-{Yorbn?wUW=dbP<_~$$SG?%^dG-T&Jwn0R}`Neo_GeHIRe6VBu}nK zx(L1YJ$1rXQ>YFy!Uq>g0Un)`b!or?S48UQin!tUW4p1A#pjA`3!sXFz4bKo!K#se zYV}JDL<-b(uWs|lg;@#?8P!2(O%bK1g&fvN;J6TbF`wg@eZtaa%TbtAYD1( zXMuLlB*p*&5McP6P|g7_NUjt9Fd2qiDG|9$BqCl^+XMkY;T{nDNIW1VEfcK}l)nfd zMVkVqOo$9HTuZu=a;RRP>wfxNC)|eoR`55nDd~^y@i=Z+i0ji&u1-O;E zhNI%2VsDjg9c53Ezxv>3{NUBL@SD$sPuz~zzP~f{Ws*1gq3p_vv+EZxyK^;cbM#hT zdxZBa3pZ*>;n#oWC%nDhG(Y+1H}CGqzuuw$yl?T51>Y8|YiynAo4jyUtn$N7{rBq2 zw_`tC>x^dlZmv5%>802c)6SJg=piK7uqx2vQ(nd_k$8JB_LTyBNGE$R_WaP(E{^!z zy$=Mte~A(?766PxKFo3wdG}Z9XR*I-WjZ!8Kd7%uV{ff5Cz6u*W@n9=p`EW|~Do5epIPO=|S?vT?D z39#dC?TB5>b0{#kFT|}Es!!=5Y@(xw6A=*Rwf8*Lv=F)TUakTn(0(aqOD7Nrogh+3 zxX(EBE7%b=!rgwKblntMlmx~u&gdTsx?KTs6s`0zJgXhV^w-&bTTyWhJi4M%=M>kV zY$gVfeszNTU|AZPtxEvWO_?uHoQgIs>ZFuf9&J9`p?=&vmv4H5z33R?fo%5NWQjOyEcIP8&||kx zI;V8s_}~1bPck8)@uvH+EzpD>c_p!D*2+n7_t7)9vYw-tRjNf|zS4n$*6p-KFcw>P zY$W#JX+>l=s}GFnaET1cgtz!c?>G$ghk#SfYk%t|y+q`~LnMUyoup{^nY^RbP8`ihJQMn8ZP%$$3yP788l2($#jJ`hHZF;Y8nv|CP6!6AfR+; zku0rGDvPamfE){Ys$X?8GASpq8@kC|NSCTf{y!&krp}`M=G9S0MS0~?M2I6NWf z5=c;!3k35(1`R#)R&|F7yCZJz==V3-e_NSo`QYWZ2Ts4a@Tm3p#y5)x(tCU!y~y2{ znozqJh{i`*zkWSk+~YL6kaBI=kx$=G-j+}Maown@&v^A@iHc@Ec=?O7GfyQq{MCAC z*3rTO(l@EUY{_g7KVV58d9hN6>?XbZ-I&~+-TSD@kuSBoPWt}XqDxm#6bSiRhfxK*MS zN-x_ps)3s^L6U)N0kP4*%fxbJHQbZ>luwR(ui{JiQqKN)Y3RqguiNe4J}Ugxu>>qa z4cPWb7%wHzGFT2~d>_*#9TW!^Y$piwglU5l>zLlfhtSH-mgrV$s6p6{hXzaf~f6MdQ}ZdTNK)U|ElKr;?G@dJq+n zDeYbz@yX*x7#oxDBg5P0=Q@q>d)D}>5pGnvI@de2?D}Bk_vjA1C4ny2`$v137h4@a z7R2bJpt);&Yw}0g4%}gWS(A}ENhf?Vd|SEoq9x$Dp=?`!<>J32$l$@nf12)X94r>P zV=ceGm?7M#zxNa~I~*TjU%28L8aGKMGWpq(g!xJFmAxwZ7W7n`#TEBeZa~`S4a30y zfTZ8}VhlPM35;>c2~y!(?Jj>SB9a@y2rf00Ii4NnrRG~-=d)XUYh8UsdF9*bOgGXc zhd$L#1*8U)Zf|>hB6)?I@SR>4&pu9WogeY3&$@7o#0m5-*>4VCG8;ApcpW*Fkpd8k zdF2hq50;I&&zHMzHU>qZM?oo&V3P0wNYF6+rsdNkA3lcLE=_Zo&c`AT$4hZ$TS zrjv=-?!+AF?2PCTvxk#V?FBR&&;J`40hY1VVh1HCsSwmhg&W}mmD>l)VJd}|%#N&4 zrxrIdNBDifbXk11Ely#z0@$1M@RUC#e=TS4u8R!n|*uWkq%>*#=Z!(!%odzhlmNM-R zh^dkx%TXilt57ycIx!+u-xZr z(=46Sd=#!x-6;SPz^6$vMgIS4^w+o_>6koqkgE+XHvS@}IW1{WA0@ z>1Ow)Fu`y9Z>B}MKl&SaaJBdN*qfLE*{OAjl66%BwcA8w#q-UwTi2U^EH8C9_IC1n zn;LWGtk}`EhD|BrNPFM0G1kpx`BI9K3WwGnEZA^8v>7L-3s=-`NGnWD$-&y(;;{BAD18eb~9Nd4X$4`?|ZL|IRpF*<0;gw<6yBf%AvUyxXq4 zwOHb|nhlma0E@731yb_@*RbFKA4SPhlhn~dbzzn)eR#?;)zBZnOqnD7%rezNoh4S6 zH{y*fS4hhK1y?c)vn|$$s2h8yGSSwC%z(UQzke}*8Ds)XCy(a;_Rg`e>|1U*dzdE% zb&5w33hS3RZkO&ucP>O>HX^1-P`f1kYHBb9i!-WeUS{}?^rcJsHR9akJ1dT=g(6BG zX9)@(Y9I54+=eXBNT2YQSGxlFhDUvN?tC5_ebl495Yo56-Zi1jp1^I%V#KJ)MJ%LiQ=HBY$B%TQC2Ixul-t3oL2`4K z$e8rVa>dqm(&|`ot#%{g@_JAWnZfP#am-2Un*c8EJmYO(pKTjAM^V1UDf=5~PB(C^ zweYC|^tyrO5H7}MK1Y=<_uejDlNmi&341}hm8o&CAz(Dc+~z-qxEV_G45`UlL`{ELgY|=xpun?>()s-Du<*VXkIJ1+JJ`v?^ zdCUfQ&P>9ON+DjO_W?9h#BS^2Za)DlhA_Ed8YcV1f`vsQQs=Kg8^xmLULcbeQLce} z^1>9yRJalsdpPMNYj@l$F%UZi>`Q|BZfg$NS|{-pkv)<=y3?hpwR-d^-K?OU$mm|E zQd)|w1cc(NbA9cjsN>pD+18azV!z5mqmifi z_Y`*ZX{01qNW+_Rk5Bp<-DFTDczrq>)9b&Wo7s zq??!+Ktcl4BL*a5cPTudJNu`)`t#<*gXeEXoeOOanDJ?Syt!pf`L62y2j)~%DL($n zXIs(xhxHG!18=X!b}TA;w#4h<$pB4#i=`y_qaSBrxk)4Mh5Phw>A4kprS2=tzV4Ij zyAGf0SsA!3OPfSrz>O&z6~0@^`8eq8J3l{K`unoae>(B?;gY9eXEslHqFT|NetGTm zvP@2k|4CBceA@}#a-S)DC;YpD%9Xe0x-%=X|3=!jx6g`5*`E8|ce~dd`tffhw@~-k z8t3old3DW}ZM*(P-Vc1FP=!=l&YC`OJa%4i{zXNh?ps~VxVa&d2r7d)%0U9mAV3Rb zpcSDd(t168vT%;1zg&%!06+y|46=cL?_t~1@>T!{a!9PT>&&5@Q8^=ygtmKC|2 z$%quz-F`s_T!UBO*a6gByhvHZVB3CXi54`v-GfHK_?6F^s&CNY7=J?Gnf$c_MNKYD`(B=Kdz(#AsY05DZ(xqPFgRr{sUC+kNxR&hJ z!(efc^ZI*TeDz8#a` zkJ%B?Z31Eb#X7gtm`O6lqJcPUmYcJO5{wVM>Z)%i&5=5=sH?AR>{LJaUkMI*srO#= zYszlPn~<~V>eSEQD^JUnUwZjo<+W9k=ZoQw20SNgRITy;+Q|oMO15oU$p5CY|%EVZa!gy z@9e$UTG&a_Q%1PhbCW|cn>3QN99{+As7DGJiLjyqN0M+Kc44O{>gxgi4T^ZMN7`q| zmN4kB@m9c$8Xr_SjT_3Wn}>CDl;Pl4uP2ukqs37$EsYX|m!(m=Qi_S3L(HnOmmQ6v zg$NV2F(HSbG$Bdj4Hn9tKD9LEG23xVTVnwJFiV$L3nLaJ5J4P(G}C0lu~)(f3`Ax$ z)sLwMgeSFRXaOos#eE?6MA`T$OO7C14&JkGRIDSP^JuYjLpp~TZAyv`Qa734F9!g9 z=W{5)slfL;4S$_R%ttaR_Fw3Pzu_>#ixKOXKxTBz71`g~)dDf^7s8+g7ZyGtp&LfI_ z;`8%nu4u>8-`_sif7e7gnIZ`bnUd;%_ooN%1lc$?|b=~mS6vx@DO<DNG$jWYc^AUS+B zHA&5a0E&235d7htJhWP$2@vup#57tnGr+#CJU>}*k^?;<;iLmk9gEI zJ%ddE4SYi6CTxVp+%qcC2LgJq7qQQmfE63gvSu9Nuv~3m?Al;zPKR!y262CyGkk;L z9`;~Vs8*!*fa^p_3B~(C2{59Wnmb)=nwQak?8tpDF?)&3Ayw{P@&+5_#*UfwnT2+M zVMyT~smC*MM*(wNmoPEUN~+v1Ww+6_%EGSiOP8h|nl-3Aex#$feB37=*Ykb-{%|aZmYMr=eXi@hU6;kfN|8^x)83!DD|Siybhlw> z(8CqK2X}Q#J(39mP+2I5reEog&&#_F!=bkUA31UU!<=L6&h-82f!Qe*2_D`At>QEx z`F#PRX>wq1#r!n(Bejytj%0!bvN<2J8)!4?aqsI!0i&U9siyppi3Gs8I&l%TuO$Uk zG~_wEh>TmAn2tUFETlmSX*)`wImyYs2nW%e>iJzU{f{+Kh?y8w9s8+Jwx&jr!g4ga zL<)3=QJ8B!Vn61@qJp0m7+y*bIC@gClm|0|KIym|vDga&2z&ml2cHFNaB+$RS7U5s8&6nNXDohzB^4$6TfOD z^vkX(c419KyVSO3tkftB0YN9fz7KjU#Wrr;@2=|LOlm&e0Fq9N{`zF0piAM!!%QUzm0K-ogjgx@H+~^Awt&?`{_5M!(5k zQyreqzSZtByGvQMI(;jL{1@xHad_j}_G`(hvzA^*-j#Q6s4~2Y?lhF$u^S#S{c^C$ z_iL5jyTON#V%xW!(Ma17W3ZrP84tIC6H|WtJjK_>;3kzmJSP%zQ(R^{tg7-{cI-;P z#pu)Qy)D<=JVvWMHCO)4=;~?{y3Lv4Q(y0La$~Hr=j-`b*VYN!qQdd}zWTm?`KxX4 z@4sC`LbjH!bKmk0$s=P&+~qNw#pVF?N+l2}#zJ;suMuV!n<~E02u{V5O%1eDEdW?A z!tI2}Ca#x%pB!;pT^uQ2JFhsBKFf3#hrQ+>gRs-ktg;It1I$LabD&G8=NGdcQc|U1 zX^+*?=B4?U%aP?k*Mmu3xfhBU1Az|32lGEbAJfXiVZSj0Rm(hJoR_1}#neeu!SrDd zl}AbPKT;O}^KM4U^2#zjh$ctm=+8)RIi`c5U)8}ue>1g3}4Ml!PB(quNRKvTYu}Wt8hO&@%k8GO)$0T=~@ycH% z%7xxdv<7M>Gfiv19rb7#OD|7gNH+Kt386Rnbjt`Ta}=Me0;FuIRf#Uj_Hg#zbbs%C z9IYy2#R_PLwix?anZ`{9z*r1~gQ=FU??x6*_jSUApVfQq47Gnl%+uH}2j!&qBOJs$ zy(5xIS6}%Nke+<;Y5=k@THOYBuPH zvBtL9Qai}ou&mw+r^t3-7YOY+NC}OD@JMl-oz3JykJx;K1yyE_)XWU-SgC{t$!M|K zU_vq+jfR#2#Ml6{gQ}XD?M3+Bh6xHJCBQh{5^BPryH5sU17rwdsK_WWS<)kPr4x;% zBOW|t2<&e1C6E{+48-IhiX=JIrxpXAE?QWw;-H5_&`wnx2R9tfg3ZjL2zqj(eZgKH zy@QgPbAq0jCDe9hy|SPUgfCVFlVNfCixpx}CSs2eUxfwtM4zo#i^3NGoe5bZ(Na_t z(w&zg#)2>mTUZndgE=+fVB&;f4AfL51B~5>4tPxowxQJk92bLc!ON%zfNyG6lCzl9 z4*eBme*pc+#Bgj>gpEn?3(Pb%_xSYxlmjX9h`Xeg1&{XcedIZ_`)c{*xA8Ns>#tp^ zdn}oKZs@bq!QC|D*`!EWNd3PJ72z|jbEv-+_Bf~fukk0R zCPPW=@!99j3{P|7hBx1gdUEpZs-uoTQCNqb5JsS5YtnUJ$3N0j%b5X(Hk;=$9NIMzD+L54n41CE9W*12BV>iB z!;B2KK9^i`2RexXFZQNDFK8S(* z7y^tx0f(V*Ty zorS*tauO0oyq%USCmjAp7%Tm}<4#C{9+%pT$0_n-q}z`%KPdAE3$tGWYih-}69(#k zO4JUfto+yD>0sCKc}Lr8&8@_->>`S`6L%2}FAUVsQF$24QMW|M2;R3s{PBm=Vcnk~ zb^`<34)Q(yv&!j(7wESgegr3sFf*^}4z_Z}#60W%^gL*SS4^Usy(P6J(%XQ7$n>ayyHS)8 zTLWG{Oea0*b-(y3$_eUl@O``uWg6sWWATqx9I!ALF9=h94@l9VAT%`j@a=n1F)PisfntCF}_A;?xBRrr4(*adT2D^|FnkxE)bv-<+sB#Qr2pAfoLgOg( z@C}Zj0fo|llfYR-LVk2a3O9f-SVsg7Djb|yY|fU5fAL6QKD7wrDj6IxgN6Xu+oFzI zV}pJ^(UM0B&gVz20d-ffFDc!hMo}J>D9d7$_Vss9;DPHc9-Ce0i!CKqYJUDa}_lkAS=>K&f`&9lx(h1? z*64M-(QI2+ajV>EUvVmLNYa2H*W&y=rme|5y|f~EnDXFDlj6emzY8yoTbvBbJma%| zYebXz@uhEV-xVeY=+f$>jWE>-gnZLALfa5+)9RF#u*>M8joSkQBIQ^93K0annGw7C z(NXEj;&1oX`|aC3IbJ)Pbj2+XN<_e(=);reeMg?Gnc=SFLPAYL6e*v3(p(Ys!%sOJ z5OD}88brGj3T3)ZuG~<1_W91r8DlmcUI*K~S5(MUU7ME`Kvxgl2N(gd zCk(rq!Hbn}$UO|C<|5GtK+}4F@c|t<6JBL7gR&vj4jL6rbc-WTG6z0kDV{wlZKCNw zY~8-%jK(PXqZLv)dfEiiB|yajmt6|2y#glv0>wC}OyJPhXkvJOFu)Qh@eYlBG}6<< z)te+%^yIY`mY3Xc;cM|QHR04m0#{RKc0oS8!@81Y{mty7TtvIp%+isf66mMl^Dd(( ziscM;jMz^?V&w9fH)(oaQ4@-HdCA)f_S>nB^eZx6WflQqH~nZVzDG-xloIQWsXXFcT1JN9IbERD(Ut*WRJKx0tD@!*4k)ptDODBh&7A;+WBXneq_P) zetK)rIC{V#sO|39Pj5@en~b+LPyhB6uw+}%&AEBJ$sQ|t4rzFi9+62InkK0$Ww@@i z9#LkIz@JpuH-M8$M&yXWgo2&cmZpwaKf`Am^v4$2v7ZQCaQDC`J>;2YSoTqZYLFqB zNP}fN%oFbtS-CLVTd?4?!-vJf;UF%AvoF99W(s)E6L9+eaqMiULM*N` zJrORI;E?*MzyRj~iuNE~WiQ;oJ{<@gH8}CuCj+`ih}gGvrm;Oh|Fxo2l??U#TPseu z0_$5TE9)T;2mW?h1gePJU7VExW97srX7gfGm=m&iBVOS6TC9pspcfy;edx)_*e#XN zWzYg(lQj_4aF?Sc^~TaamSzxsU{nrfq6DQ3nwsQIBc|rN@WR3g8W;f$r2z7^fV;## zv!-b}dntO(0_Pq@*OFGX^3wXMqwG@$Yqf~$^vq6vT1XwIHQc^-?P7a)v;6t}N;}Iv zHu5lTYp12sg{#u@MmaVvQ5%Z7joJ+^F~iPJ|1}&IGg_tEI74Cb8^M*T9Q$=HI$N{) zLGO=q(^vhq{7Y7A|D1p0192Pf=d@b9NTtGGs=$-`#PLLR7l(bCb2c8ocqZL%0+7uV z-uiF;cMc@Ys(kRm9peY`L-vdZ%}g7g4U7x-|C z(UwY81?&N(-F#B^dAWvyy|nECFbD|gOtKf2017|_!&Z|cHxL-97o z0Jn^>G6)Uhl^FEl6R;VS0NzI#ha?gWgwNJV#bop_l~7b!_HZ2nb-AG&*f*mkv=9I_8Yu_8LeA3iM)eg1z4J+cQv~X#eWDBA zBpkh!owY1Gk$11rdQ^_Y89ho6x?3bLljx2W{6wwi3X6x53B9GULfrj=bZs=1L~`iK zP74Z6PqN73z5fi&_{;?PVv}KJV{BZjm2!rLz9M0eE}?3JyM!V!{9bA$M`ya(N{l5V z?*FpW{7D+E@qLceE};wR?+b!&4HxTgoY35Y)_AxcN@#>{tyVP1wiOc{%Z<0B6HRDZ zqpB?O2>8+|#ktV@2{^$*h^@sg37H7unS>N70~a)2QfmP7M@g*`Xo=ug2K`Xl0l_e{ zfb6SQ>QX*$#2xTad(OM;TCk%w=A^~>QDuG%#2>qBC@|G@r}J<`6dxr7x1R+qiUm!L zI#sU3iEav0CL}nQ2i>%<_K`zISJhm z<|E{KL7?qy?CvFk-4z^okmb3SUz#5UJ_x;zb{4->paanGs0bOrjOTe$?4k4wA!Ykt z(rnwk%yGaabO`LOEuzklGe&jL$Qd35!xl=ZQ{ zk%^QEpSD`|C+7!$@`DaO7MOvd5<={wDUfF(nj{M?BZM-{e16RXF}?< z;tjSM81$?Vy7`Y)F{`@8$oY%*`AA{)S-*d(ckjRQc&68U+hc~-ldV0cEe;wX%zvW> z7ToPT{dVqVj&+BXgoy5pJQlPswQ!9?wdIGOS6AKmuP0NM;`C``=c`yl2C}MH8ou(g z!z*|4n2K`Mr4zIN>iq2fZ8JN_$di4@?>9nfIaPs^fNBM>Xku{!)^lJw9<~S4!P#j; zDVOx|@TY5iwvFxJN^Mjb3zIs_o&48qi+en0AS@&AHq%*hN|2hB;0#p-z=*^Iz^?uW zqXy6l^~Vr6ths=@5Gn*_OC&;O;o&1wzJ84R$EpJ=oRO6aCRUnacNu4=IM|Q>r$;)4 zh(t1(i6%{t>l?NyNCGHHkQo${sjm^VSAfg`REqQ3l>HLzWp)Z?_PfPM8%pp37Y=l2 zO7K^W#e}ZRIu-NWdL=&slhn`bO4F+EUok570`^9bo>=G+>$gzTv9D3tWByacmqF*} zw~@{5I(ZIy^r#FKmVc)xww0=C&#*_R@_fzA(SVDZUQ6+qQ5SDh@sQD~Ig?(d<6C_}S&aWWE|Io? zpG`@BD%o_}fX@z|#L?RM)da+QLIk$4;bjOP^a0s_lDjk99k`o=(Cvtc=GmV>^Qx|i zrh@ikKa1;1H(`QGk~gJM6X>)7(2a8}@9j(ntVN)OlirmKG7v!s) z&o81xvR*BpXaishVq50HV<0bvXGRG;w&F4IA_Fpbf5ar2p0hJ}7D1kiFNEg=>d4oy zU1sP((07Bj2_A}5f~m#@bJN!^{)0n6b%W;$9x{xV7KeCSf`=4~tjybur1#Qg_Vmp>hgyF2-1;bYO0r`p}m3Sz7O;jn|2E1xP2)VMFy z{^3$^akcf4&M(JWysLjLBp|IN+g~iY;mW$be7#qmhCK3GtW|kY_dBP0wM_%pIybMG zqjNE&F7ku-dhgI7)fX3?N9D8e8*SV*kFD$}AQ`3>8eW}w^yT{VlWwK!WLGmEqmuz^ zRmoN6w_beQbY)@xUE1xk=alc8-3@ic(GD3A>ti5mO@zviH{XnjVYx9`Bnj!n5dotUOGS$ zXCx)T%$6u5SK=ruWdkg_aS2)mI;>5b$YM?c03f12EZ|gi!pS)Kn2Vm8*2Vz0h5nX& zET%4&?XgF!)L<*=Z?Co$5Y1G*f{d(Z#C{zu;{>N`xqX=4nRmvdU#Qw3RWjnL8Si|) zzYtljayCqbwc*Blsd-GV6w#j)?SNP(kFHrq-TLWkA=+FzI40;fkkOrHLZG+?8pnC(%&j9#| zdi`M0M0*_E_2nhi2H%_UIwAE&tPRh>zvvf#j)6jX0L&I4iHk-7m&7T@h2%qDPpHKw zc(%4uo$Orff^+N5@HJqRid9D5Y&N85v+Uct1T_RXb|;J2Bk(kfO0gHcSO6+jK6%>V z&g@fDa|c<>gOQU-Pojw~13Th*Z-OoKiO1f(W>k}CwgeU3OhNtjtJBStML#(H(~d}K zvIA0M?fY3U&cf(o=ckGVB7&L>gsW4y7)8y^X#p89C-P0n3JGqAUZUR$L0HU3d_F}0 z7Qgh#j?-|!g!Zk_6JU*rHN#j}j6dcJFr_Upsp;fqE5{-s=AB^xc1y%ea44sp&mhbe z0p5ae+0YNKB|^2RnZ{TKmi+upQd$=tLVMefm>JKf>G?AVGa&~a@OgXzeu1u8L}vND z5U#?=N8>ArFzsd)q8Injt*7I|32hz=&`9I(kpnn=Q-S(3Y-1Tt(MoEt%9m& z2^`K1TGUjfC%NzWcu$&rJCt8o*zJ1H=4t1~1K~Zj?Xwr|x)Tz zfI_;Qb{Xh2o@0PsU>jW(XS6FXUenj$#lyX(!z%Tzo^-wGTh}lrffVldKXY#Dl8GOo z8_Si?^BN?|Ek9XhKe7OE-F418ex-%c<$9-&mRsirPxzBUN|q{W=9IM$qlMM_g5Am& zwuR&@b-i=jFj3UJVDwnU(fEjxL)K$r#~zbH(tK{#eas&@v&J&@A6XhT%kSy zN8xQYTc@53mS-3qVA2581wr#5y#`M8|1=d){COa`gr^nM1jR|%N|&-=3{1uNmSs6< z>@G-R7DD1QW{?8+b)=7cS;j3aZ&eFEBnOn?3V#x$wtFejFya~bg5+f76F$X-$;&`D z02VPCeBLf#ed(Han`jXf4^X?YTed;UH2n?$?OSvQ<@lf%=dmmnuUOD^TPLKy==YG2 zM(D{F775N@i!;)FY@4abIO(f6qB;pklWN@tm@$$H;9PkH3EaE;_#Jt=&A6c3Ax>cP zH&33tCnC__1&FT$_}FGjOK($O6umv!s=xT_4D$5Pilki|(T+#}!eK zT_xg@Qzdh+f3g+x?1bAWx0N%}Bj7cQ%-XTTO`8^CC{qWnvX{`ATWi5p2^wN{iGY1( zJ_6!;yfh8V=NU~-_l1nv9&iMUgJ98sBog>=G>Q&Nix7{g8`d7;tdWhklG4)jKQWoD zpXkGjEdVYXq#w}VDS>2KN-BpCHK60*fmUBvymLi= z7qFk#GMVrO(A4og>GrKVe0Y!o06)_F27!*4 zffUEE%hR;v;W{{>P)@Anpx#apdN0FnB?>_Ks@pLA5sqm~Fa=H0*UE{~l5olT@0T>D zoxD<1yK()K>e03L-+1nHzkmH$L)e-x1IxW5qfDY5RitwhmQ|egtqT19WYON5eQTS1 z8_UlToTYwS))pvztl}ym{>mGJ@cVS*Rl&23Ko>V$?xC0{MCP!2HR^-9c)y0 ze)egs)Ks{V^zr$X=ZE8BQyo`YA9L;WJzE>Ax4>2Xwz?A7={Q-H_`gogXA4SdN{eu` zz|e~asijRL%^NGZE<^2`j6OW>qW`b%1?y&vt;R}@xA$$OJ^r=!-P`yS_9hox9qf4u zE)R(W>AOAVpo3TejEel9<_G#wc*j6oEJG48E*gVTLF$4L(2xd{1v!H_w5i{BUfwT? zMk=e?!gaM_)r0P2CTCk}mE*enDo3iu6!8M%p`HIMFyjq`oQ=c^2<%eh zsk0e9_0h9(0b!f+S*wI$eJT+s6R{F44~Dfy7zI?MCWk!!3>Gawxz(w)fch3|7G$D8 zA^@_Gis{Kb85XR8Wq{nmB-X0lpfSrk4c~(wRhzYq(wLR(ksL+W2bV7>v)eqtJJhJD z)QVs_VqqZR-rc51dTP46>zFt@ zp)Qd=piH)Sdvk6KMCYsk0eGwN=&LV%oKm`0b0ciasYIw$-mJbwSL$?0y!6{tLhp7}-GU3fx=- z%u2kSLg*EQ4KCYc^%Uw*zOsIs$K@4w8=ybSE*KRnLIKTWgQ0~mBmMh3p_?x09&l+O z2n4aj5?ET)lW?dzyP5*^QsGAy2Qkc+aGi7j=7vHInuEe}NU;DUL=+0hrZWJR7S3Q- z@V$j`5%zi;u5C{LUfN3KNt7`YH5~u+_n@6pMx(`}Vn5u;vR>~d+p^${Ng1-M2kc!u z@r;?B8CZn^u$qgLLL?Y;Cb9w!DISYWwgX%R9+Lr;T4-o?i+7gZu>b^0)8si>zYSPE zl@sAG zV1a9xtp@f*cg6i}bs!_nTI=zhoZxkDf}`6X z{?71*Py^qvLpz$sqzucjy9a^{d#X(|{=y$O{g!ERNN-)iYqq;-N9JPr*xd{5?R%T5 zqSHX-x!3;n*6`U*OEVNb$jX}0A{04w_`T?|Bamp-q+5&^5$e%Wmxmb za?MpoXw*8e#+yOlm7c$|Sh)?0#1fK=8_ZBWieM_786ZUgwhcBTxW9CDBw5`K!1{?=lE% zosk66A1VerK)U>ae1r^D2OQpjDgwQ2k{VN-#_`v|fF_(ot~_NKmJ?=Vi4=NZ+t(wP znvk(=GIxrF3)bSGA`D^Mn6fgGX@EzhQ9uC;7zT?DDta$hz|ovbtuVVrVg@XLQ8qJ? zN}A9+@b`tpO$YKR-y{tq^tIcxBi&j4M`OL%kt$yxL<&abvd^?aqCF}?6x5bjFZ>F? zEuK~5b+Ybc?ci%gdNP|qr0VrviX@7YI*;BKi(T}sUY)!pdM&CM{PnyiL!<3kWWsh5oDEl1IH+)J#ZFboQ_Z*4av>fD`4J9_38ay0tkRR&A-ExX;7E zDiB35y+8+ByaG|J`ZJgVyopgUY-`Dl^#7bixzmBEW@OFPi-MmB8)Gs{<6-S?>OYzIG6h^8})^^5RjDI3a8mW9D7RD(nt zU~GYpUSrTlLyAV(Q~p`(21rsQ9M~VGMIK>}+=TEOXBr!Zh*apu5V-8~ZHsT$5FqE) zq>qQ&Giou2EijmAREP#cS%6cn1RzpA0%4~>Zi8o=VX+siG*ZY+nG8S*CfeZ11TQPL z8%c!)p9-5E8F**{_R0JpI!n)vlU>9Q42DsLTsmha4JL#PTycUMxkecVL|LIX0!c!4 zdR!dQq82TY;vxpYF9q(ndl120oJqJqryVbbRTXF==pDs++n^zUz|-Tf#6}aKCP)Yo zI{V-g4iatE{U{B7c$^RHsWFSG-n8{_S-=sueIaQI#D1RdvMo=ODs1k=`51ADJK+&g#csIz}xm*bOz!(Nf03sEPBydT}S>J1xjJ@Kqv zzn+{}neJO{|MZ`D?Z0YUtN&UypppE~n_=(29kO`Mvor;HQn&@JN}DH3eNUCOoBu`v zUb1+agVPV&9{4e@ti0N7ak0?{;h)YM&hivYG4(UNh`-uBw04aAiu)C2_}J#<#P~$V zd?^8P35xi2l`vRCTa5)2;$+Y#AmJ$V)4@U__D+F-Wol~^0~&?@TU8(xhE3N}F7yIL zs{y;7*;Nvov9Nwk&S}q8Qn6Qs&FZiV@Z*$*BPe1~fhI8O&~!uB37Makl!Gj?7(^>z zpEWMdMr92^EkK_OM-N&@vn62^NJ)rd!ipYGh>ZQeO(k#~{*3>xI{>){6J*vhjc~}@ zqD(zaP?P)-$q39!4ZvD}%0`a}R!b}a2$9G!FC;`Bx7T6qEp*(ex$yJtJte4w?d8IW z*P_I6qQ%Z0u?ofXFPn}2^}|Oug?QN-{6_4uw|TrrJ8^5jWENeQA>Hq3sRevV(9EY% z&WpDDc$<5?Nc89>81P?OdKiCdQ8~l6ZKWZ2DfQ}UCtM~=_9 zb9co3iE!iVm9nI2!puu(^t<$e-KP#m)n(LufUjz2$tTIZiPkw9im!JiO|dI1a68DP zxVC3#L@WWw-d^-LjjaG9R2Jj!gR4^YE_0&-#@D)ne#KZD@Hc9sxeh5++C{Z<-ehY6L8 z9;J&oe#laud9Jt=Qc;R1DlEI5aG!UlMPm&awjB+g3(RUZJFC!ppv`QAG~nxo-aNiXatqsEXD@>RSO!h)kfe#5|aH0*&+(6ciu!CO#QQg257#Y5x< z@aP7`Y4OnG@FLPbv}!KP!HNI?BphM*3LXy3_#$qo{H6$^CKV}*XQw_Hmq^0h31 zRh69(Fm@#LiR&f4S_6bbb+v+kpnz4~-DN&3>J{37OzZmYF3?z|4rT05aGNw&S> zYB(M*Se=vf`b2en=T_0yIHJ?eG+oCQDL*FUrs9R&0QXihxjzh6=t0 zU|I@9CIE2+S3PWbU96m^iNYcv&^O4srbL*Sqyi5R9O%s;E*2_2cn!)3UNi!IMra=R z-Zx4;@stIpkAk3prd@8&-R5d6n4X*!pCQ%0F z+7jZRpb>Eaa@31Z3pVHz^l4o}7B(xuW5i^D+Da4dW<6I}o`WU&a>;ctk7gZ4_RlgI z6mngeps#C#0J$=MFgJn25#~m$qhWgi)FjMMr|?Q4BUlqP##6{Nf50vvk0o*tS7buFYB;r;OMC>e1PfSo_ z5QLO8wYwz_Y!5!7Zrf~7-%rIfQP7+{k8P#MKCK|g zJr0AoZ`hlkp1nku&e%$I zFL;IXf+#$>hbCy6;0XnFZ!vh4f#!?6o+|ve`FvNjK?$vOZf8N4e6p{ia<1>UvBSUG z{ISKr|8Ga{Z~7zkB>Q2+$s^{<#HQs-e}&m)Z68y_hb>T6^7nwqv`PQ~q^1NdWaDd^Q0Dlj9kts-42$42y210|00Ag*nvOSuF z&O0nB6{`+Ze)gLudA#n*<3p8Kca?gyE7Cw5ppI>gfxA3M7(4?seQSW*hPxQPD`YC% z9F8ckitub=Smu8YmaHnye_P zHTQu&AMqKDF0pXrH5u?`x-uIGmu(51=>>+G8aR@J(EGIK3}+;5`b(jb3TSPH-KFM~ zgLGy4H(=sQZXy(Q<+g*d3=kzZu12 zJ3b}*0=mDoaMjhxBhXXd8wKt21iKkOQ&-oZ?>(#*G5~h&KmyC#oJT4I)Vu@XM1i^& z3&v}qK_qd7t(cI;2^Eb>h9lw1cLf;`EbqgVlJy4VkVTjX{ah=RuL;Vasc)VV2Z?wv zC<$$0@l!0cS2$SpNXB`aL8+|wwg4y}HrB%Rig+oarSN}rAQik>e-{7{L(GCNtjKhD z{R}YvpaW=1AcZ-QL*RMTi;Z<*%&udpAV!r#HXU3H-h)tu+p8BF_|_r@vFfZ9CH1h# z37%sK^z&SvQb{dn5NCkcgot+*A|?Iw5f`K-%&~%p29`W2FBWl(iMDWK8USf*#2d3G`6IAYiF$K=BwXxjcz4g`x4lBW^B*$ z=k|+2G6V{O@11>?Cpb%pC8X+HC#%UN(jEV)TdA!aO?&f(LtgZJ)mq}4$A@EtX_xki zOr71*&eadb-_6hdKzXVf{<`kQ)!ET%*Zs#&$U?g7EpBhnz4-B` zZbMdoQ;W&qYMP_^1LupMt3wPoz0DglKbyt8cdBOkp(?PJ@xm(58dws6_Mxtg}E?D^KH!|bLOi&#Mid#M+7shTx%($~=J$?=;Eg>gDQ(J$Fur{a}W^KeNGynp)lWVy$!X&KM8_`EmxJpE+3m2)sW_vZro98znx{!5;8N8@&WoMI?^U z*+wYyNHdw9op8QWv+EZdTo)n70kr@DH(8wR0ig@-ggWT5+#pmKs1K^M!2|R=)KXv5}?H&#MZCF6x&ddkX4ZafPb#>#4fV45t}k?q4z z;kQ$&i`0Y^fJGrTs*RouekD|6V_5iNFnO~*UkZJ?M_~)4m0dd|V>vh4PQAde$^|N{ zRh=lYuq#8|1?B9cX~_;$BXWz*42}>0IX;!IawN6MTYbk?xS??g~*Bjw4AzVeW}SOZp5V(v;|#$==)V*S`_}p>-n~A zVTX@j$T^g<+kWTj)z54^F2Y84?XEfbo1zi|LT#UhJ>+Gc8SmwNud4lf4(piPGnq8^ z*2T0NS1-FkWHYHq|6}dTgPWPdIycJ*$2O$;Ms3L660Ur5+r_U3r=vlc-RFC=*|H;> zF0K7)j3AWTtFJpBS}giS-W0X=3v*q`-_Da4yBIc0x6bxiy7|A!F>k>|zNBO8E~Og- z?^ZWEXp9>Fg09_-;xR7^;z6+S7K2@&S2rWfF0MD~v)gTfQdaPmXil_LlW8i1ED_hVg> z2(;7)pb9YkVK_Dl>n4@kp%K7y)Ik6>B@%~ErsoPJ#CGacGbfYsfGgqP$l@Q+o1oWV z4;Y5DK)d3>PgKWX5o_2cEC=Bf{2I4dKEE;R*d0Ji7YH0HD16&7fDrZ#!MZ}| z#?vXl1%RY#UOLagP!{WFZX#)1DeAHIz6o&)w4Gu@-Y`!mDW}Q6o}EBf%0L{(M@tBG zDuZ+lC+DMKl%|S6{dTLk_uC=$r7QbVCoJ*x(#TFqj7{&*uuj~ecQkgzNWZ(jU{7PD zhqzaf(RMO7-P#Q>ej!E0$4wIfJGdLUN%s*n#0`#o%_T|^-iV)7FG*s$Qx1D8kUVjE zSq-)#m=pS^l)3_}??YS+t{ML+9u~|GpFGH<(CqZ*icd^1oLG0}){}r#?S?fM$zyVY zV;}Hp>b|sVA?DfF`8>Uu4xD$eeVm2h0C1-ZKyBzpwFR}M6f6^f{@@|l6NmwLH=s{E zp-7nKT^22AXjWAc3pb34h)Gg(H$aFqh;W5I7p@9$#=!zbsPb@W>97aswCSCKP3ch{ zz7CusSswPrFsR0$r|6TUnvr4r6F?dlix2doC68(P~tBA zxVQEg=Oru0e(v#DcUf${Xyejh)k<-@-e(T=%5lOI?@afWdBW9~*i9!_9lolcoxd_f zAy}exY4u!*g@JtGT&s<5&C7?vB3$VY64#skIJdKG?qNT%>Vllxo;5uJ%f*lD5E6*d zXEj$Y+;-{3Du)a1IlSpnL($0^boXkSP1Vc{#;VWXe)6dK${QG$7A7CdO>dO=p#NU| z_cv0%u4p~`+=Xs|jeO|Mw&)ks-p*2AoiM8T%jGsnIhqCeyH8luTiLDp#OQpxZr(bl z1(^=aaQpDA=aDV2diz4liRJ zzV@or&nC2SCWlsjNc8fiG1T^T$3fpXjaKe~niYIJ$O> zbRu|hWQ-5^4u~fTci6@Ptmq(oSJ);3)>GEC4fkQSL}?fuc8M)`60yeiPR5htsu}Vi&_wJ<{I$>>L3%P3`UTKk$x_o= zvBP2vwGR3;ahn&6o8Uav)6|s)&B(5&l+^kWVT6D#jO~38>m-cp^r%A&6Z7N7kY2^9 zX@u=El*17>OGjUgl`W$}>j2wRx`==iCbyvMr-pYTJ*agv`xtnQEj2$Wr(%qAnl{L8 zPz>fiIU9?Z&V1@;l1?{qz8R9>W9zgth@;KYB$}wb7lR}?D5xhfF)O#$q(NncIGDqM zd{9+up(Y7r3E$X|5{B4EdH0^=ZVa<+05MqtPy`^8VPQgmsgW5+ewU<3?@+(RW*DVF z;REy-4TWGN9J5GO3ZikN6`?Dd?o(mkl-!5~IxO1dQpKc5!=4i&+(02>w?-C7`7p1f z8457RcPLFT0SQ$iiW4T<=z*{mtG5*{j!i;WIf1691iJ*5Y?FzQ{dTUNKl^&%Yk@}- zLd3E%l;K|mYqUM$^?=VCh5UUkS!~ekRo+uKKd&0)bfSQueFuN=LD4hDo=(5 z_K5zrI3*!oYr7&|U;Z1Zd%WOp%8wd<(yxwFl>wsNX#qJqn&TtC#@n?&%1yiUaY?7( z+`6{`Kbp{+QFDHd&g#=!lN6M?#F{;C-J3TF&puY2{CK!O{5N9R`?>hlo|+)3xzw|}huabf9iq~XY_+}A(O z>^+h5^9!SO?b}FC+3Gjl(>j8GWX+xsmRKfKy6j0=|4B|oqqSN56lO(t=kTKMIcHWL zQ;WZ`N7wgG<0rw0>E0a#d~7e_52r4>H_W9RY*N&Z&q-9$IUi2Ui0eqD%f-2W5w&oXNvuLqBRSGj~$45_V`$8K%!&CXiIOL+T-0iYU5RQ zv(ND(&F&l_znnil#K;S5J^$F@`?V8?_biq;?PMN3(Jxe-Zua4AApdPj%%KMe+x5W^ zi}f}EbKJ)@{U5LIyc5!$O*p=#ai8qgV~wm$&*R$n-sf$8*1tSpSPH`plLxG%=h=e72gKcp#dCz8i8SEj855{VM@eWJnA99kyXP<;E;ngsbU2%L6GQS zX+kbeTq(PCOV2rfmjw+N305?vG=YdEH;bFi_ejO9s{8?EyYW%+mI8gfza_s~nO{pY zlbZ25gw_lX{Z?m#bF6^rBOcBW!Iic}k)5r`tu_WFnTCHXCkx_J@j?4_db>n8*_$sv z`(UI^^D2Ou*zgx0O~J4!J-%8QXE#WzqAlhV>QTe@0w9BMOqTQNuG>nxRBFu-0ARH! zpePLn)&{zG4PUqz+VT+=2AR!QWWa@D1=zIQSnR_2BvgfpFO~cRO(zr_CG@%fQI<2H z!%OyZj9AJ`SmDra;?qZgNn?}Mn3_KLVGO0eG$8ZPnP9Yk*2jPvT9E^Y@Zq6qcU9EPv zc1}w3ijaGyOr2Tt+`N4aE{5%8;Q#qHd4q+dFO0TrW_d**s%H0YRi@?GoRaqCr=Jd3 z-_ZJ(`$W^=H}#>NOH`lsdzoj%7w`M6f_1gTns^IlKot-znJd9`_v+3^74=+82 z2o3=M%R`ohQnK1kPtt)$*+rvYj$Cx?2O}jCE@64G(p`{AJDS63jrIH-OUYnE4 zvg6fmURpeQ)~CB6NN?+=>z}LQ8FQw;U6f_~y=T)mPF32jvtB2BWw|4C>wyI+EvctN zTkg+U*%7!X!nP!QS5ypb|AX1Tk?Y=}Ew2whjk@>m{tG^@f=K~IqRva4g)ZUChV_S& zGaMIOonQ9y$dds|!kQ0nc9wUW>-U_s)Uv%o)sE)OF$Nv#^nYVp>5j+@tz zY3Ny-@_FK|)?I}SDgOkiws5m3Zw~F>wXp2`MIyEOg+rRqN zMQ&L$5n@4We?w7aIwT8taAD0&oO5gUi|d;PwIi}tx3-e7P6i-MqCK( zQ8rAot#~^vcT4W(mV(bw9;Ozjs&uw;8K1vcDUHt1c$`qS?)jNbF)criBry`->b&nP zAU!@#%zV}^5X-|(!5KoLaz^V^us6tH6m>w~fUqsQ9u*}o z34;tg812odDSt*=h?xOi4BX-jD-cn^8HUafyg5+${BZQ*j8dF?{ zXFr)wDygLsAvcFcynU{;mry~wrm(u(6yoAi$4<9vbw^(`7+ulQ(xxHm+dr4hl$%rO zN#8^hdfPl`vg1myD7`?({j3p7t&cnzfE%H=iXd!|O!D93s2s&|N0Uw&w^|Lmtx!(4 zPW#f8;EqA|yOw{1P1@*m$SDMkm>^QVWZMB{h~`^Dg3<+~fFFU+bJz(Eib!Trq$l$w zY|bf8r&xC-q?nX^!p8GfA|!H*xYO8lV+khiQ3m`FFiTIcp-7}d0HhZ~ACB;VKGq3_ zR!VuXWjt79fEot88Df1=Sk|ftIa^Kci|1QE0^$y%65;iv$wUNL!`A_CfI+#03Tvdg z)2CJ|1`^6>TOituauDpiGSL~UJ~i6r=u^Dr*$4{vP!JSH5tw9hgkJ4I@WLaoYe)fc zsqC&~V*@C8%1LO60bpXuv(*FH49A;9!r5Ab^5O<=Ixe06&7;X-b^5VWVRpqwEse}} zIEOUvy0Rwe-_sw*Erw?NXgBRWy>oDgk+|;JGVPzTO^T}qGjHZ}nr*4yF7usyVtXcK zx(RL*gYHPQ^x5+c5XYwAYBZMC{yR5uR&eIFe3<&UFNV?7=lwER2&x> zg<*ZIR&j#iW4HvQ!ly@HPOyzei;qB+E_WZl}AB&yyKUM*4aNPP^ zv|^+4x7Fd}DL+r}%@2L4*nXg$UL6#+evj1MeoLm$(q-q$>Pv8nlF#eB=Mdap-kGQs-`VZ; zwEt@D)@R?o{+qBn_`LS2#;u}V#s$J~d$FVP6Zr(=?lY4Z(${^*V$IvnH1=7feCdnW z`cO;tT|t`vFx7Q{e12Nd$zMhE`}QGU%8$tIN1#rvPo`}-Juv%RsQo1~AFFq@AAWA% zSv{GHXW7^2!*IO4W#b#{F~Zhav9H^VO(GV|BO7WrpGjMwHP#Yqg4gFGn= zV4lFfXF{8?1{*;S3qX0#5WrZ&4T3HOEW*%n0Z9a-7Kk`NUSkJ&YJjO=-?@ z!PYi&{u6Xp$wys?WN?~791R#!wxh4qzMl4KAF81yX;MA4&(Ft)-$atA&@|}IMwDhV+w3Cf z8?;oRzD0{qtq_OQi6`Nu5qiZb-b2eP6V*cuJ%qLBQB7N z(192d&7)wwC8%bBd=W1)cF?nH>k|EZJ}%ZN_*z0jcNQnZmjmT15e&VEC|Ww?VF$cG z8)G&&u!Mn%DNaV21TxJfVTcNdq+Q4(3KF~AeM=s=`rW^&k#jP9P&epsoq z71_1WN&%^3P~TTKtt%tCiAw=(zEtaux)^aJ+WJ#&WfD?s{TXCf@x6=YUk;Ht@P|=y zkX6y1w?Q6TF}Qy~C=MwG#aRVJ>gorD%Yf9INRV_@UL4rKwBzp3!*{2$h zNAG{yGU%^<01~w`R*n4HL2KM;wZHu6ueP6+Ea9_BN1zHKV252^$`t+Fl)FBiR6F+& z^7-@un{$ENu3cKaj9WnE%6=pKpux!}<-aI6$BXCod_8zWc6zm~%XsqRyZQ`4Z09~{h|)7xH?625a-E@%uE#4O zNBDw%=HejzVwQU^$+mK4%+`uScTx2wyUu|yiwpim3&Z}NF+4xv%c?aO>(XAIvK=d( zz0^=HxLe-!U&qdBPV~oyqt%v=H_=ZAi#B!Wv7T<-we7J+4r>qoaC+mun49Rgz&ocz zyKU_Mv+9@swJCGWHaq{i!+u-m)MUO5v|>N~!p)gnblhWo@;YQB@HH`pCc<^O_N-^7 z1}@dRq4~jDqiJ5-{59j$$kA$#75#zwdbM|0D*5ZXWG0^oueR&b zPSYM;LW669KB>%)=UY}0wAO|m#zmodl62l1@4K&#Ry#yN|B@W(`^>`~4cr_fMWK)p zFy*z6908q{AH_uxw5%i};8|Gx!+RwCH?0kc8*ny-4$tldyzlQmJ*)0osJhhO(R;;Y zOKH=W>5FgbYY(^2x^LYWyy`_pb64g6q3zoPncn~Z-`kiwsS!dXY>JFkE@9M|xoty9 z>WI>&bcil=(&kpJg_vkbi_N9z)H#$c3N^YM#mFg@L@7xZp^`ek=i51-@9%s+-_Pgs z`~LI$V;M2CydJD284-s+G9Obc{%@rlSy(#a9HPzto%`2@9`EVsl?warEf5IW=g*(J&)W*5$39d zt7&GBJsvnYVEnc7YH*(P@Nj?`6H)o8J@pE64{?e}QW-S~FgF#YR=8DK7q>Hc#>U{i z^p=i@cmAZ9x!V{PrLuDF3c#v`>0FvF05UL~F$C6DOU7mIMyOg-BvMxoa7BP$tOnA` zM-br&X@xMlfzb;f_@*MD_L5xNQxeI5T#1Jg8{8yd z#G*>_VKAm!f8-XR3}7Vd=L^g0r&%v$hM*>>0i>TrRpmN*O1~#TV5?=DKvfIHtW**m zzi=t0CkISZ0aF9ykF?)4I7Km-$3G|_;*Uu2iW~*s2MmO=1SHqs`RhuvMJ)Ob?Z@z@ zsKc`l0E7T0pO7byq*K!bp6Ij49>alJ2!gDrp;B6IwVO_P###`3ooxo=O%A1$XG)?` zjFv|6bM6ryclyCzIBmi+f5Mw~Tqdzx5D#Jl28nc=cov9wL@0A%vY`Z~bVew03a=E@ zUdTI|$t$z~W|~zl)`fxp>5e}T|3iT`bKZSXS-1CheM!sbm+Wd?;Uc8)%&r4PhmRE7Z{z4c75lgwT7Lp z28Z9Zv5zzl+J!s#)a?k9+Nd@e63oN;HMd;bqdM8SiJ-=O_kNL1pQS1ety_X>ACfvlI32JhmqUkH4_I4 zU+j7?S7zT*(_}c=i92B>TKU^~R()U8>8rGB|awe1~#+QZ6TMaXyKt`+vL z$yB2wJ;mqj+S>#d^)C`ze5;kW*-&2+l<)rX^oDxKk1IVqR}I{cdoi%%X-)i)c?(7! zmL1jlZYH(O%yq*NE03Q-ZexZb!h3Hu-D8~7mpRy6{rIJ0{c#TA{et5GtXp3q#@ehW zPXB?V0=!2j>@*9WU*go-drxt(yX%0#!md3HJL1*c$HKIZ+C4wY@TxC&yF%8ry>Zc_ zaA@`19)}a-dl#A3&AI&BBUx^pzV6B7Q%A6_v>p|pd#T@bj#+pkZx5GRrEihV(a<$I zbn1F5KlE6G848L~Ee%Tr5_E#4j?N;pEN#tEwH=F^Aw&0qLo#msD+1ZMDgy%-0nH?s zEubijRX)K8Kmdwx#vtbJpes3BPbphOZ*`s`^>)Gf z?@a;+V*jzHQ0nv_V+3tsd0NmlrKX~NX76EVsW0GSV*_TB0;(!7`#@a4DHDEZEIaoJ z_V)SueHO!lF1)=jD2sJ_`2xJ>1cW`j`7lUDu+7H#O#@)>kk|tRq~a*Bbc9Bdoq|3Y z!WEbevIOBlFF;R1bc0m}Dl#xdF@?XDvZ)f7L{J^z>Xd$xOe&(yI;fZy;52ic7fsJC9jy>}0}0Xk(%ctbI6q%!#YoOq?3qwo zvuMBbbKj_64gvKHTukT%^^e{NFD;p)@yjkp;CE@9Hkh9?BScsk9B zh@DqkRHa(pU%-p$;p$nDq^wB8&mB$1{Lh`|d<6@Y*lTWlV}`CyD*8bp{{eK_n!ZUZ z4M#`a3)lhfoO@5&lDhUCPERB4e_k^4ic4x#*=Ek;ms=Oq?B+8mH^rG=EZZ9cWfyvwBgbc5*DlykX7;qK(%&)kc zOSZlolc-S2EC^}=ex`-iJ5C?w((S{Zw>uQizxajrL)QHV!Vls4mv-S^EDu+U(Mye8 zg>!ISTSlmvv97dM%ETk5617R1_v#JsmDj@Ci#IK%$yxJ5nA~Zf9~@fCDglq66V)oA zt6x!(3+go*2&5=VK0mfPz`iS1eYtit4`(y`~no|fQwoSon%qcnrMWglRTDZ zX|5JU^qLIK7bIj9*+%`zC`>a7I%k613pEMsFwPQ*(Sie=0|I`pM#JZ&(I`DG9n`nT z$M(53)-OIorJ})?n*%`Z2GWS*LtXnCln%jJI9zWGYjLwgGq@Qa8=WP%FYF}4G1;U- zbD&%qA#5VB^5}+`RFRe%6-jEt$xQ0utaqib6vB3{2uvgry?y*K@BBI&%)F8e1|eoS zQdN^p=+Y4eC?41Mpq7j3$u9*AEn|olQW&c#TgL|bj)Pz+#q*|2+RwuRNkQsH94Y<) zxehdc0L(52WhYUB9~6Mi#Ehui_mEhZtCO?? zpXkj6I+c4DBuvV9#indhE%Z)!0cIa%=U}0L2&IY+142myA^Icwvf&|=f~W98vq6B; z&>f?4ARzPs_LQRfnnB#=n zIB$=}`#bN~)>)@Yukq&&(29(bj+)jTvfiJxVmL)-N?npKzeLz{^yt+LaAwnw{PEon z;Y)x1bo$sINXAp2mv?-A+7s(IaN48qEUZDoP*w|HFO!c;9S&6^BN0^}+C5&6^?Rrv znEEmClI0RleIHeNt6_OQuA{c&kUQqPJiKz@hY9+*&bT0dPk0&8WAR@%G<<6Mdi>7t z=qc|kH@H-^w+;xwDDyA`3oITmSqzv5E>@ayE7DjN&k$7eVD*kM{nLLL>{Am!ut!AQ zAP}avkC_p8*ff$)9@zI=`eKa-)IX5xf?or%2Qei*%dBNfzZ&e-5O-pWiMsjUvj0Fn zc6E08c*xCb7%VCwm~klO+~OEldN41o0uV~X9;dyw2AhPMa{2iy$)vJ2AR7Tp$nvAZm>r5b&^V$kyDDTVIG{UA zb0a`X6^yjmqT47LaILFyr@>*g&I6hx>UT|rL>7#3RfyqXrwN#zU>@}V>*9|{xG1gI$}3Wi>hw3YGsKR@%F zmrxQ&s*cyjb3KLhKak7HAF>v@vb7#O*Y>zn-zf1{X)u8NOTlWE^ydpezB@7u?z0~s z0Qa9n2CE{raUjh~rv_-%QKm-?#+73Io zp*ArsngS(eKM&v!SglS$jt}h`hlYsZ;ernHA%WBb5epOlh2H8(i{_PJ6MeJHzGCAG@U0um_#i8+!lGd!sYOrb?ZP*c%3YbZEs3kw_kklSQ6ak>vPMBQithCaE1;He*EPHS%N6@Cv* z{OyN#Id}8hg5Ig`&<%d`i|LuC1x~B;oMSxLHuuEWo}hN(5tfZdmErT3lt6 z+ad2eNvZzVSD{2O5`8NE(Pvhoon2-7W&oS-J^0xdQV(mJ$ffzEjYn-@8uIi z>y9nH65RUBMs2s(bKeZF|HQ;mP1nvREz;3?v+vP%uO7lGMETrRwrkqns-IWspY+kK zc;S&(;+1)YDk?#@~5V)mP{w%IuOv8JBadmcRV z$nmHwKhN(cChMR2Y%+W9x7dlF7xm;=2EA8z=6#sO{n`3yXV^EwUdH--mN50BU*Y@U zb-j^6U!Gqpp!9g}eUbM)Btl2`>rbb@UkE(v^R;5i#`O>@oDzEeu8X@KHMiEhZd#U`|5GHZvc@$W&DtYE7Lm9TXuNBF&^FogZM39zz1# z6i{cAy@9O{fC`^lp^hLjIiZvXg8=Xx1CQL^Vj@yr-+v+?RaB%0-uT7MKl_E06EZeM zXlrfy%{@9iI9qFzzw=_R1$E}K_4L>Z1+Kmv~aA?&r-Il^987OrIViqVm zfng3PA;e~eU%hnsLXT><#{Cc$zTM5RG& zi<;F!BK!3UFk0_m?;n6o4b!2YMSVj^gN1u&qQHZZ4uq`^G=%p+Wrr+R2wC0%Q2@(#aA|yzOxkUJs^sronl0SFCP%$FN*pbLo__!Ki8v# z1KbGnlO)bNnmz^;{k4!uAkM?f2l6Mzbbd z=||vVQiY9a53Y({6EP)W<7Jx~+yzL^M!To6dk9F|)h^7<{^K-cIk(wqED>a2LPM3W z8@g(zwUOu}|KkRBS>X(7bi^OX&wFcp*iRB%yR5|M@oUtwB$cD)+Lmb2Ucj4%i^_~q z`7?OLzy=5@F2OfQZq>68ov%FNJfiV96&Na^kHmvftRLhcXk#VHGD1fn)Q?+57f)8% zFJQRbcfNf8;qLp+`@*TeeQCx2T45~iERNso(zh-4fX!kDX>1Hp3X7Qe-?DUNEuK8|9t)6NVdsutaqS=0!WW-Dk?wL3pLfwk5DMQgNuH;pu#G4mem=T zh>)G7*&K-y1uRa$Y(fTM*PA#9eB)Y-9JuqucYfgR$U!d}3ap3FRN1?=_NYvv%jlme zN`e_OI+?O^E(fn>nkrThI4GbJbW;3x=d={cu&|W82L2OPuLVl`z@j?N7S}7VTL2^+ zSPrcMO@%-?z6`p)L+}`uIL+NmQX<o*EQ#L^%98LNJW=qeB+3L>+S|n6W*!wuG5* zJ^ocl{_j5m6^g0Ef~)-4`|qK)-q(gtyz;0)ZE^sb{`)O=3_RXWN*ixA^glb*u=?5` zNW?WpHD~!uP`^+HfNB6Jh#=CS3@&~&@7R$Z$Rv0^EJjd3 zX$EUEP~( zxK)0@#;LN+&(fQ_ezFzRO5Ezp3m69CYF?Lu&n%I#6m zD-!JADOs?mkoD(+6$C}wP|g`Vbyx5c!wmV-j9Kfm0xa!RYS8&3u>wsz3@Wd~7x)Bi zL=do|t0Ta!7rqKaj@k;asl^e*@Cd6QXJw(-Q#r_I`qN<%O4GQ^jYMt@k5*SJ8}^iA zfv?IEE5}>^KDWTygEj2=eCPZfIPs6MNbtLWw;UV}Cy|r@4K56;l1S$U22xveA_QJ3 zOxJw|WkY;V>B|cQE&T3CcA_|3Rl-$kBUBg+3w{LpfBOz8<(fhW1F#|A_T7pTH#^=@ z&9xxSVr~xR4j#!r3+yk+C!j{4Iarl5;zx%!Ksq6tgoUugL6jXq{6>V1+5j$a3P=)L zh;1g725h(tl^_uO1^i6EMmn)XB_Jz6M9JvrK9bYSe+=Wkc5|n)9+2*-t3mz!7_2)8 zSnaXn=i~&~m(7K<1CzrKAX$Zrqe=r$QpO)ShH;X#yNj}TgoJJ(dMa_Fpb3vipsKZj zl>=i&rgT72=q!~st|PgOmBF7eRS6v1NNH(KBK1$lDSqok;J$bcGn9>4)aydfeN!=I z1W_H8pzRFN_)!hA$AU&+&;Lg}|9^dCK%Jy7U~mu5K3zElV)GE&om(3=hV$z-FCMZ> z6=6~Yzq$P8+$>)(_Y=1}{6xVpmBnLH_2*L`*LkYv&%b@`klDhwgv`e3s>OFUI#EaGPSEUs=neEpi23}< zpd4S7SC-uPx-nGgm-|~iy7h!1cb?taF!#!(+;2{@$oiqh1{QNE7bipJ_MCe8iFG+u zuR>*Ce?*Mgjh%}t^o#c+x<5Z-^d%m>TzIJZ;9D~5&So2Lg=@Uq=IXEN13YDB*PE$t z?t}BctS-!{F}wI1eb=eckf%!?+h50|*;t?QvZ32p1mCuq<-a_@(n%19)r28F8xp83 z`0^YnBt(GI&NQ5bzHk6T!4N0Iyi@>6zduP(xi=`=r4*wm9Draj{6eERQ37y}wUrVU91H4_p^6JlH4Xe3$@bFm&fm^^HM0;VQ zD1e60BHGgI>|UF|F0gW<9PJlPst2A3-*BLK>^YOB85n{o7P!|U89Fj^73T$MUD8j+ zg20_j{(i1YJExq1NmDi-maAkR=L}6n>{bwo)<}G^WJ21coZavF3XT%2rGJOgh@4~t zzY`!OPB*HGB-uS2W#1SW018=;WJ(DTslmz$7AcAu5$X)^HG(`2+R9074)_2k0n80F ze3S-eYc7fE46wBXlov=^@)c40PmcfV;Ei=*6psEGyM2N_| zyh7k&hItATePSIS!KO59lh~gNaSPU8h7>qq{cu=;79_ z`FZuqvN*=Wy*Xeva)HKjDPDUx=b69D&r&U_5oP6?*li_;`Qw#$Pi{+b$Z6&+Ay%)v zcya5mx?=>zsQnjd;yC3E{^53$Fm>VMW|!O7jz{N`Zw>V3f7<-5XQ4&tyPDs>hi@A4 z|K5@D?SA6tmFtfqU%S#q$R9URG&{a`+O!>Y7iX@An!-xwt?K zf<*Q|ZVuZQeg1;$Id#8{wKwHZ$dDNdUP|=y@+mR=gMI;RRbFuG~@76%u{=CHRjcxWz61{g-|8PF`(=Ppq zb>JkhrL*N=^;(^$y{b)b%ET)*#D@}Q?yWAMu}`c$w|}7R@owdcre_9f`2J+s`rmEk z+#b%7l>@qK%%+HXzv+zJ8iX#?&3(1|mAx+U2iIMGb#6^gYS7r3^R6_{%uv=VW&g94 z!?fm?7IU-S4w|1CpKVq-7Ao7q?0bUkL#H8i&Jk}5J+yh5r!CODSNnd?bCUlM%8TE|fW}knPt_lQ zNAPy>55N` zG_L?E8JM@ZanR`(d=Hc@M&VqT1)w6$a3V#O0hWe5k*HSG4uvbkiBiG(NI4b-8B_7vE-9eRlHhaRwv)II6GBZ0<(tu6!Id_nTW6lch1ZUG*+4V%z?OITr_ zVyF8UR7YCI(NIX-81iLsYY~ zcnB=Lrvaxkx`B`=1b>nkSoTHY)q%4mob$mUke`-!qtEV`quJTnahVx|I($&04b#8LePo2(-*NklXMZmq3 z_=?2mv;?gJoDNG-?J_N3KEC+fW_{78*j3o?_f6AsFKJiX>^t_(r^t;{Kl{o9Q2o(2 z1$o8h9P=q^l~B&;+kF{+$i2F=lppF-ltQXdm02hbW*!hnk4>@-9bCkR;$&O=&GO^~}Lg8a4alz!$9vFj7f1BmXIDt9Vy#Rv%En*vo2JR5x2EvZiBsb507$zoxNG@3VrTD zKi~Q8mv>3m9NISgZS7g%+;`h0tCogk8W)E+^sZU{{g;j5Z9zJ*J5{!~4Mj|ND$X?Z zeP!;vJF;MJZ6Z}~(+3lgPb|5hVRk-CYuoDq?C*gE*LoHRUe!<*xNb?_@!CVZJ^TKQ z^+2zFn=rij=e4Gc=4<|4A3n4DBi(=BV}a|!oxk)9sil zIRxsTVELzpQ&|_cYDKNPxTU+{ce8G{+v6uyTQ3@)2rnHFcV1j~weE!dV5MqMIF~R= zDu*c~aH4`SWciX4;5cjv?b&*$$q_lB77#pWHD;juw(wxGOUkn}r_@e+>@%lp9f+H# zO;Z9P1LkMY#@#R+WIsVN>*V)o0Z$S&+Yo^UXIz$CIKYF2==y9K@m(>Oe+IV_TD`csvBpU z9XUml6Ed?bw@mAwbiF}3=&WK|o8%;UpKy<0tbGHN_s~vxwrh_eELd-?$q0NJzAjOY z=N~8r^Rp&vMeZ21mve9b8Qc*snl&pBT&%8x!p9PUk_BupU2;~ zg*EJxg0eZ*!8$7c4j&2x;`EZ;EGi@wbX*cRR+|9KsVGPpc*4aI-?1`&djc&(DM}EL z<}4i`Xl3n^wk;y;tHEk^_!yL3NI??|=x0F(6bb7MK@?;Op2*;Sl}^WECV|iO>TE<8L1)Sy1HHE~lZhnB8YSxePYEx0A!AIXRQ4q6dF!_haI({#!^sKJo3om_H?6vZs^{LE{`RuE zvh?7mO|chXm5au`Y7K<~{pdmOO!oKZJYRe8_P zbOI~hX`t$Lq0cv?TLnR0kAw3W-EY4f*?!QC*S6!1y7dz($&3Ghm0&D%*ZJst>CzGQ z-kuu2A2h=n@n*M7Zq`7@hYz9#kPAxBrY+oZ$lL8y^Nq4PCyV^X*6zZa+ngg|fwO0K z&XUDocB~$M{`<$^%-ZNP0SNVXh6{=EwDxxD^X>88yhvgNqCzENv$sC&QV;qi5V%#0 zc1Ztcipd`@F1874ymtLW&FWH~MOd`wsD$tyc?E?PbP50Z780y&6TVqfK#hs8^Q=Cd z@m%oexJ&o;u4T`ec$4N$J8NQoE2wkXUVT~QJY|!?nkS~wo5eK5Ay0&IhfoBB3}_oE z3@c~vpeYc z4nLZ`CRZ{pRk@g3Z^=Uf2FcMMH9stqVT}?4DwevDN{=oK zsw^#RF#me}MB&iAmvn=uJRvWhGk?NR!U_7JkWd?~0zrZ-M;+UxurSs&8!XUNC`ptQ zg>haGK~o!u5yQUsD4H0FI8an{OM;9`wnNZFEW~jx$Ix!m5=fWOFw&;sF*_*B;PrsX zW{DOiQYtZZWrD+>HSFl*0DuYYY3^<@alDM6r5a!jJ)~-|uOGw)U~<;*XVm-vN;7Fr7Xarpz(hh6u@E3VC{EL9Cg9Cd3)QkoBQPrt?sx4#ZGcL1 zYD~D<&uBo12OodG>^)VgI@cJk2{hvgz2(}qwO|-)CX-4fI`M$Kl!`XF5%q3BICx(! zG6#_4F}uIS!aYmm6;!9MAtY!TcQw!4RbhLTcs7E^?yufcQfy9WthwM;)ua`!s~#_8 z&XWi`ulzc+a)&xIjbG5cC_Fx6Q$tuIA%PmPe}x=tXB@2#bejqA^$q=Yz8BHJB;m)2Pq?;#xvn8U&R)H&=U-ossXDQICk_RBs>a#sEw zN~r~PW?7zdMY=dv625&pFM^H5U&$Ix*l<(z=3WgOujrs^jvnD190~%31JR@kgCFCvUG1Ra+z*xcx^atPK{BVcPLMP=7Ud;IZV}d;flI01oN_UbAhO5MR$3dWvOORVGLqF0%yt3RM1TEoYxf!h4 zdF`L*4}Kuw3)TMg5@*e%1dG50$@Z!;3-4PF^#5VP_jhuNYfpe z1V%=vwd}NO3k=v6h)X z+kdlP1R7U;!dDp6;O6914ERm0*lQs-HbwE@Ivf^|scEzb^o78=1c?mn&PzbyFGD$= z2gD&?YU99kCBOnu6rxZfg99@O33|@%rP!k}429ugo~PY!1SALS40RWlkAnXgk+eI) z41u9#i<C31h?727RL$>LjjBhB26OlzkYS-jp<--zkQ=fj7QD za5&O*JQ`bwO{1@vC-PGEYXt3iW6?;Ux*I74y3Hj5du5m~AUGewWzHkIQk!9ga{r;) z#;sfo<(o)Jg6~sA$sWlu9PC0PW}RIRw%x&2blHZfY#>!yPg=1ZbmdqNJCUW!5#F4$ ztlHp8NmLvm5)DLrln;t_^iUI_brJrb<|{Cd0g~lkXAM0vf4`;u{rLQKABx{UnSBuV z41(!5D_C^(Uuoj91bm`=bFS7(v0W|Z?vtKP%VK`n8pp^3ea9|`1@42LHu0qWFOHLY zN;lRVJ8jyxGAXyfXG%~ut15&_k*&H(+0!~u9G0Bd_lWj&EgK=##N zurC3US=2!Y5KvuMqTA>j{m})qbbORB_?$OMa2*Q1RN^CQSPmiT1Q0pR<_OTEgutei zpjJYWBsw8ro>VG_)eWtL(b{9M$yz$Em}XFVeU2c`J-2277)imm+s_ezRGu6hIg5}H zyuUx65N5YjOu7*au)e1Z%5H`id{;S-!Po(VM0kFd4qGg(xLu+!rPmHF?5M)JMX?x7 z=}_PRrRZf3&xo^()V8Rdy-k}ln)$rKM7bNx;Ln4Qz{yRA2xP@B5C@+z+U>^quDf%0%LPPeP}OAXJ0P zBDWn2d(|aMBi_483jzHJ90NLIGssNQ) zX>z-)RA7f?Pmfj#FBmIe9|{k)Q`IIBj+SG;^(YgEfIT2G{y-gKr~tt!b6FAvui`ZK z5NW<}R@1m-Q+wJGko>960!KwTSStbnq!Bb!RP%ciMjY^t zfrbr%GXKxX9WYN(3MwoB`LC-TUPL%1=+XEq%K*Lw06z=||2!)^I8gsQYzKPle;in% z)4l1@{`2yqG zo}CfurzTVsms&5V)KR;mjn&sji*{QZR<@ni{sWP1UlcteK2W{)p=4pA)sv>a7;)74 zu2uAI+}FA}+yP@dBJTKuJw)Q31qoyCVh_}gdSvm)6XGS^WnptY$0~bn{(kE-^w55<-q~m$1(QCDCTB=os;A zR#d*8RWE5tJNX!A-ih;vYB7f4{vq|!M|9P5zURvy`kp`DxDS7*&hGXSrc#(x?sqV^kEl=G?$TM<^KXVv4+ zbXdp|r1mTkFPsfO-IGd`FVGYUylnj0QGDHgVemvJU4lPM=YE#X6KkM^$~>n*!EM0d<9(NcB}pOmdg=MtfxvnWh#+QedoEv;;oOd0{*&siIE{a zB-e+LN}Oz0idKsEG%YPO9&nQ3lrryX87#w+sV#?x+pHN0WduS|kGHvZkbBn~BR7so zONU=NTuBu}zCFjE5)KtZ!0-*k=0lUrh+s$Yw8u;XQAs?xOd(A4JKVW!5*+`FK-$8Y z$3FyzE(&I@C@T;USS14~ID~;0XdZaSfsYwP87yx`M{hb zG8B;dATTn`YvCwEeM^8PiZIv3QAZ}*5toi$sQaN5h78Q|2BHqJsTE39Tpif`97JN^ zf?sImz>%9&4)Pxaj_n*0uskK6VA_~pv87#82WBelz6n%{0Zu;&5KEZ3Xg%!GdDe^o zb51$*3E=9J!pe5^$7k2R2D%lpq_EBw_sUt?uGS4WBls8}uavP z$W&=>WW%9ld15hs5Zl{f6@eVr0NE8qivL}!1Uyryt6?bg_YC##?l;4q<_Vb!CTssV z!~ezI`i~FLEMNfW{ojwW`2hi!%7tFo7MWLSuYLi1_N8$*hXO`}5>~x;BQ42cAb0IS zju%irR%2mMUX*F?s8v5!K8N*SWfeG~T#&^(h}(C=8EqO_gYPYhoG9&!Uc4X9USrD2 zXK6)|6$u8m>%S+k79YUz#jiBoyE-9!N0)52_||i%IwxW6EYA`DC4CbF(tH0Exqk7Dp@^NGfStAa-AA>^6Vsgi+jPY>mvc=-ND!+JxjiZ z{;E@FowtXGEx)}a^xA@+{M!=sW5kCmubhYtvf(XAPU@&%!T~8PEnY>xHzC%CRnyGFkLHzH5E`Ks4OmLaB4ia( zj)EmPo#sl(025S@NCu7o>CB(4+vbv&3mq#N^aEyaqJi_eln`~CW`DMsqzdzkY>r-5 zRGRWKFoV!+H7M^d0l9|W{)vIlzj}t}R?f>6ct*{Wz&rEhV?Dq9Q$-&;X~_SWF3(jR z!M&R$NOgkDjx@S#hu)t6%S=6&bL37sfls)q61ycrb{_J)kCh$2o9TK;t`u!LKzYNC zWRmMa?w#i0f_Lm<`ou;s5eo7c z+iRAwg595n880UzeV-&rG8|zBY@Q?gfd#2@21E{RQIXnbw4_!6*f2bDX&s>+eiH^& z@4#H1y*v1vZw_MynY0ILouUl6fs4#X#?%Wl*56SGGm6`UN|Pa@8pI2XE&x zLKBdTVWC`>q91UBHe@LwcxZ>h(9lr!s-Eyh9V>{WsIPlMdQcXJog+XfQ>h^mCb_5# zU#x8BEWyK>-qEx6$}H+!AT(mrlx5>msCFBMx*oTaU={MeFE`cDS{2~I+J74Z{!MK7 zhnD{D49$Oi%27}N#RUIn+z_Egy)Xj)+tG(H4X_k(iu}ki;OXfa43*oIN zSH367IM|~ZA#r*U8!I1ju*X)A6=j?~r=ID}QAecheMyz#MX~kGW!oj{i)Pn(GgCsl z!}kN|M(!_)Zi^WG*dvCsqF%Drx?tthsb#0^ls#;6}(#@c!B>z$YIy}t7q%&k%tx}h$BN%Ng0aU$(0upeA7(B^B0@GUaBwz z7Y)`C%2tYMt~j8pt?O7OZho5;SC(n@jK+hBtmF1Mm1obm=N-G0*43Kuu=Loa{O$Vl z;Xf$ir3tjO{t{77K-W>w7a1|UQbyfHN6XD`C}MI?ggereC<+Jg-bwXI1<;6Nu*LLv zWu(f0LfR+bVvjdp*V&Rv=^eKs+K}n0mlFKaQi2@kNgl=+0H-R!=&fNQ`lo$~`!J>0&Z90&4zZ5UAklulvL%v&o0M^9j&X$ejda z=%ssw#_WFZr-r1U1n0h@8>Q%?`h*O&qLX6)rv~*$HwyM9YV21wKqVFUeql=I`F27- zZ@Imr0tyU86euw4UA0Ni6XePqOa{;+AISmN0Pob1GVU1sKt5sg%F6}}xOOi!lRczH9E=0HX#PeFN7uAxZJik-ejQOGcSP2tXLTgSE{Of z$WDpkUDSWd^6nf8PEL;UVK9sPV4~zUC}O&>sF|hcAQ2|=HD)GgR)yXVoeux=4Fl6* z6lwpjlsi3I&iw1VrTtfZ{WnnNfBiKun&A8?9sOIO{+}NRZB;QenAM<9wOp(bRdkQW zGb)W{w6T6=V#$>~1&8d#NOZ^+o8SOB;}?9^M5#HRk#ukQoEfrNG0i4Atj7Va@GpDtcoa^!Vj_^D+@ zZpji_jzj*Ql^+v*j=cl_r<$&3q8YqCU)Nmu(6*?^Az5M<)=OG?Khb<% zVVh~uBy+a)(|5jun&XvAUpCCSWvpBKX}q-gV)U-o@TEp)jFYUzYrnwbJ%4nsX3oXR zr5}3_J$ZF@*4wfjTAr7$a-ROKQlpQJdNQ=sIAr&MS5(t)L$X_v@VvK(5iVr4Qww+J zhkWYHAIFENTgG0;F8dynsfAhG{M#DYpn1|{3mpg&EU+qI)~V9xn$ zvY($no)3$UT>v!S9h?wI0Z*0$C}dEmK~?$|B1M1&&<-e~S>D_ToRf5!B1R;(vu}lj zeYDJquibwP>{LM!*+wynXg34iZXPeH<6erRFS@S<%#K+!>ux@EACn|eylg<6)I-Y! zDcT&&Yv-!Njy=bWKCZO*0k)!!S*ZEF_!{!ajTEZ(WNaw#dEyMEaaq`Cyt4o4Lp*!s z2JZJTv!7FsO6*qYo>$x6+`oGhUG`(i^XLz z5*5b~|1M!yGY7M}Dx)2iw@3b|Jo85@I%$OwG;VMgE`$VM!FB@zS{QBzrhY8|QDh(u z&*45OlpH6$opLiLx-{a?8UO}6eF1M zq`qF7=nr$ieQ(RGiio$Mc1V4ff=lop6d?KA=QP;3bJ{Rb0bN^1ScAgic701Nxz#hc z`+++1?LdvyyBZ(y+Q&@&xtDuI_LU!p{lqHkzg8`eDpR4n$%Yy2`o7K!NsA3&8}rKf zPrUnm>g-LqzEXXYVnKv3>ZsV!fBB~v;pABPr!tEAb^e&MY3+v5ZT21v&QLeMoBv=( zvP8^u;Hvt;`J@D ztA>~!1WgTgj5xq5QNho7O!kcOo!?1pGtb7Sb^WHmwb^et+Gdpy&}K+bn~7uCESqGf zQzLTO>HhZ`i0)&^2S0xm0UNHu;{JSRRE@{=i4bp1F5CHns?He$!}jMqml9>%Y#Crp zC&Ggw6yPQ%=@2W~aVU@51N31P8SD>as)Dj4UD%mvFj%BnPIj*|*PF9bikqW={erDI zDO(f$qZGh-JxV!a{)Mnfu=N=|02lqM4=bRoYeUSz{qfQ^GqB0D!Znpqegl?UDp!NO zNx;Bpw;7htqQ)Z0u%RS|n;6*Vx{Osqx+pR7+(ug#a;|H^%6Y^7hEe7>PqWO-w%?64 z$lBEs6nlBA#}1N%L7GRj+%c`GbNRo+>iC+ae-NfS*N~6pvM849MvEgcsUs5ut>CGt_of=Hs z!32L>dU#QIu6j$ERT{UPHzPlQ0=h9R6vv#V)lb84VD<%7gfoa;0g^-w!(b;6OxX$v zKv_c(QLgj@gDd1;{^w(Ng*KuvLdnZ_36T;3F*t{ANL{DS77A08u|@vvA#$hyjfa^tqsJM zloPiL!T;kBG8xS4=l>2*98*6zK1B)%zIIc>TCXNphe)<@<`tP%);wWTXti32Eg6fwf?Qg9suC=u`l zE>O43%f-O~6eKu+B&C2HEqe?tE=1FKg$M%2G}Tp93!-f@)B%<-B4Ggv>=zJC)v_vT zDLCZaQlyp0bPUOkoh^$u7+1_qVC<9HKeFp zH23FuzdU!2;_}suI}=9Outn~`Ia6W}`6hIo1l5=x{|#M5ZXkRG(A%Iw*V}234;dXI zM+Q?(_=o|ke1X8{XbL+&?NnmJ@kI(^E8z`GpptMhp|=<_C|YDFYZ|6r%o^y<)piu5 z_Bu-zrCQHIyyObvt^1Qpmp+Oj-t$KkbF)vkIWCFviex2flpnJTdU7zJB*u(C{W?~!>WJ* zLh!j^Z#O&`+PjPDE0mq3=JhfSw#|mIis}``7%_5i;~bl&3-Rt7o5qY4-;RGV`;e`? zAoKQD-{+&8ha)T7PHS#`GAc|7PQCk`XZjFGvWa>VJLO9^hL5Tl+naXX-(PSmA_s_Q zXJ)@Jt&QuiHdwuD;Qa{0Eb569;jOVe{vsiHleM5e_pK7*=5(^m;zwhnSynGR>1w87nT%SB|e(tRzV8|CzFP$qS6{R07jw*6{~7-Kr!s z!`bPfM-#-CZQj#Q-L(;z%L#9QY&_#OtU(97(UB0mAM#i)5q{y0c3cA5C!IvV+EB=f zoCBi)nCFHm$xW&fsKx_u?;Qi?=yMrJ=xO@_rA_ZEXA8uprIi}7z8g&@R~DQ#PhMMA zzQASf6^CT^f-;pSxMhkB`bP>I7IPER@1-2hCe*_FEvYXB*OBWoW_p8DQn^AH!<*fk zw&&Fd)wC9QF?4f^OWK`4mFNV+H$$T`ZBSxMU<1o1MZp%peDa_8BPe`t%q68n6HVy8pMaJ#@0+T*|C~Ht0_BJs}LmiPx6{G*Tj6JWEVnF?jl7 zRq_2~E&BzxQ||k&LBzk3hC|M*QBUyqj(gVFII?=A`^>rvza=P686jJVa)ZIbI>b8G zKRDAsYF;avM2Rjp%LuPYnOOrcO+V+GPCpFqbDyh1*B?J%tT_BQNw%OhaCc(2NRw$^ zB-1Dn)ejy&J79iWj5iA&ZgZ{b11oD6{)3pOvCP`n+Z6R-CC!UB@9)ai+IqtQ(;C~_ z>Afks^@&Gj+@qYr?BkUi=WPft&_AqSPOHAH%*eGath#pZcv{Z%V5jRs6G2<2(+kl?zH3lIsuBrt*D=+^@qda15m`}g653Y$+i zEqbcG_idh0@q(Z_Pnf%RpGoYE9bXJ{w*|O3oxAJ%*l{JxC4u=MYrYMler0#pX@kZA z8RPIb52K^e1MQ0XH!DZq2RbAU2aNJx+uOW^zk#Vt%i(C+C%h(=&|9DACB~!(mYdAh z&@){cRjI(<7WMaFFXDUaKMyQNc*b@(v=f@eE?6F~KY_b%6?XTV<)1b+t zaQeHAQt!HiG=bmyf`X{aRyNgDX+aG?B!s^349VE!UpCnIDmGuxaWtrn=VWr}zP=s@ z=Es6$!s7&LOFtx5SS>GC$+UeCd?|6r+rwrdj#~C!W~^w(kpWkYgcckpUZUvh5G+*n z-`%ckhY&EprV6eCS8qb~PO=%IvmWM#H}oiOdyNjnhFyLCNkaP?>DHu|I&+6maPNYl z>)Ajp4$N_s#)jFq7Fsjn2gMDfJM`!(NbZd)isOph1cr0DnS`Y%yta;X@*tgr$5b%Q zX~gpHSdkINv=VrgwFncqcVIU`1^YA9qvbF7@n6CZAm|0S<9~@yK#B1$ALKuM{a-+| zP#ZBEA#B)j9eu%IA%HRqGw zHFZaA-y|e#)EX2}_DXOuf&z*LC=eneB!G$&P)y<|!$qhVrZzcSVJAv z7OjA2(U1TtA_^$eRRwL;*7w}dzF)uZ>pOnGQbTf+T<-n<&v?!`&w~=QY1^pL>dgNs zz)a;_>X}pwrG;x=vzUtnapNd%@|mHCdM0X?x;+icT!O%iAbA1NQqN_@K=~thBbM#T z2sLR;iLFXgCDgmRpV3S7(wWA~l9xMvbSgSO-i7PKVO5lyWdhY9|7D9zV5E zNC@+q1Zjz2O1ub~gD9AL)~;3cWLO4Gen9>~4z%%C5G7zI2upM+{h8f-a#SjHw(=RW z;`Yyzo{iXkY72hL=&h&}FNdUU8{AasOfVPKswkSvE>n94Vtx`y@j%gFlo}>E*%1n) z>mYTeoxF!yB(!=#@evv}oS^Oob+M^Ro?TUPGreohgk($F(yow$vbDe~U7k59w_iTU z-}g#mT9ACZO!us5eaash%+!|s^IYOrx~@1CJ7XG@2}u$O_!8`OW;{?l;Ym=vsLaHg zaG$SyizS|F8h%~V_MUInz9BONS96pXsy~o#6qgLU{_9J_-6y`t@49$gmWXxO@c5hR zVpq4!@W|#BFz;QkW1wgUJ0L@CE3A@Z-XCF63S;|?hw^^eSf@(WJI!E*(KC7ikOhp+59{bX}l3TG`L z$L@zkUY@axJ!LL~CMI0vB^>g;nPGmx*JPUawVH@)p1l5jiFdq)6u0vyM`JQ)6af1o z&>I~#AI^mG1wdpQNH9_g3UM$E9Vy0M1C@Jt(o06%AweQxo(lS46ZtffY)~VnBlwki z%Pfxm-dTVv5FkJ8OuA^*$g|2)tj%x0UEO$4BE32PEInyFGe>c+JvI8!})vL zNuxBFT<=)fvUIpdm<|MQRWjg1FoX^$e-o<>bh3-&2shQbmz3XViowLCqqHhZ2v4?#$Z<%hZJGXOIYkBzNROVEhZz5&d+#c9 zMtRCpC#t7txX_rhUWnU#G9mw6UF*_P-*)B~bEvOEZtetAVtGE~XsjD>|HOtXD>Du0 zKX#TEyA<4QL?ZOY^zNj0=lJS+*SLOoXSvPa5$SB0f5W9SzV^nCjXT|%s1j7kt=cCc(IGc%-xbG?|)AnSb^ zy^xC*TlEhiOa(Vr*UoZAmLENX=Hfj+{PEt!B2vAR;H z0cSehbiVzNl?anEfAh4+*cp3j7C(6PKD}#%H;wzH`>kE$;lyU#+^oA(z&sr|jRx zy}kzX^VipNHTFg(y>C}l=CT^(I@tw(xv;;RVgDHw|0BZwfBN`9#}hHHqMQJL0wm0I zswhyF5TQ1p2W%Q3G3_>34hTpgOsMlnRS1XVBore7VGv4l0CGgz20=&gdvT?60ruLY@lHIyJ znWeL;^z-+-^v2h&ohG!7RTdkuPwXQ~HGWd3%x?p+s6YZrdVp4Gw3p+r2eYA+Vg^IM zj_~JMRAx+)6`Nm$>NyO1`tKS4BXHe`29F*^_`WAk(^=H5>(3eN$t-J{sC(zR^ZChV zKA(}3T>-D69F`EFm||e`k;xSMU6bI5RRVG#c6yY+hlTfbU%iRX#&%uwB_we_*(66V zIB4_E*KJkYxTuhhH9|p;MrFu7>+~c(~@zqrl_d# zT({W#_->7}Y1mQE#1VeDM_;WcL)8n#y%{JEXGkCsp9NA@+HM?I^18TSZYTrqX4rG& z5gU4Sb5O#pmC%TX5`UmAbxRFg*q1x0$;{Rf(u@?$wH0@-vI9<4*_#Go_}=a7zZH_* zdB;|n5kW=Hhjl*0D9NTn>`|Dp{i%v9nTua4k&X~}Dv&6UwM3YiQ?g}leBu>MU!e%d z-h-2azh>yx8lXX&5*93?)+7faAt5y51-7|=*T{g%1NrxYnd8*Ev@Q;u2L?S-`wP1E z|N3!+0l9yD0S?f1y#5zOKhUiKnpjvs;L*_R6rHVuj$Cv*p^`QrU%!x}Ux^C*LXr!+ zMqeV{$wpvf`NKmvzycg%M+gw^O!+v7kHzTrG8B8DaRi(k0Cmao0;-Xxd9?{AhvAl2 z8cxx`(F8FYY1fi5vR131HlUZ#xrlj5F;}%zNaHGt6?q6dHN66?y7xr#F%l} zI{hd&p0qfHqkJc4Zow}gY9~Bh4PZ8E>7kwE`}BB*=JxB5uI7YRD>t7?gNW21FVOb7TRw1M;248^R}UtP)Mu z{eE`??L+kF>io}0?A?=t_FkXJlEf_^WEo{kh4h%G!NpzEMfGYB;acK86l z4k~7WAqNtt$#4eSCQe7~WY5q!m>soK&@XyY)-*S|Exl__S^Jy*)Iv_hdG|fed+AwH z(bLyl`xw1|?xImmAM~N#02&Vz9w@M7f`mMxMcw8A9LzVvN65TpTOD(UE=$dfwix7kaB-~W1S^(ss zcqI-e`$_OMK3$#fj@hkbO+PV|XX;+DW&InMFQ_&r33p>b=++K|JHB2q`H=&i+cQ*{ z)4dxHa2`E)9JXUgu@1}rXT#w4Jybt@>58$|Va9{ob&nl10qJo@@dNB)tBziNp}SGJ z>*iCJMq_L~BL(HacX4*!SAUrB+QeQ%uWvWI&o5}JGu<2~Y^T)eqJ|n6K z(64RM{frDY8l64Ub7kT6hmkoyK8XMR!W(IHPg2vBA2MF!tR|g5+4E-qfuTJ9gpYV# z6MLk9BMaH47>x{$bH8i)L%otzOGyc{X!z>5uddD}0dimS)hdSaqkn+Iilr?HMRSS^ zpgk(YGHSx})ZV(=zMbD&%wL(BY8d2HnzAhB)NC4 z7~g&4qg0FXt@jR$IG;Z71os*Fb*$#Y)tAM?mfVNCFaL7rLW9l`o5M=%E%hw3M4OLB zUFE+8O;~@xavuL?RNf!;{Kb%J_q_C_Ux�Zrvtst|?ukcPz#LYgEyMbGG9zsVwxa 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 MfW}wK|NP)T0Q;(dBLDyZ literal 0 HcmV?d00001 -- 2.26.2