Exemplo n.º 1
0
        List <TaskData> UpdateTasks(bool bExitOnFail)
        {
            var tasks = ApiLayer.GetTasks(page, orderBy, orderDesc);

            if (tasks.result != "ok")
            {
                Toast.MakeText(this, tasks.result, ToastLength.Long).Show();
                if (bExitOnFail) // If the bExitOnFail flag is set and there is no connection or an error has occurred, wait 5 seconds and exit.
                {
                    System.Threading.Thread.Sleep(5000);
                    Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                }
                return(null);
            }

            total_items = tasks.total_task_count;
            if (total_items < 3)
            {
                FindViewById <FloatingActionButton>(Resource.Id.fabNextPage).Visibility = ViewStates.Invisible;
            }
            else
            {
                FindViewById <FloatingActionButton>(Resource.Id.fabNextPage).Visibility = ViewStates.Visible;
            }
            return(tasks.tasks);
        }
Exemplo n.º 2
0
        List <TaskData> UpdateTasks(bool bExitOnFail)
        {
            //Получаем таски
            var tasks = ApiLayer.GetTasks(page, orderBy, orderDesc);

            if (tasks.result != "ok")
            {
                Toast.MakeText(this, tasks.result, ToastLength.Long).Show();
                if (bExitOnFail) //Если задан флаг bExitOnFail и нет связи или произошла ошибка, ждем 5сек и выходим.
                {
                    System.Threading.Thread.Sleep(5000);
                    Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                }
                return(null);
            }

            total_items = tasks.total_task_count;
            if (total_items < 3) //Если задач мало, то прячем кнопку пагинации
            {
                FindViewById <FloatingActionButton>(Resource.Id.fabNextPage).Visibility = ViewStates.Invisible;
            }
            else
            {
                FindViewById <FloatingActionButton>(Resource.Id.fabNextPage).Visibility = ViewStates.Visible;
            }
            return(tasks.tasks);
        }
        public override async Task <RetrievedData <_1_1.Data.WeekSchedule> > GetScheduleForStop(string stopId, CancellationToken cancellationToken)
        {
            try
            {
                if (stopId == null)
                {
                    return(new RetrievedData <_1_1.Data.WeekSchedule>());
                }
                var schedule = await ApiLayer.GetScheduleForStop(stopId, cancellationToken);

                return(new RetrievedData <_1_1.Data.WeekSchedule>(schedule));
            }
            catch (OperationCanceledException)
            {
                return(new RetrievedData <_1_1.Data.WeekSchedule>());
            }
            catch (Exception ex)
            {
                return(new RetrievedData <_1_1.Data.WeekSchedule>(ex));
            }
        }
