global without sharing class ConsumApplyWebService {
|
// TODO please use public okStatus
|
public final static Integer okStatus = 99;
|
|
// 备品借出时间check
|
WebService static String approvalCheck(String ConsumApplyId) {
|
try {
|
// check结果
|
String returnStr = '';
|
|
//备品借出申请
|
Consum_Apply__c[] ConsumApply = [select Id
|
//,repair__r.Repair_Final_Inspection_Date__c
|
,Bollow_Date__c
|
//,repair__r.Return_Without_Repair_Date__c
|
,CreatedDate
|
,Consum_Apply_Equipment_Set_Detail_Cnt__c
|
//,Prepare_Day__c
|
from Consum_Apply__c
|
where Id = :ConsumApplyId];
|
if (ConsumApply.size() == 0) {
|
returnStr = '没有备品借出申请,请确认。';
|
return returnStr;
|
}
|
Consum_Apply__c ra = ConsumApply[0];
|
if (ra.Consum_Apply_Equipment_Set_Detail_Cnt__c <= 0) {
|
returnStr = '没有耗材一览,请确认。';
|
return returnStr;
|
}
|
|
String message = '';
|
List<Consum_Apply_Equipment_Set_Detail__c> caesdList = [SELECT Id
|
, Asset__c
|
, Consum_Can_Request_approval_Date__c
|
, Fixture_Model_No_F__c
|
FROM Consum_Apply_Equipment_Set_Detail__c
|
WHERE Consum_Apply__c = :ConsumApplyId
|
AND Cancel_Select__c = false
|
ORDER BY Id];
|
for (Consum_Apply_Equipment_Set_Detail__c caesd : caesdList) {
|
caesd.InputCheck__c = true;
|
if (String.isBlank(caesd.Asset__c)) {
|
return '有没有暂定分配的明细,不能提交申请';
|
}
|
message += caesd.Fixture_Model_No_F__c + '\n';
|
}
|
message = message.removeEnd('\n');
|
update caesdList;
|
ra.Consum_Apply_Detail_ForEmail__c = message;
|
if (Trigger.isExecuting == false) {
|
update ra;
|
}
|
else {
|
return '1' + message;
|
}
|
}
|
catch (Exception e) {
|
return e.getMessage();
|
}
|
|
return '1';
|
}
|
|
WebService static String getwkDate(String date1, String number1) {
|
if (String.isBlank(date1)) {
|
return '没有时间,无法检测工作日';
|
}
|
else {
|
date1 = date1.replaceAll('/', '-');
|
}
|
Date d = Date.valueOf(date1);
|
Map<Date, OlympusCalendar__c> calendarMap = Consum_ApplyUtil.getOlympusCalendarMAp(d, d);
|
OlympusCalendar__c can = calendarMap.get(d);
|
Integer num = Integer.valueOf(number1);
|
Integer num1 = 1;
|
String key = 'After';
|
if (num < 0) {
|
key = 'Before';
|
num1 = -1;
|
}
|
String api = key + '_' + (num * num1) + '_WorkDay__c';
|
if (can.get(api) != null) {
|
return ((Date)can.get(api)).format();
|
}
|
else {
|
return Consum_ApplyUtil.getWD_addday(d, num).format();
|
}
|
}
|
|
// 分配验证
|
Webservice static String AssignBtn(String Rid){
|
List<Consum_Apply__c> raList = [select Id
|
//,repair__r.Repair_Final_Inspection_Date__c
|
//,repair__r.Return_Without_Repair_Date__c
|
from Consum_Apply__c
|
where id = :Rid];
|
if(raList.size()>0){
|
//Consum_Apply__c Ra = raList[0];
|
//if(Ra.repair__r.Repair_Final_Inspection_Date__c!=null){
|
// return '修理最终检测日不为空,不能分配';
|
//}else if(Ra.repair__r.Return_Without_Repair_Date__c !=null){
|
// return '未修理归还日不为空,不能分配';
|
//}else{
|
return 'Fin';
|
//}
|
}else{
|
return '该借出申请不存在';
|
}
|
}
|
|
Webservice static String postponeCheck(String endDate, Integer d) {
|
Date before5day = getWD_addday(date.parse(endDate), d);
|
if (Date.today() > before5day) {
|
return System.Label.EquipmentRentalPostponeOverDeadline;
|
}
|
return 'OK';
|
}
|
|
// FIXME 仇yj please use public
|
public static Date getWD_now(Date d) {
|
List<OlympusCalendar__c> workday = [
|
select Id, Date__c, IsWorkDay__c
|
from OlympusCalendar__c
|
where Date__c >= :d
|
and IsWorkDay__c = 1
|
order by Date__c
|
limit 1];
|
Date selectDate = workday[0].Date__c;
|
return selectDate;
|
}
|
|
// FIXME 仇yj please use public
|
public static Date getWD_addday(Date d, Integer i) {
|
if (d == Date.valueOf('4000-12-31')) {
|
return d;
|
}
|
if (i >= 0) {
|
List<OlympusCalendar__c> workday = [
|
select Id, Date__c, IsWorkDay__c
|
from OlympusCalendar__c
|
where Date__c >= :d
|
and IsWorkDay__c = 1
|
order by Date__c
|
limit :(i+1)];
|
Date selectDate = workday[i].Date__c;
|
return selectDate;
|
} else {
|
i = Math.abs(i);
|
List<OlympusCalendar__c> workday = [
|
select Id, Date__c, IsWorkDay__c
|
from OlympusCalendar__c
|
where Date__c <= :d
|
and IsWorkDay__c = 1
|
order by Date__c desc
|
limit :(i+1)];
|
Date selectDate = workday[i].Date__c;
|
return selectDate;
|
}
|
}
|
|
// pd:0代表当天,1代表第二天
|
public Map<Date, Map<String, String>> getDateMap(Date sd, Date ed, Integer pd) {
|
Map<Date, Map<String, String>> returnMap = new Map<Date, Map<String, String>>();
|
List<OlympusCalendar__c> workdayList = [
|
select Id, Date__c, IsWorkDay__c
|
from OlympusCalendar__c
|
where Date__c >= :sd
|
and Date__c <= :ed.addDays(15 + pd) // +15 的目的是、为了取得ed の 下一个工作日
|
order by Date__c];
|
for (Integer i = 0; i < workdayList.size(); i++) {
|
OlympusCalendar__c wd = workdayList[i];
|
if (wd.Date__c > ed) break;
|
Integer nextWordDays = 0;
|
Map<String, String> valueMap = new Map<String, String>();
|
valueMap.put('WorkDay', String.valueOf(wd.IsWorkDay__c));
|
Integer maxJ = 15 + i + pd;
|
if (maxJ > workdayList.size()) maxJ = workdayList.size();
|
for (Integer j = i; j < maxJ; j++) {
|
OlympusCalendar__c oc = workdayList[j];
|
if (oc.IsWorkDay__c == 1) {
|
nextWordDays++;
|
if (nextWordDays == pd + 1) {
|
valueMap.put('Next', String.valueOf(oc.Date__c));
|
break;
|
}
|
}
|
}
|
|
returnMap.put(wd.Date__c, valueMap);
|
}
|
return returnMap;
|
}
|
|
WebService static String ConsumApplyCancel(String raid, Boolean autoCancel) {
|
List<Consum_Apply__c> raList = [select id
|
, Shipment_request_Cnt__c
|
, Status__c
|
, RA_Status__c
|
//, Shippment_loaner_cnt__c
|
, Loaner_cancel_request__c
|
, Arrival_wh_cnt__c
|
, Cancel_Reason__c
|
from Consum_Apply__c
|
where id = :raid];
|
List<Consum_Apply_Equipment_Set__c> raesList = [select id
|
//, StockDown_time__c
|
from Consum_Apply_Equipment_Set__c
|
where Consum_Apply__c = :raid
|
and Cancel_Select__c = false];
|
|
List<Consum_Apply_Equipment_Set__c> updList = new List<Consum_Apply_Equipment_Set__c>();
|
// List<Consum_Apply_Equipment_Set_Detail__c> delList = new List<Consum_Apply_Equipment_Set_Detail__c>();
|
Set<Id> esIdSet = new Set<Id>();
|
|
if (raList.size() <= 0) {
|
return '备品申请书不存在。';
|
}
|
Consum_Apply__c ra = raList[0];
|
if (ra.Status__c == '取消') {
|
return '备品申请书已经取消。';
|
}
|
if (ra.Status__c == '删除') {
|
return '备品申请书已经删除。';
|
}
|
if (ra.RA_Status__c == FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Chu_Ku.ordinal()) || ra.Arrival_wh_cnt__c > 0) {
|
return '备品已经出库,不能取消。';
|
}
|
|
User loginUser = [Select Id, Name, ProfileId From User where Id = :Userinfo.getUserId()];
|
if(loginUser.ProfileId != System.Label.ProfileId_SystemAdmin
|
&& loginUser.ProfileId != System.Label.ProfileId_EquipmentCenter
|
&& !System.Label.ProfileId_EquCenCheckAndDepot.contains(loginUser.ProfileId)
|
&& !System.Label.ProfileId_EquCenAdmin.contains(loginUser.ProfileId)
|
&& loginUser.ProfileId != System.Label.ProfileId_IThelp
|
&& ra.Shipment_request_Cnt__c > 0
|
){
|
return '不能取消申请,请联系备品中心窗口取消。';
|
}
|
|
if (autoCancel == false && String.isBlank(ra.Cancel_Reason__c)) {
|
return '必须输入取消理由。';
|
}
|
|
if (autoCancel) {
|
if (ra.Status__c == '申请中') {
|
List<Approval.ProcessWorkitemRequest> requests = new List<Approval.ProcessWorkitemRequest> ();
|
Map<ID,ProcessInstance> piMap = New Map<ID,ProcessInstance>([Select Id from ProcessInstance where TargetObjectId = :ra.Id]);
|
for(ProcessInstanceWorkItem wi : [Select Id from ProcessInstanceWorkItem where ProcessInstanceId IN :piMap.keySet()]){
|
Approval.ProcessWorkitemRequest req2 = new Approval.ProcessWorkitemRequest();
|
req2.setAction('Removed');
|
req2.setWorkitemId(wi.Id);
|
requests.add(req2);
|
}
|
if (requests.size() > 0) {
|
Approval.ProcessResult[] processResults = null;
|
processResults = Approval.process(requests, true);
|
}
|
}
|
ra.Cancel_Reason__c = '主动取消';
|
ra.Loaner_cancel_request__c = '本申请审批超时自动关闭申请单';
|
}
|
ra.Status__c = '取消';
|
|
Savepoint sp = Database.setSavepoint();
|
try {
|
Set<Id> selectAssetIdSet = new Set<Id>();
|
for (Consum_Apply_Equipment_Set_Detail__c caesd : [SELECT Id, Asset__c
|
FROM Consum_Apply_Equipment_Set_Detail__c
|
WHERE Consum_Apply__c = :raid]
|
) {
|
if (String.isNotBlank(caesd.Asset__c)) {
|
selectAssetIdSet.add(caesd.Asset__c);
|
}
|
}
|
if (selectAssetIdSet.size() > 0) {
|
List<Asset> assList = [SELECT Id
|
FROM Asset
|
WHERE Id = :selectAssetIdSet FOR UPDATE];
|
}
|
update ra;
|
} catch (Exception ex) {
|
Database.rollback(sp);
|
return ex.getMessage();
|
}
|
|
return '1';
|
}
|
|
// 一覧単位
|
WebService static String setRaesShipment_request(String raesid) {
|
return setShipment_requests(null, raesid);
|
}
|
|
// 申請書単位
|
WebService static String setShipment_request(String raid) {
|
System.debug(raid);
|
return setShipment_requests(raid, null);
|
}
|
|
//出库指示按钮js一次最多更新200条,所以改在WebService做出库指示
|
WebService static String setShipment_requests(String raid, String raesid) {
|
Savepoint sp = Database.setSavepoint();
|
try {
|
System.debug(raid);
|
//一览情况下检索一览对应的申请书Id,soql子查询不能和主查询是同一个表,单独检索一次
|
if (String.isBlank(raid)) {
|
List<Consum_Apply_Equipment_Set__c> raesList = [select Id, Consum_Apply__c from Consum_Apply_Equipment_Set__c where id = :raesid];
|
if (raesList.size() > 0) {
|
raid = raesList[0].Consum_Apply__c;
|
} else {
|
//应该不会到这里
|
return '没有可以出库指示的一览';
|
}
|
}
|
//String soql = 'SELECT Id, Wei_Assigned_Cnt__c, Yi_Assigned_Cnt__c'
|
// + ' FROM Consum_Apply_Equipment_Set__c '
|
// + ' WHERE Shippment_loaner_time2__c <> null '
|
// + ' AND Consum_Apply__c = :raid '
|
// + ' ORDER BY Id' ;
|
//List<Consum_Apply_Equipment_Set__c> shippedRaesList = Database.query(soql);
|
//String raesStrShipped = '';
|
//for (Consum_Apply_Equipment_Set__c raes : shippedRaesList) {
|
// raesStrShipped += raes.Id;
|
// if (raes.Wei_Assigned_Cnt__c > 0 || raes.Yi_Assigned_Cnt__c == 0) {
|
// return '不能做出库指示,需要分单后再操作';
|
// }
|
//}
|
|
//Srring soql = "SELECT Id FROM Consum_Apply_Equipment_Set_Detail__c WHERE Consum_Apply__c = '{!Consum_Apply__c.Id}' AND Cancel_Select__c = false AND Consum_Num__c > 0 AND Consum_Apply_Equipment_Set__r.Wei_Assigned_Cnt__c = 0 AND Consum_Apply_Equipment_Set__r.Yi_Assigned_Cnt__c > 0 AND Shipment_request__c = false";
|
String soql = 'SELECT Id, Consum_Apply__c, Consum_Apply_Equipment_Set__c, Asset__c, Select_Time__c'
|
+ ' FROM Consum_Apply_Equipment_Set_Detail__c '
|
+ ' WHERE ' + (String.isNotBlank(raesid) ? 'Consum_Apply_Equipment_Set__c = :raesid ' : 'Consum_Apply__c = :raid ')
|
+ ' AND Cancel_Select__c = false '
|
// + ' AND Consum_Num__c > 0 '
|
//+ ' AND Consum_Apply_Equipment_Set__r.Wei_Assigned_Cnt__c = 0 '
|
//+ ' AND Consum_Apply_Equipment_Set__r.Yi_Assigned_Cnt__c > 0 '
|
+ ' AND Shipment_request__c = false'
|
+ ' ORDER BY Consum_Apply_Equipment_Set__c, Id';
|
System.debug(soql);
|
System.debug(raesid);
|
System.debug(raid);
|
List<Consum_Apply_Equipment_Set_Detail__c> raesds = Database.query(soql);
|
|
Map<Id, List<String>> Consum_Asset_SerialNumberMap = new Map<Id, List<String>>();
|
|
if (raesds.size() < 1) {
|
return '没有可以出库指示的明细';
|
} else {
|
//Set<Id> raesSet = new Set<Id>();
|
//String raesStrRequest = '';
|
for (Consum_Apply_Equipment_Set_Detail__c raesd : raesds) {
|
//if (false == raesSet.contains(raesd.Consum_Apply_Equipment_Set__c)) {
|
// raesSet.add(raesd.Consum_Apply_Equipment_Set__c);
|
// raesStrRequest += raesd.Consum_Apply_Equipment_Set__c;
|
//}
|
if(raesd.Asset__c == null || raesd.Select_Time__c == null){
|
return '申请单内存在未分配的耗材,请分配或分割申请单';
|
}
|
raesd.Shipment_request_time2__c = Datetime.now();
|
raesd.Shipment_request__c = true;
|
}
|
// 出库后, 再次做出库指示的一览, 一定要个出过库的一览一样
|
//if (false == String.isBlank(raesStrShipped) && raesStrRequest != raesStrShipped) {
|
// return '不能做出库指示,需要分单后再操作';
|
//}
|
}
|
|
Consum_Apply__c ra = new Consum_Apply__c(Id = raesds[0].Consum_Apply__c, Status__c = '已出库指示');
|
update ra;
|
Database.SaveResult[] results = Database.update(raesds);
|
Database.SaveResult dmlResult = results[0];
|
if (dmlResult.isSuccess()) {
|
//明细更新成功后才更新一览的Consum_Asset_SerialNumber__c
|
soql = 'SELECT Id, SerialNumber_text__c, Consum_Apply_Equipment_Set__c '
|
+'FROM Consum_Apply_Equipment_Set_Detail__c '
|
+'WHERE Consum_Apply__c = \'' + raesds[0].Consum_Apply__c + '\''
|
+'AND Shipment_request_time2__c != null '
|
+'AND Shipment_request__c = true '
|
+'AND SerialNumber_text__c != null '
|
+'ORDER BY Consum_Apply_Equipment_Set__c ';
|
|
|
List<Consum_Apply_Equipment_Set_Detail__c> raesdSerialNumbers = Database.query(soql);
|
|
for (Consum_Apply_Equipment_Set_Detail__c raesd : raesdSerialNumbers) {
|
|
if (!Consum_Asset_SerialNumberMap.containsKey(raesd.Consum_Apply_Equipment_Set__c)) {
|
// Asset__r.SerialNumber + ','
|
Consum_Asset_SerialNumberMap.put(raesd.Consum_Apply_Equipment_Set__c, new List<String>());
|
}
|
Consum_Asset_SerialNumberMap.get(raesd.Consum_Apply_Equipment_Set__c).add(raesd.SerialNumber_text__c);
|
}
|
|
List<Consum_Apply_Equipment_Set__c> raess = new List<Consum_Apply_Equipment_Set__c>();
|
for (Id key : Consum_Asset_SerialNumberMap.keySet()) {
|
raess.add(new Consum_Apply_Equipment_Set__c(Id = key,
|
Consum_Asset_SerialNumber__c = ',' + String.join(Consum_Asset_SerialNumberMap.get(key), ',') + ','));
|
}
|
if (!raess.isEmpty()) {
|
update raess;
|
}
|
return '状态更新到已出库指示';
|
} else {
|
Database.rollback(sp);
|
Database.Error emsg = dmlResult.getErrors()[0];
|
return 'failed to update:' + emsg.getFields() + ' ' + emsg.getMessage();
|
}
|
} catch (Exception ex) {
|
Database.rollback(sp);
|
return ex.getMessage();
|
}}
|
|
/**
|
* 注残申请备品的管控
|
*/
|
WebService static String ConsumApplyCheckForSAoneEle(String SaID) {
|
Statu_Achievements__c Sac = [select id,
|
SalesChannel__c,
|
Opportunity__r.Sales_Root__c,
|
Status_1__c,
|
Status_2_Formula__c,
|
Opp_Number__c,
|
ContractNO__c,
|
FirstApproveDate__c,
|
CreatedDate,
|
X30_Deposit_Day__c,
|
Deposit_In_Full_Day__c,
|
DeliveryDate__c
|
from Statu_Achievements__c where id = :SaID];
|
if(Sac.Opportunity__r.Sales_Root__c == '販売店'){
|
if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET') ){
|
if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){
|
if((Date.today().addDays(-30)>Sac.Deposit_In_Full_Day__c)&&Sac.DeliveryDate__c == null){
|
return 'Fin';
|
}else{
|
return '经销商内科订单不在申请期内,不能申请备品';
|
}
|
}else{
|
return '经销商内科订单状态不符合备品申请资格,不能申请备品';
|
}
|
}else if(Sac.Opp_Number__c.contains('SP')){
|
if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){
|
if((Date.today().addDays(-60)>Sac.X30_Deposit_Day__c )&&Sac.DeliveryDate__c == null){
|
return 'Fin';
|
}else{
|
return '经销商SP订单不在申请期内,不能申请备品';
|
}
|
}else{
|
return '经销商SP订单状态不符合备品申请资格,不能申请备品';
|
}
|
}else{
|
return '注残销售渠道类别不在可申请备品范围内';
|
}
|
}else if(Sac.Opportunity__r.Sales_Root__c == 'OCM直接販売'){
|
if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET')){
|
if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){
|
if((Date.today().addDays(-30)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){
|
return 'Fin';
|
}else{
|
return 'OCM直销内科订单不在申请期内,不能申请备品';
|
}
|
}else{
|
return 'OCM直销内科订单状态不符合备品申请资格,不能申请备品';
|
}
|
}else if(Sac.Opp_Number__c.contains('SP')){
|
if(Sac.Status_1__c == '注残' && (Sac.Status_2_Formula__c == '09 已录入订单未付款'||Sac.Status_2_Formula__c == '10 库存已预留・未付款'||Sac.Status_2_Formula__c == '11 已订货・付订金'||Sac.Status_2_Formula__c == '12 已订货・付全款'||Sac.Status_2_Formula__c == '13 待发货')){
|
if((Date.today().addDays(-60)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){
|
return 'Fin';
|
}else{
|
return 'OCM直销SP订单不在申请期内,不能申请备品';
|
}
|
}else{
|
return 'OCM直销SP订单状态不符合备品申请资格,不能申请备品';
|
}
|
}else{
|
return '注残销售渠道类别不在可申请备品范围内。';
|
}
|
}else{
|
return '销售渠道未知,不能新建';
|
}
|
}
|
|
Webservice static String all_received_fse(String caId) {
|
Savepoint sp = Database.setSavepoint();
|
try {
|
List<Consum_Apply_Equipment_Set_Detail__c> caesdList = [SELECT Id
|
, RAESD_Status__c
|
, Loaner_received_time__c
|
, Consum_Apply__r.Loaner_received_ng_num__c
|
FROM Consum_Apply_Equipment_Set_Detail__c
|
WHERE DeliverySlip__c !=null
|
AND Cancel_Select__c = false
|
AND Consum_Apply__c = :caId];
|
if (caesdList.size() == 0) {
|
return '未发货';
|
}
|
else if (caesdList[0].Consum_Apply__r.Loaner_received_ng_num__c == 0) {
|
return '现场已经全部收到实物了';
|
}
|
else {
|
List<Consum_Apply_Equipment_Set_Detail__c> caesdL = new List<Consum_Apply_Equipment_Set_Detail__c>();
|
for (Consum_Apply_Equipment_Set_Detail__c caesd : caesdList) {
|
if (caesd.Loaner_received_time__c == null && caesd.RAESD_Status__c=='已出库') {
|
Consum_Apply_Equipment_Set_Detail__c caesd1 = new Consum_Apply_Equipment_Set_Detail__c();
|
caesd1.Id = caesd.Id;
|
caesd1.Received_Confirm__c = 'OK';
|
caesdL.add(caesd1);
|
}
|
}
|
if (caesdL.size() > 0) {
|
update caesdL;
|
}
|
return '现场已全部收货';
|
}
|
}
|
catch (Exception e) {
|
Database.rollback(sp);
|
return e.getMessage();
|
}
|
}
|
|
@TestVisible private static void test() {
|
if (false == Test.isRunningTest()) return;
|
Integer i = 0;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
|
}
|
}
|