Exemplo n.º 4
0
        public static XmlDocument Posttransction(RkeeperTransactionclientrequest transactionrequest, List <string> configs)
        {
            bool   IsTransaction = false;
            Logger _logger       = LogManager.GetCurrentClassLogger();

            _logger.Info("Enter Posttransction");
            DateTime CurrentTime = DateTime.Now;
            ApiLayer api_Layer   = new ApiLayer();
            //string username = string.Empty;
            //string password = string.Empty;
            bool        IsModify            = false;
            string      getCustomerResponse = string.Empty;
            VIG_request VIG_request         = new VIG_request();
            User        user = new User();

            ISG_VIG_Brands.Models.TransactionsRequest.Capillary_Transaction_Request root = new ISG_VIG_Brands.Models.TransactionsRequest.Capillary_Transaction_Request();

            POSTRkeeperTranscationresponce response       = new POSTRkeeperTranscationresponce();
            TransactionResponseRoot        responseTrans  = new TransactionResponseRoot();
            TransactionFailedResponse      failedResponse = new TransactionFailedResponse();
            var mobileIdentifiers = transactionrequest.INPBUF.CHECK.EXTINFO.INTERFACES.INTERFACE.HOLDERS.ITEM;

            foreach (var identifier in mobileIdentifiers)
            {
                VoucherRedeem redeem                 = new VoucherRedeem();
                Match         mobileRegex            = Regex.Match(identifier.cardcode, @"(\d{7,})");
                string        mobileRegexCountryCode = identifier.cardcode.Substring(0, 2);
                if (mobileRegex.Success == true && mobileRegexCountryCode == "84")
                {
                    mobileNumber = identifier.cardcode;
                    break;
                }
                else
                {
                    var clientVoucher = new RestAPIRestClient(configs[4], HttpVerb.GET);
                    clientVoucher.MakeRequest("&code=" + identifier.cardcode, VIG_request, configs[5], configs[6]);
                    _logger.Info("Identifier is voucher");
                    if (!string.IsNullOrEmpty(VIG_request.ApiResponse))
                    {
                        // Models.Voucher.Response customerGetResponse = JsonConvert.DeserializeObject<Models.Voucher.Response>(VIG_request.ApiResponse);
                        // string responseCode = VIG_request.ApiResponse;
                        XmlDocument docResponse = new XmlDocument();
                        docResponse.LoadXml(VIG_request.ApiResponse);

                        string status = docResponse.SelectSingleNode("//response//status//code").InnerText;
                        if (status == "200")
                        {
                            mobileNumber = docResponse.SelectSingleNode("//response//coupons//coupon//customer//mobile").InnerText;
                            if (string.IsNullOrEmpty(mobileNumber))
                            {
                                mobileNumber    = "84986084229";
                                IsNotInterested = true;
                            }
                            break;
                        }
                    }
                }
            }
            if (transactionrequest.INPBUF.CHECK.chmode == "1" || transactionrequest.INPBUF.CHECK.chmode == "3")
            {
                // string mobile = string.Empty;
                _logger.Info("Ch Mode is 1 or 3");
                var client      = new RestAPIRestClient(configs[0], HttpVerb.GET);
                var identifiers = transactionrequest.INPBUF.CHECK.EXTINFO.INTERFACES.INTERFACE.HOLDERS.ITEM;
                foreach (var identifier in identifiers)
                {
                    Match  mobileRegex            = Regex.Match(identifier.cardcode, @"(\d{7,})");
                    string mobileRegexCountryCode = identifier.cardcode.Substring(0, 2);
                    if (mobileRegex.Success == true && mobileRegexCountryCode == "84")
                    {
                        var clientMobile = new RestAPIRestClient(configs[0], HttpVerb.GET);
                        mobileNumber = identifier.cardcode;
                        VIG_request VIG_requestmob = new VIG_request();
                        clientMobile.MakeRequest("&mobile=" + identifier.cardcode.ToString(), VIG_requestmob, configs[5], configs[6]);
                        ISG_VIG_Brands.Models.Customers.GetCustomerResponse customerGetResponse = new ISG_VIG_Brands.Models.Customers.GetCustomerResponse();
                        _logger.Info("Response From Capillary {0}", VIG_requestmob.ApiResponse);
                        customerGetResponse = JsonConvert.DeserializeObject <ISG_VIG_Brands.Models.Customers.GetCustomerResponse>(VIG_requestmob.ApiResponse);
                        if (customerGetResponse.response.status.code != 500)
                        {
                            IsTransaction = true;
                            responseTrans.TransactionsEx.Result = "0";
                        }
                        else
                        {
                            IsTransaction = false;
                            failedResponse.TransactionsEx.Result         = "1";
                            failedResponse.TransactionsEx.OutBuf.OutKind = "1";
                            failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Error_code = customerGetResponse.response.customers.customer[0].item_status.code.ToString();
                            failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Err_text   = customerGetResponse.response.customers.customer[0].item_status.message.ToString();
                            break;
                        }
                    }
                    else if (transactionrequest.INPBUF.CHECK.chmode != "3")
                    {
                        _logger.Info("Card Type is coupon");
                        VIG_request VIG_requestcoupon = new VIG_request();
                        client = new RestAPIRestClient(configs[2], HttpVerb.GET);
                        if (!String.IsNullOrEmpty(mobileNumber) && identifier.cardcode != mobileNumber)
                        {
                            client.MakeRequest("&mobile=" + mobileNumber + "&code=" + identifier.cardcode.ToString() + "&details=extended", VIG_requestcoupon, configs[5], configs[6]);
                            XmlDocument docResponse = new XmlDocument();
                            docResponse.LoadXml(VIG_requestcoupon.ApiResponse);
                            _logger.Info("Response From Capillary {0}", VIG_requestcoupon.ApiResponse);
                            string status = docResponse.SelectSingleNode("//response//status//code").InnerText;
                            if (status == "200")
                            {
                                IsTransaction = true;
                                responseTrans.TransactionsEx.Result = "0";
                            }
                            else
                            {
                                isSuccess     = false;
                                IsTransaction = false;
                                failedResponse.TransactionsEx.Result         = "1";
                                failedResponse.TransactionsEx.OutBuf.OutKind = "1";
                                failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Error_code = docResponse.SelectSingleNode("//response//coupons//redeemable//item_status//code").InnerText;
                                failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Err_text   = identifier.cardcode + " : " + docResponse.SelectSingleNode("//response//coupons//redeemable//item_status//message").InnerText;
                                break;
                            }
                        }
                        else
                        {
                            failedResponse.TransactionsEx.Result         = "1";
                            failedResponse.TransactionsEx.OutBuf.OutKind = "1";
                            failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Error_code = "500";
                            failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Err_text   = "Coupon Not Found";
                            break;
                        }
                    }
                }
            }
            else
            {
                failedResponse.TransactionsEx.Result         = "1";
                failedResponse.TransactionsEx.OutBuf.OutKind = "1";
                failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Error_code = "500";
                failedResponse.TransactionsEx.OutBuf.TRRESPONSE.Err_text   = "Ch Mode is not 1 0r 3";
            }
            if (IsTransaction == true)
            {
                isSuccess = ChMode10(transactionrequest, _logger, root, failedResponse, responseTrans, configs);
            }
            XmlDocument doc = new XmlDocument();

            if (isSuccess)
            {
                doc.LoadXml(responseTrans.SerializerXml());
            }
            else
            {
                doc.LoadXml(failedResponse.SerializerXml());
            }
            return(doc);
            //return response;
        }
Exemplo n.º 5
0
        public static XmlDocument GetMember(RKeeperRequest search_Request, List <string> configs)
        {
            Logger _logger = LogManager.GetCurrentClassLogger();

            _logger.Info("Enter GetMember");
            DateTime    CurrentTime         = DateTime.Now;
            ApiLayer    api_Layer           = new ApiLayer();
            string      getCustomerResponse = string.Empty;
            VIG_request VIG_request         = new VIG_request();
            User        user = new User();
            POSTRKeeperCustomerResponse response = new POSTRKeeperCustomerResponse();

            try
            {
                //ApiIdentity identity = (ApiIdentity)System.Web.HttpContext.Current.User.Identity;
                //username = identity.User.UserName;
                //password = identity.User.Password;
                var    client                 = new RestAPIRestClient(configs[0], HttpVerb.GET);
                Match  mobileRegex            = Regex.Match(search_Request.QRY.Card, @"(\d{7,})");
                string mobileRegexCountryCode = search_Request.QRY.Card.Substring(0, 2);
                //  Match mobileRegexCountryCode = Regex.Match(search_Request.QRY.Card, @"^(84)([0-2]{7})$");
                Match voucherRegex = Regex.Match(search_Request.QRY.Card, @"(\d{6})");
                if (!string.IsNullOrEmpty(search_Request.QRY.Card))
                {
                    if (mobileRegex.Success == true && mobileRegexCountryCode == "84")
                    {
                        client.MakeRequest("&mobile=" + search_Request.QRY.Card, VIG_request, configs[5], configs[6]);
                        if (!string.IsNullOrEmpty(VIG_request.ApiResponse))
                        {
                            _logger.Info("Capillary Response : " + VIG_request.ApiResponse);
                            ISG_VIG_Brands.Models.Customers.GetCustomerResponse customerGetResponse = JsonConvert.DeserializeObject <ISG_VIG_Brands.Models.Customers.GetCustomerResponse>(VIG_request.ApiResponse);

                            if (customerGetResponse.response.status.code == 200)
                            {
                                try
                                {
                                    if (customerGetResponse != null)
                                    {
                                        response.GetCardInfoEx.CardCode   = customerGetResponse.response.customers.customer[0].mobile;
                                        response.GetCardInfoEx.Account    = "0";
                                        response.GetCardInfoEx.Deleted    = "0";
                                        response.GetCardInfoEx.Locked     = "0";
                                        response.GetCardInfoEx.Seize      = "0";
                                        response.GetCardInfoEx.Discount   = "99";
                                        response.GetCardInfoEx.Bonus      = "0";
                                        response.GetCardInfoEx.DiscLimit  = "999999999999";
                                        response.GetCardInfoEx.Holder     = customerGetResponse.response.customers.customer[0].firstname + " " + customerGetResponse.response.customers.customer[0].lastname;
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.Sum2       = "0";
                                        response.GetCardInfoEx.Sum3       = "0";
                                        response.GetCardInfoEx.Sum4       = "0";
                                        response.GetCardInfoEx.Sum5       = "0";
                                        response.GetCardInfoEx.Sum6       = "0";
                                        response.GetCardInfoEx.Sum7       = "0";
                                        response.GetCardInfoEx.Sum8       = "0";
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.WhyLock    = "";
                                        response.GetCardInfoEx.ScrMessage = "** Message for SCREEN **";
                                        response.GetCardInfoEx.PrnMessage = "* Message for PRINT *";
                                        response.GetCardInfoEx.Result     = "0";
                                        response.GetCardInfoEx.OutBuf     = null;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    throw;
                                }
                            }
                            else
                            {
                                try
                                {
                                    if (customerGetResponse != null)
                                    {
                                        _logger.Info("Customer not found , card number :" + search_Request.QRY.Card);
                                        response.GetCardInfoEx.CardCode   = search_Request.QRY.Card;
                                        response.GetCardInfoEx.Account    = "0";
                                        response.GetCardInfoEx.Deleted    = "0";
                                        response.GetCardInfoEx.Locked     = "0";
                                        response.GetCardInfoEx.Seize      = "0";
                                        response.GetCardInfoEx.Discount   = "99";
                                        response.GetCardInfoEx.Bonus      = "0";
                                        response.GetCardInfoEx.DiscLimit  = "999999999999";
                                        response.GetCardInfoEx.Holder     = customerGetResponse.response.customers.customer[0].firstname + " " + customerGetResponse.response.customers.customer[0].lastname;
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.Sum2       = "0";
                                        response.GetCardInfoEx.Sum3       = "0";
                                        response.GetCardInfoEx.Sum4       = "0";
                                        response.GetCardInfoEx.Sum5       = "0";
                                        response.GetCardInfoEx.Sum6       = "0";
                                        response.GetCardInfoEx.Sum7       = "0";
                                        response.GetCardInfoEx.Sum8       = "0";
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.WhyLock    = "";
                                        response.GetCardInfoEx.ScrMessage = "** Message for SCREEN **";
                                        response.GetCardInfoEx.PrnMessage = "* Message for PRINT *";
                                        response.GetCardInfoEx.Result     = "1";
                                        response.GetCardInfoEx.OutBuf     = null;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    throw;
                                }
                            }
                        }
                    }
                    else

                    {
                        //This is voucher
                        string mobile = string.Empty;
                        client = new RestAPIRestClient(configs[4], HttpVerb.GET);
                        client.MakeRequest("&code=" + search_Request.QRY.Card, VIG_request, configs[5], configs[6]);
                        if (!string.IsNullOrEmpty(VIG_request.ApiResponse))
                        {
                            // Models.Voucher.Response customerGetResponse = JsonConvert.DeserializeObject<Models.Voucher.Response>(VIG_request.ApiResponse);
                            // string responseCode = VIG_request.ApiResponse;
                            XmlDocument docResponse = new XmlDocument();
                            docResponse.LoadXml(VIG_request.ApiResponse);

                            string status = docResponse.SelectSingleNode("//response//status//code").InnerText;
                            if (status == "200")
                            {
                                mobile = docResponse.SelectSingleNode("//response//coupons//coupon//customer//mobile").InnerText;
                            }
                            if (!string.IsNullOrEmpty(status) && status == "200")
                            {
                                VIG_request = new VIG_request();
                                client      = new RestAPIRestClient(configs[2], HttpVerb.GET);
                                //client.MakeRequest("&mobile=" + request.mobile + "&code=" + request.coupon_code + "&details=extended"
                                client.MakeRequest("&mobile=" + mobile + "&code=" + search_Request.QRY.Card + "&details=extended", VIG_request, configs[5], configs[6]);
                                XmlDocument docIsReedeem = new XmlDocument();
                                docIsReedeem.LoadXml(VIG_request.ApiResponse);
                                string isRedeemstatus = docIsReedeem.SelectSingleNode("//response//status//code").InnerText;
                                if (isRedeemstatus == "200")
                                {
                                    string  isDiscountCoupon = docIsReedeem.SelectSingleNode("//response//coupons//redeemable//series_info//discount_code").InnerText;
                                    decimal sum8             = Convert.ToDecimal(docIsReedeem.SelectSingleNode("//response//coupons//redeemable//series_info//discount_value").InnerText) * 100;

                                    if (isDiscountCoupon == "xyz_123")
                                    {
                                        response.GetCardInfoEx.CardCode   = search_Request.QRY.Card;
                                        response.GetCardInfoEx.Account    = "0";
                                        response.GetCardInfoEx.Deleted    = "0";
                                        response.GetCardInfoEx.Locked     = "0";
                                        response.GetCardInfoEx.Seize      = "0";
                                        response.GetCardInfoEx.Discount   = "0";
                                        response.GetCardInfoEx.Bonus      = "0";
                                        response.GetCardInfoEx.Summa      = "0";
                                        response.GetCardInfoEx.DiscLimit  = "999999999999";
                                        response.GetCardInfoEx.Holder     = docIsReedeem.SelectSingleNode("//response//coupons//redeemable//series_info//description").InnerText;
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.Sum2       = "0";
                                        response.GetCardInfoEx.Sum3       = "0";
                                        response.GetCardInfoEx.Sum4       = "0";
                                        response.GetCardInfoEx.Sum5       = "0";
                                        response.GetCardInfoEx.Sum6       = "0";
                                        response.GetCardInfoEx.Sum7       = "0";
                                        response.GetCardInfoEx.Sum8       = Convert.ToString(sum8);
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.WhyLock    = "";
                                        response.GetCardInfoEx.ScrMessage = "** Message for SCREEN **";
                                        response.GetCardInfoEx.PrnMessage = "* Message for PRINT *";
                                        response.GetCardInfoEx.Result     = "0";
                                        response.GetCardInfoEx.OutBuf     = null;
                                    }
                                    else
                                    {
                                        response.GetCardInfoEx.CardCode   = search_Request.QRY.Card;
                                        response.GetCardInfoEx.Account    = "0";
                                        response.GetCardInfoEx.Deleted    = "0";
                                        response.GetCardInfoEx.Locked     = "0";
                                        response.GetCardInfoEx.Seize      = "0";
                                        response.GetCardInfoEx.Discount   = isDiscountCoupon;
                                        response.GetCardInfoEx.Bonus      = "0";
                                        response.GetCardInfoEx.DiscLimit  = "999999999999";
                                        response.GetCardInfoEx.Holder     = docIsReedeem.SelectSingleNode("//response//coupons//redeemable//series_info//description").InnerText;;
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.Sum2       = "0";
                                        response.GetCardInfoEx.Sum3       = "0";
                                        response.GetCardInfoEx.Sum4       = "0";
                                        response.GetCardInfoEx.Sum5       = "0";
                                        response.GetCardInfoEx.Sum6       = "0";
                                        response.GetCardInfoEx.Sum7       = "0";
                                        response.GetCardInfoEx.Sum8       = "0";
                                        response.GetCardInfoEx.DopInfo    = "";
                                        response.GetCardInfoEx.WhyLock    = "";
                                        response.GetCardInfoEx.ScrMessage = "** Message for SCREEN **";
                                        response.GetCardInfoEx.PrnMessage = "* Message for PRINT *";
                                        response.GetCardInfoEx.Result     = "0";
                                        response.GetCardInfoEx.OutBuf     = null;
                                    }
                                }
                                else
                                {
                                    response.GetCardInfoEx.CardCode   = search_Request.QRY.Card;
                                    response.GetCardInfoEx.Account    = "0";
                                    response.GetCardInfoEx.Deleted    = "0";
                                    response.GetCardInfoEx.Locked     = "1";
                                    response.GetCardInfoEx.Seize      = "0";
                                    response.GetCardInfoEx.Discount   = "0";
                                    response.GetCardInfoEx.Bonus      = "0";
                                    response.GetCardInfoEx.Summa      = "0";
                                    response.GetCardInfoEx.DiscLimit  = "999999999999";
                                    response.GetCardInfoEx.Holder     = "";
                                    response.GetCardInfoEx.DopInfo    = "";
                                    response.GetCardInfoEx.Sum2       = "0";
                                    response.GetCardInfoEx.Sum3       = "0";
                                    response.GetCardInfoEx.Sum4       = "0";
                                    response.GetCardInfoEx.Sum5       = "0";
                                    response.GetCardInfoEx.Sum6       = "0";
                                    response.GetCardInfoEx.Sum7       = "0";
                                    response.GetCardInfoEx.Sum8       = "0";
                                    response.GetCardInfoEx.DopInfo    = docIsReedeem.SelectSingleNode("//response//coupons//redeemable//item_status//message").InnerText;
                                    response.GetCardInfoEx.WhyLock    = docIsReedeem.SelectSingleNode("//response//coupons//redeemable//item_status//message").InnerText;
                                    response.GetCardInfoEx.ScrMessage = "** Message for SCREEN **";
                                    response.GetCardInfoEx.PrnMessage = "* Message for PRINT *";
                                    response.GetCardInfoEx.Result     = "0";
                                    response.GetCardInfoEx.OutBuf     = null;
                                }
                            }

                            else
                            {
                                response.GetCardInfoEx.CardCode   = search_Request.QRY.Card;
                                response.GetCardInfoEx.Account    = "0";
                                response.GetCardInfoEx.Deleted    = "0";
                                response.GetCardInfoEx.Locked     = "0";
                                response.GetCardInfoEx.Seize      = "0";
                                response.GetCardInfoEx.Discount   = "0";
                                response.GetCardInfoEx.Bonus      = "0";
                                response.GetCardInfoEx.Summa      = "0";
                                response.GetCardInfoEx.DiscLimit  = "999999999999";
                                response.GetCardInfoEx.Holder     = "";
                                response.GetCardInfoEx.DopInfo    = "";
                                response.GetCardInfoEx.Sum2       = "0";
                                response.GetCardInfoEx.Sum3       = "0";
                                response.GetCardInfoEx.Sum4       = "0";
                                response.GetCardInfoEx.Sum5       = "0";
                                response.GetCardInfoEx.Sum6       = "0";
                                response.GetCardInfoEx.Sum7       = "0";
                                response.GetCardInfoEx.Sum8       = "0";
                                response.GetCardInfoEx.DopInfo    = "Coupon Not Found";
                                response.GetCardInfoEx.WhyLock    = "";
                                response.GetCardInfoEx.ScrMessage = "** Coupon Not Found **";
                                response.GetCardInfoEx.PrnMessage = "* Coupon Not Found *";
                                response.GetCardInfoEx.Result     = "1";
                                response.GetCardInfoEx.OutBuf     = null;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Exception Occured : {0}", ex.Message);
            }
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(response.SerializerXml());
            return(doc);
            //return response;
        }