diff --git a/0_Framework/Application/AuthHelper.cs b/0_Framework/Application/AuthHelper.cs index 6a2f6e81..c30d148a 100644 --- a/0_Framework/Application/AuthHelper.cs +++ b/0_Framework/Application/AuthHelper.cs @@ -242,5 +242,26 @@ public class AuthHelper : IAuthHelper _contextAccessor.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); } - + + #region Pooya + + public (long Id, UserType userType) GetUserTypeWithId() + { + if (!IsAuthenticated()) + return (0, UserType.Anonymous); + var claims = _contextAccessor.HttpContext.User.Claims.ToList(); + + var subAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId")?.Value ?? "0"); + if (subAccountId > 0) + return (subAccountId, UserType.SubAccount); + + var id = long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value); + if (claims.FirstOrDefault(x => x.Type == "AdminAreaPermission")?.Value == "true") + return (id, UserType.Admin); + + return (id, UserType.Client); + } + #endregion + + } \ No newline at end of file diff --git a/0_Framework/Application/IAuthHelper.cs b/0_Framework/Application/IAuthHelper.cs index da258892..b7271c4d 100644 --- a/0_Framework/Application/IAuthHelper.cs +++ b/0_Framework/Application/IAuthHelper.cs @@ -23,4 +23,5 @@ public interface IAuthHelper long CurrentSubAccountId(); string GetWorkshopSlug(); string GetWorkshopName(); + (long Id, UserType userType) GetUserTypeWithId(); } \ No newline at end of file diff --git a/0_Framework/Application/UserType.cs b/0_Framework/Application/UserType.cs new file mode 100644 index 00000000..7ca704bb --- /dev/null +++ b/0_Framework/Application/UserType.cs @@ -0,0 +1,14 @@ + +namespace _0_Framework.Application +{ + public enum UserType + { + + Anonymous, + Client, + SubAccount, + Camera, + Admin + } + +} diff --git a/Company.Domain/EmployeeAgg/Employee.cs b/Company.Domain/EmployeeAgg/Employee.cs index 4caaffc5..cd3bfc05 100644 --- a/Company.Domain/EmployeeAgg/Employee.cs +++ b/Company.Domain/EmployeeAgg/Employee.cs @@ -6,6 +6,8 @@ using Company.Domain.ContractAgg; using Company.Domain.CustomizeCheckoutAgg; using Company.Domain.EmployeeBankInformationAgg; using Company.Domain.EmployeeChildrenAgg; +using Company.Domain.EmployeeDocumentsAdminSelectionAgg; +using Company.Domain.EmployeeDocumentsAgg; using Company.Domain.EmployeeInsuranceRecordAgg; using Company.Domain.InsuranceEmployeeInfoAgg; using Company.Domain.LeftWorkAgg; @@ -131,6 +133,8 @@ public class Employee : EntityBase public string FullName => $"{FName} {LName}"; #region Pooya + public List EmployeeDocuments { get; set; } + public EmployeeDocumentsAdminSelection EmployeeDocumentsAdminSelection { get; set; } public List EmployeeBankInformationList { get; set; } #endregion diff --git a/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItem.cs b/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItem.cs new file mode 100644 index 00000000..e79b64ed --- /dev/null +++ b/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItem.cs @@ -0,0 +1,106 @@ +using _0_Framework.Domain; +using Company.Domain.EmployeeDocumentsAdminSelectionAgg; +using Company.Domain.EmployeeDocumentsAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using System; +using System.Collections.Generic; +using _0_Framework.Application; +using Microsoft.AspNetCore.JsonPatch.Operations; + +namespace Company.Domain.EmployeeDocumentItemAgg +{ + public class EmployeeDocumentItem : EntityBase + { + + public long WorkshopId { get; private set; } + public long EmployeeId { get; private set; } + + public long UploaderId { get; private set; } + public UserType UploaderType { get; private set; } + + + public long ReviewedById { get; private set; } + public string RejectionReason { get; private set; } + public DocumentStatus DocumentStatus { get; private set; } + public long MediaId { get; private set; } + + public DateTime? ConfirmationDateTime { get; private set; } + public DocumentItemLabel DocumentLabel { get; private set; } + + public long EmployeeDocumentId { get; private set; } + public virtual EmployeeDocuments EmployeeDocuments { get; private set; } + + public long? EmployeeDocumentsAdminViewId { get; private set; } + public EmployeeDocumentsAdminSelection EmployeeDocumentsAdminSelection { get; private set; } + + public List ItemLogs { get; private set; } + + + public EmployeeDocumentItem(long workshopId,long employeeId, long mediaId, long employeeDocumentId, DocumentItemLabel documentLabel, long uploaderId, + UserType uploaderType, DocumentStatus documentStatus = DocumentStatus.Unsubmitted) + { + MediaId = mediaId; + UploaderId = uploaderId; + UploaderType = uploaderType; + EmployeeId = employeeId; + WorkshopId = workshopId; + DocumentStatus = documentStatus; + if (documentStatus == DocumentStatus.Confirmed) + ConfirmationDateTime = DateTime.Now; + DocumentLabel = documentLabel; + EmployeeDocumentId = employeeDocumentId; + ItemLogs = + [ + new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.CreatedNewItem, uploaderId, uploaderType) + ]; + } + + + public void Confirm(long operatorId, UserType userType) + { + ReviewedById = operatorId; + DocumentStatus = DocumentStatus.Confirmed; + ConfirmationDateTime = DateTime.Now; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.ConfirmedItem, operatorId, userType)); + } + + public void Reject(long operatorId, string rejectionReason, UserType userType) + { + RejectionReason = rejectionReason; + DocumentStatus = DocumentStatus.Rejected; + EmployeeDocuments.UpdateHasRejectedItems(); + ReviewedById = operatorId; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.RejectedItem, operatorId, userType, rejectionReason)); + } + + public void Delete(long operatorId, UserType operatorType) + { + DocumentStatus = DocumentStatus.Deleted; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.DeletedItem, operatorId, operatorType)); + } + + public void AdminSelect(long adminViewId) + { + EmployeeDocumentsAdminViewId = adminViewId; + } + + public void AdminDeselect() + { + EmployeeDocumentsAdminViewId = 0; + } + public void SubmitByClient(long operatorId,UserType operatorType) + { + DocumentStatus = DocumentStatus.SubmittedByClient; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType)); + EmployeeDocuments.UpdateHasRejectedItems(); + } + + public void SubmitByAdmin(long operatorId, UserType operatorType) + { + DocumentStatus = DocumentStatus.SubmittedByAdmin; + ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType)); + EmployeeDocuments.UpdateHasRejectedItems(); + } + } + +} diff --git a/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItemLog.cs b/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItemLog.cs new file mode 100644 index 00000000..6a45c537 --- /dev/null +++ b/Company.Domain/EmployeeDocumentItemAgg/EmployeeDocumentItemLog.cs @@ -0,0 +1,44 @@ +using _0_Framework.Application; +using _0_Framework.Domain; +using CompanyManagment.App.Contracts.EmployeeDocuments; + +namespace Company.Domain.EmployeeDocumentItemAgg +{ + public class EmployeeDocumentItemLog : EntityBase + { + public long EmployeeDocumentItemId { get;private set; } + public EmployeeDocumentItem EmployeeDocumentItem { get; private set; } + + public EmployeeDocumentItemOperation OperationType {get; private set; } + + public long OperatorId { get;private set; } + public UserType OperatorType { get; private set; } + + public string AdminMessage { get; private set; } + + internal EmployeeDocumentItemLog(EmployeeDocumentItemOperation operationType, long operatorId, UserType operatorType, string adminMessage="") + { + OperationType = operationType; + OperatorId = operatorId; + OperatorType = operatorType; + AdminMessage = adminMessage; + } + + + private EmployeeDocumentItemLog(string adminMessage) + { + AdminMessage = adminMessage; + } + + + } + + public enum EmployeeDocumentItemOperation + { + CreatedNewItem, + SubmittedItems, + DeletedItem, + ConfirmedItem, + RejectedItem + } +} diff --git a/Company.Domain/EmployeeDocumentItemAgg/IEmployeeDocumentItemRepository.cs b/Company.Domain/EmployeeDocumentItemAgg/IEmployeeDocumentItemRepository.cs new file mode 100644 index 00000000..c9a013d0 --- /dev/null +++ b/Company.Domain/EmployeeDocumentItemAgg/IEmployeeDocumentItemRepository.cs @@ -0,0 +1,16 @@ + +using System.Collections.Generic; +using _0_Framework.Domain; + +namespace Company.Domain.EmployeeDocumentItemAgg +{ + public interface IEmployeeDocumentItemRepository : IRepository + { + EmployeeDocumentItem GetWithEmployeeDocumentsByItemId(long id); + List GetUnsubmittedByEmployeeDocumentsId(long employeeDocumentsId); + void RemoveRange(IEnumerable items); + void Remove(EmployeeDocumentItem item); + + void AddRange(IEnumerable command); + } +} diff --git a/Company.Domain/EmployeeDocumentsAdminSelectionAgg/EmployeeDocumentsAdminSelection.cs b/Company.Domain/EmployeeDocumentsAdminSelectionAgg/EmployeeDocumentsAdminSelection.cs new file mode 100644 index 00000000..6f853a35 --- /dev/null +++ b/Company.Domain/EmployeeDocumentsAdminSelectionAgg/EmployeeDocumentsAdminSelection.cs @@ -0,0 +1,19 @@ +using _0_Framework.Domain; +using Company.Domain.EmployeeAgg; +using Company.Domain.EmployeeDocumentItemAgg; +using System.Collections.Generic; + +namespace Company.Domain.EmployeeDocumentsAdminSelectionAgg +{ + public class EmployeeDocumentsAdminSelection : EntityBase + { + public EmployeeDocumentsAdminSelection(long employeeId) + { + EmployeeId = employeeId; + } + public long EmployeeId { get; private set; } + public Employee Employee { get; private set; } + public List SelectedEmployeeDocumentItems { get; private set; } + + } +} diff --git a/Company.Domain/EmployeeDocumentsAdminSelectionAgg/IEmployeeDocumentsAdminSelectionRepository.cs b/Company.Domain/EmployeeDocumentsAdminSelectionAgg/IEmployeeDocumentsAdminSelectionRepository.cs new file mode 100644 index 00000000..8a0ef80e --- /dev/null +++ b/Company.Domain/EmployeeDocumentsAdminSelectionAgg/IEmployeeDocumentsAdminSelectionRepository.cs @@ -0,0 +1,15 @@ + +using _0_Framework.Domain; +using CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection; +using System.Collections.Generic; + +namespace Company.Domain.EmployeeDocumentsAdminSelectionAgg +{ + public interface IEmployeeDocumentsAdminSelectionRepository : IRepository + { + //List Search(SearchEmployeeDocumentsAdminSelection command); + + //EmployeeDocumentsAdminSelection GetByEmployeeIdWithItems(long employeeId); + + } +} diff --git a/Company.Domain/EmployeeDocumentsAgg/EmployeeDocumentRequiredItems.cs b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocumentRequiredItems.cs new file mode 100644 index 00000000..d263c3e3 --- /dev/null +++ b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocumentRequiredItems.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using CompanyManagment.App.Contracts.EmployeeDocuments; + +namespace Company.Domain.EmployeeDocumentsAgg +{ + public static class EmployeeDocumentRequiredItems + { + public static List GetByGender(string gender) + { + List requiredDocuments = + [ + DocumentItemLabel.IdCardPage1, DocumentItemLabel.IdCardPage2, DocumentItemLabel.IdCardPage3, DocumentItemLabel.NationalCardRear, + DocumentItemLabel.NationalCardFront,DocumentItemLabel.EmployeePicture + ]; + + if (gender == "مرد") + requiredDocuments.Add(DocumentItemLabel.MilitaryServiceCard); + + return requiredDocuments; + } + } +} diff --git a/Company.Domain/EmployeeDocumentsAgg/EmployeeDocuments.cs b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocuments.cs new file mode 100644 index 00000000..65904a35 --- /dev/null +++ b/Company.Domain/EmployeeDocumentsAgg/EmployeeDocuments.cs @@ -0,0 +1,115 @@ +using _0_Framework.Domain; +using Company.Domain.EmployeeAgg; +using Company.Domain.EmployeeDocumentItemAgg; +using Company.Domain.WorkshopAgg; +using System.Collections.Generic; +using System.Linq; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using Microsoft.AspNetCore.Antiforgery; + +namespace Company.Domain.EmployeeDocumentsAgg +{ + public class EmployeeDocuments : EntityBase + { + + public long EmployeeId { get; private set; } + public Employee Employee { get; private set; } + + + public long WorkshopId { get; private set; } + public Workshop Workshop { get; private set; } + + + public string Gender { get; private set; } + + + public bool IsConfirmed { get; private set; } + public bool RequiredItemsSubmittedByClient { get; private set; } + public bool IsSentToChecker { get; private set; } + public bool HasRejectedItems { get; set; } + + + //History of rejected and confirmed documents, lazy loading enabled + public virtual List EmployeeDocumentItemCollection { get; } = []; + + + public EmployeeDocuments(long employeeId, long workshopId, string gender) + { + WorkshopId = workshopId; + EmployeeId = employeeId; + Gender = gender; + } + + private EmployeeDocuments() + { + + } + + + + public bool UpdateIsSentToChecker() + { + + var requiredItems = EmployeeDocumentRequiredItems.GetByGender(Gender); + + var currentItems = EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()); + var currentItemsFiltered = currentItems.Where(x => x.DocumentStatus == DocumentStatus.Confirmed || x.DocumentStatus == DocumentStatus.SubmittedByAdmin) + .Select(x => new{x.DocumentStatus,x.DocumentLabel}).ToList(); + + // ReSharper disable once SimplifyLinqExpressionUseAll + if (!currentItemsFiltered.Any(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) + IsSentToChecker = false; + + else + IsSentToChecker = requiredItems.All(x => currentItemsFiltered.Any(y=>y.DocumentLabel==x)); + + + return IsSentToChecker; + + } + + + public bool UpdateIsConfirmed() + { + var requiredItems = EmployeeDocumentRequiredItems.GetByGender(Gender); + + var currentItems = EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()); + var currentConfirmedItems=currentItems.Where(x => x.DocumentStatus == DocumentStatus.Confirmed).Select(x => x.DocumentLabel).ToList(); + + + IsConfirmed = requiredItems.All(x => currentConfirmedItems.Contains(x)); + + + return IsConfirmed; + } + + public void UpdateRequiredItemsSubmittedByClient() + { + + var requiredItems = EmployeeDocumentRequiredItems.GetByGender(Gender); + + var currentItems = EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()); + + if (currentItems.Where(x => requiredItems.Contains(x.DocumentLabel)) + .Any(x => x.DocumentStatus == DocumentStatus.SubmittedByClient)) + RequiredItemsSubmittedByClient = true; + else + RequiredItemsSubmittedByClient = false; + + } + + public void UpdateHasRejectedItems() + { + var currentItems = EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()); + if (currentItems.Any(y => y.DocumentStatus == DocumentStatus.Rejected)) + HasRejectedItems = true; + else + HasRejectedItems= false; + } + + } +} diff --git a/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs b/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs new file mode 100644 index 00000000..e77b749c --- /dev/null +++ b/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using _0_Framework.Domain; +using Company.Domain.EmployeeDocumentItemAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.Workshop; + +namespace Company.Domain.EmployeeDocumentsAgg +{ + public interface IEmployeeDocumentsRepository : IRepository + { + EmployeeDocuments GetByEmployeeIdWorkshopId(long employeeId, long workshopId); + EmployeeDocumentsViewModel GetViewModelByEmployeeIdWorkshopId(long employeeId, long workshopId); + List SearchForClient(SearchEmployeeDocuments cmd); + + void AddRange(IEnumerable entities); + EmployeeDocuments GetByIdWithItems(long employeeDocumentsId); + EmployeeDocuments GetByEmployeeIdWorkshopIdWithItems(long employeeId, long workshopId); + List GetEmployeeIds(long workshopId); + List GetWorkshopsWithUploadedDocuments(); + List GetByWorkshopIdWithItemsForChecker(long workshopId, bool onlyConfirmed); + List GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow(); + List SearchForAdmin(SearchEmployeeDocuments cmd); + + + List GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(List workshops); + List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId); + int GetCheckerWorkFlowCount(); + //int GetAdminWorkFlowCountForNewEmployees(List workshopIds); + int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds); + List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId); + } +} diff --git a/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs b/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs index 3a8d5402..f3fdf81a 100644 --- a/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs +++ b/Company.Domain/LeftWorkAgg/ILeftWorkRepository.cs @@ -25,9 +25,10 @@ public interface ILeftWorkRepository : IRepository /// تاریخی که بین شروع کار و ترک کار باشد /// یک کلاس از جنس اطلاعات ترک کار LeftWorkViewModel GetByDateAndWorkshopIdAndEmployeeId(long workshopId, long employeeId, DateTime dateTime); + List GetEmployeeIdsByWorkshopIdActiveInDates(long workshopId, DateTime start, DateTime end); #endregion - List GetLeftPersonelByWorkshopId(List workshopIds); + List GetLeftPersonelByWorkshopId(List workshopIds); OperationResult RemoveAllLeftWork(long workshopId, long employeeId); List SearchLeftWork(LeftWorkSearchModel searchModel); OperationResult CreateLeftWork(InformationLeftwork informationLeftwork); diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/AddEmployeeDocumentItem.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/AddEmployeeDocumentItem.cs new file mode 100644 index 00000000..8f705f69 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/AddEmployeeDocumentItem.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Http; + +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + + /// + /// برای آپلود عکس مدارک + /// + public class AddEmployeeDocumentItem + { + public long EmployeeId { get; set; } + public long WorkshopId { get; set; } + public IFormFile PictureFile { get; set; } + public DocumentItemLabel Label { get; set; } + } + +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/CheckerDocumentItemOperation.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/CheckerDocumentItemOperation.cs new file mode 100644 index 00000000..aae5c301 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/CheckerDocumentItemOperation.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + /// + /// برای تایید مدارک در بخش ادمین + /// + public class CheckerDocumentItemOperation + { + public long EmployeeDocumentItemId { get; set; } + public bool IsConfirmed { get; set; } + public string Message { get; set; } = string.Empty; + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/CheckerDocumentsOperation.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/CheckerDocumentsOperation.cs new file mode 100644 index 00000000..bc633e8f --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/CheckerDocumentsOperation.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using CompanyManagment.App.Contracts.EmployeeDocuments; + +namespace CompanyManagment.Application; + +public class CheckerDocumentsOperation +{ + public long WorkshopId { get; set; } + public long EmployeeId { get; set; } + public List Operations { get; set; } = []; + + +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/CreateEmployeeDocuments.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/CreateEmployeeDocuments.cs new file mode 100644 index 00000000..0bc0eef6 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/CreateEmployeeDocuments.cs @@ -0,0 +1,14 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + + /// + /// برای ایجاد مجموعه برای مدارک پرسنل + /// + public class CreateEmployeeDocuments + { + public long EmployeeId { get; set; } + public long WorkshopId { get; set; } + } + + +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/DocumentItemLabel.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/DocumentItemLabel.cs new file mode 100644 index 00000000..94731315 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/DocumentItemLabel.cs @@ -0,0 +1,18 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments; + + +/// +/// برچسب مدارک +/// +public enum DocumentItemLabel +{ + IdCardPage1, + IdCardPage2, + IdCardPage3, + IdCardPage4, + NationalCardFront, + NationalCardRear, + EducationalDegree, + MilitaryServiceCard, + EmployeePicture +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/DocumentStatus.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/DocumentStatus.cs new file mode 100644 index 00000000..d326b5a1 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/DocumentStatus.cs @@ -0,0 +1,38 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + /// + /// وضعیت مدارک + /// + public enum DocumentStatus + { + /// + /// ثبت نشده + /// + Unsubmitted, + + /// + /// ثبت شده توسط کلاینت + /// + SubmittedByClient, + + /// + /// ثبت شده توسط ادمین + /// + SubmittedByAdmin, + + /// + /// تایید شده + /// + Confirmed, + + /// + /// رد شده + /// + Rejected, + + /// + /// حذف شده + /// + Deleted + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentHistoryViewModel.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentHistoryViewModel.cs new file mode 100644 index 00000000..50b4ea30 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentHistoryViewModel.cs @@ -0,0 +1,11 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments; + +public class EmployeeDocumentHistoryViewModel +{ + public long Id { get; set; } + public long EmployeeId { get; set; } + public long EmployeeDocumentsId { get; set; } + public string PicturePath { get; set; } + public DocumentItemLabel Label { get; set; } + public string EmployeeFullName { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentItemViewModel.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentItemViewModel.cs new file mode 100644 index 00000000..efadfb0a --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentItemViewModel.cs @@ -0,0 +1,20 @@ +using System; +using _0_Framework.Application; + +namespace CompanyManagment.App.Contracts.EmployeeDocuments; + +public class EmployeeDocumentItemViewModel +{ + public long Id { get; set; } + public long EmployeeDocumentsId { get; set; } + public long MediaId { get; set; } + + public string Gender { get; set; } + public string PicturePath { get; set; } + public DocumentStatus Status { get; set; } + public string StatusString { get; set; } + public string RejectionMessage { get; set; } + public DocumentItemLabel DocumentItemLabel { get; set; } + public DateTime CreationDateTime { get; set; } + public UserType UploaderType { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentSearchMode.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentSearchMode.cs new file mode 100644 index 00000000..82c13a1d --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentSearchMode.cs @@ -0,0 +1,8 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments; + +public enum EmployeeDocumentSearchMode +{ + ActiveEmployees, + DeactiveEmployees, + All +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentsAdminViewModel.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentsAdminViewModel.cs new file mode 100644 index 00000000..d825f59e --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentsAdminViewModel.cs @@ -0,0 +1,35 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + /// + /// برای بخش ادمین، لیست افرادی که در یک کارگاه اقدام به آپلود مدارک کرده اند + /// + public class EmployeeDocumentsAdminViewModel + { + /// + /// EmployeeDocuments Id + /// + public long Id { get; set; } + public long EmployeeId { get; set; } + public string EmployeeName { get; set; } + /// + /// تعداد عکس های آپلود شده + /// + public int DocumentItemsCount { get; set; } + + /// + /// تعداد عکس های تایید شده + /// + public int ConfirmedDocumentsCount { get; set; } + + + /// + /// تعداد عکس های رد شده + /// + public int RejectedDocumentsCount { get; set; } + + /// + /// آیا مدارک الزامی بارگذاری شده اند + /// + public bool HasRequiredDocuments { get; set; } + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentsViewModel.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentsViewModel.cs new file mode 100644 index 00000000..fb5979e3 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/EmployeeDocumentsViewModel.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + public class EmployeeDocumentsViewModel + { + public long Id { get; set; } + public long EmployeeId { get; set; } + public long WorkshopId { get; set; } + + public string EmployeeFullName { get; set; } + public string Gender { get; set; } + + public string IsBlack { get; set; } + + + //عکس پرسنل + public EmployeeDocumentItemViewModel EmployeePicture { get; set; } + + //شناسنامه + public EmployeeDocumentItemViewModel IdCardPage1 { get; set; } + public EmployeeDocumentItemViewModel IdCardPage2 { get; set; } + public EmployeeDocumentItemViewModel IdCardPage3{ get; set; } + public EmployeeDocumentItemViewModel IdCardPage4 { get; set; } + + //کارت ملی + public EmployeeDocumentItemViewModel NationalCardFront { get; set; } + + public EmployeeDocumentItemViewModel NationalCardRear { get; set; } + //مدرک تحصیلی + public EmployeeDocumentItemViewModel EducationalDegree { get; set; } + + //کارت پایان خدمت + public EmployeeDocumentItemViewModel MilitaryServiceCard { get; set; } + public string NationalCode { get; set; } + public string EmployeeFName { get; set; } + public string EmployeeLName { get; set; } + public string Nationality { get; set; } + public string IdNumber { get; set; } + public string FatherName { get; set; } + public string DateOfBirth { get; set; } + public string MaritalStatus { get; set; } + public string MilitaryServiceStatus { get; set; } + public int SubmittedItemsCount { get; set; } + public int RejectedItemsCount { get; set; } + public int ConfirmedItemsCount { get; set; } + public string WorkshopName { get; set; } + public string EmployerFullName { get; set; } + public List RequiredDocuments { get; set; } + public List RequiredDocumentsUploaded { get; set; } + public bool IsSentToChecker { get; set; } + public long PersonnelCode { get; set; } + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs new file mode 100644 index 00000000..2b14209e --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs @@ -0,0 +1,58 @@ +using _0_Framework.Application; +using CompanyManagment.App.Contracts.Workshop; +using System.Collections.Generic; +using System.Threading.Tasks; +using CompanyManagment.Application; + +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + public interface IEmployeeDocumentsApplication + { + OperationResult AddEmployeeDocumentItemForClient(AddEmployeeDocumentItem command); + + OperationResult AddEmployeeDocumentItemForAdmin(AddEmployeeDocumentItem command); + + OperationResult AddRangeEmployeeDocumentItems(long workshopId, long employeeId, + List command); + + /// + /// unsubmitted دریافت جزییات مدارک پرسنل به همراه مدارک + /// + EmployeeDocumentsViewModel GetDetailsForClient(long employeeId, long workshopId); + + /// + /// unsubmitted دریافت جزییات مدارک پرسنل بدون مدارک + /// + EmployeeDocumentsViewModel GetDetailsForAdmin(long employeeId, long workshopId); + + List SearchForClient(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode); + + OperationResult RemoveClientDocumentItemsByAdmin(long workshopId, long employeeId, List label); + + OperationResult SubmitDocumentItemsByClient(SubmitEmployeeDocuments cmd); + OperationResult SubmitDocumentItemsByEmployeeIdWorkshopId(long employeeId, long workshopId); + List SearchForAdmin(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode); + EmployeeDocumentsViewModel GetDetailsForChecker(long employeeId, long workshopId); + OperationResult DeleteUnsubmittedDocument(long documentItemId); + OperationResult SubmitCheckerOperation(CheckerDocumentsOperation cmd); + OperationResult DeleteEmployeeMultipleUnsubmittedDocumentsByLabel(long workshopId, long employeeId, DocumentItemLabel label); + OperationResult DeleteUnsubmittedItems(long workshopId,long employeeId); + + OperationResult RemoveClientDocumentItemsByAdminTemp(long workshopId, long employeeId, DocumentItemLabel labels); + List GetWorkshopsWithUploadedDocumentsForChecker(); + List GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow(); + List GetByWorkshopIdWithItemsForChecker(long workshopId, bool confirmedOnly); + OperationResult SubmitDocumentItemsByAdmin(SubmitEmployeeDocuments cmd); + OperationResult SubmitDocumentItemsByAdminInWorkFlow(SubmitEmployeeDocuments cmd); + + List GetWorkshopDocumentsAwaitingUploadForAdminWorkFlow(List workshops); + List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId); + + List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId); + int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds); + //int GetAdminWorkFlowCountForNewEmployees(List workshopIds); + OperationResult RemoveByAdmin(long documentItemId); + int GetCheckerWorkFlowCount(); + } + +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/OperatorType.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/OperatorType.cs new file mode 100644 index 00000000..b9be9940 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/OperatorType.cs @@ -0,0 +1,8 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + public enum OperatorType + { + Client, + Admin + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/SearchEmployeeDocuments.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/SearchEmployeeDocuments.cs new file mode 100644 index 00000000..0d713717 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/SearchEmployeeDocuments.cs @@ -0,0 +1,9 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocuments; + +public class SearchEmployeeDocuments +{ + public string EmployeeName { get; set; } + public long WorkshopId { get; set; } + public int PageIndex { get; set; } + public EmployeeDocumentSearchMode Mode { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/SubmitEmployeeDocuments.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/SubmitEmployeeDocuments.cs new file mode 100644 index 00000000..58e53980 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/SubmitEmployeeDocuments.cs @@ -0,0 +1,8 @@ + +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + public class SubmitEmployeeDocuments + { + public long EmployeeDocumentsId { get; set; } + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocuments/WorkshopWithEmployeeDocumentsViewModel.cs b/CompanyManagment.App.Contracts/EmployeeDocuments/WorkshopWithEmployeeDocumentsViewModel.cs new file mode 100644 index 00000000..bfc63e07 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocuments/WorkshopWithEmployeeDocumentsViewModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.EmployeeDocuments +{ + public class WorkshopWithEmployeeDocumentsViewModel + { + public long WorkshopId { get; set; } + public string WorkshopFullName { get; set; } + public int SubmittedItemsCount { get; set; } + public DateTime LastUploadDateTime { get; set; } + public string LastUploadDateTimeFa { get; set; } + public string EmployerName { get; set; } + public List SubmittedItems { get; set; } + public int EmployeesWithoutDocumentCount { get; set; } + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/EmployeeDocumentsAdminSelectionApplication.cs b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/EmployeeDocumentsAdminSelectionApplication.cs new file mode 100644 index 00000000..ea1f68db --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/EmployeeDocumentsAdminSelectionApplication.cs @@ -0,0 +1,11 @@ + +using _0_Framework.Application; + +namespace CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection +{ + public interface IEmployeeDocumentsAdminSelectionApplication + { + //OperationResult SelectDocumentItem(SelectEmployeeDocumentItem command); + //OperationResult Create(long employeeId); + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/EmployeeDocumentsAdminSelectionViewModel.cs b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/EmployeeDocumentsAdminSelectionViewModel.cs new file mode 100644 index 00000000..412c8316 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/EmployeeDocumentsAdminSelectionViewModel.cs @@ -0,0 +1,36 @@ + +namespace CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection +{ + public class EmployeeDocumentsAdminSelectionViewModel + { + public long Id { get; set; } + public long EmployeeId { get; set; } + + public string EmployeeFullName { get; set; } + public string Gender { get; set; } + + //عکس پرسنل + public string EmployeePicturePath { get; set; } + + //شناسنامه + public string IdCardPage1PicturePath { get; set; } + + public string IdCardPage2PicturePath { get; set; } + + public string IdCardPage3PicturePath { get; set; } + + + public string IdCardPage4PicturePath { get; set; } + + //کارت ملی + public string NationalCardFrontPicturePath { get; set; } + + public string NationalCardRearPicturePath { get; set; } + + //مدرک تحصیلی + public string EducationalDegreePicturePath { get; set; } + + //کارت پایان خدمت + public string MilitaryServiceCardPicturePath { get; set; } + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/SearchEmployeeDocumentsAdminSelection.cs b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/SearchEmployeeDocumentsAdminSelection.cs new file mode 100644 index 00000000..3d37b305 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/SearchEmployeeDocumentsAdminSelection.cs @@ -0,0 +1,7 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection +{ + public class SearchEmployeeDocumentsAdminSelection + { + public string EmployeeName { get; set; } + } +} diff --git a/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/SelectEmployeeDocumentItem.cs b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/SelectEmployeeDocumentItem.cs new file mode 100644 index 00000000..3bf7dfb0 --- /dev/null +++ b/CompanyManagment.App.Contracts/EmployeeDocumentsAdminSelection/SelectEmployeeDocumentItem.cs @@ -0,0 +1,7 @@ +namespace CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection; + +public class SelectEmployeeDocumentItem +{ + public long EmployeeId { get; set; } + public long EmployeeDocumentItemId { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.Application/EmployeeDocumentsAdminSelectionApplication.cs b/CompanyManagment.Application/EmployeeDocumentsAdminSelectionApplication.cs new file mode 100644 index 00000000..6d3c37a6 --- /dev/null +++ b/CompanyManagment.Application/EmployeeDocumentsAdminSelectionApplication.cs @@ -0,0 +1,66 @@ +using System.Collections.Generic; +using System.Linq; +using _0_Framework.Application; +using Company.Domain.EmployeeAgg; +using Company.Domain.EmployeeDocumentItemAgg; +using Company.Domain.EmployeeDocumentsAdminSelectionAgg; +using CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection; + +namespace CompanyManagment.Application +{ + public class EmployeeDocumentsAdminSelectionApplication :IEmployeeDocumentsAdminSelectionApplication + { + private readonly IEmployeeDocumentsAdminSelectionRepository _employeeDocumentsAdminViewRepository; + private readonly IEmployeeDocumentItemRepository _employeeDocumentItemRepository; + private readonly IEmployeeRepository _employeeRepository; + public EmployeeDocumentsAdminSelectionApplication(IEmployeeDocumentsAdminSelectionRepository employeeDocumentsAdminViewRepository, IEmployeeDocumentItemRepository employeeDocumentItemRepository, IEmployeeRepository employeeRepository) + { + _employeeDocumentsAdminViewRepository = employeeDocumentsAdminViewRepository; + _employeeDocumentItemRepository = employeeDocumentItemRepository; + _employeeRepository = employeeRepository; + } + + //public OperationResult SelectDocumentItem(SelectEmployeeDocumentItem command) + //{ + + // OperationResult op= new(); + // EmployeeDocumentsAdminSelection adminDocuments = _employeeDocumentsAdminViewRepository.GetByEmployeeIdWithItems(command.EmployeeId); + + // if (adminDocuments == null) + // return op.Failed("رکورد مورد نظر یافت نشد"); + + // var documentItem = _employeeDocumentItemRepository.Get(command.EmployeeDocumentItemId); + // if (documentItem == null) + // return op.Failed("رکورد مورد نظر یافت نشد"); + + + // var existingItem=adminDocuments.SelectedEmployeeDocumentItems.FirstOrDefault(x => x.DocumentLabel == documentItem.DocumentLabel); + // if(existingItem != null) + // existingItem.AdminDeselect(); + // documentItem.AdminSelect(adminDocuments.id); + // _employeeDocumentsAdminViewRepository.SaveChanges(); + + // return op.Succcedded(); + //} + + //public List Search(SearchEmployeeDocumentsAdminSelection command) + //{ + // return _employeeDocumentsAdminViewRepository.Search(command); + //} + + //public OperationResult Create(long employeeId) + //{ + // OperationResult op = new(); + // if(!_employeeRepository.Exists(x=>x.id==employeeId)) + // return op.Failed("رکورد مورد نظر یافت نشد"); + + // if (_employeeDocumentsAdminViewRepository.Exists(x => x.EmployeeId == employeeId)) + // return op.Failed("رکورد تکراری است"); + // var entity = new EmployeeDocumentsAdminSelection(employeeId); + // _employeeDocumentsAdminViewRepository.Create(entity); + // _employeeDocumentsAdminViewRepository.SaveChanges(); + + // return op.Succcedded(entity.id); + //} + } +} diff --git a/CompanyManagment.Application/EmployeeDocumentsApplication.cs b/CompanyManagment.Application/EmployeeDocumentsApplication.cs new file mode 100644 index 00000000..28ca3fae --- /dev/null +++ b/CompanyManagment.Application/EmployeeDocumentsApplication.cs @@ -0,0 +1,1777 @@ +using _0_Framework.Application; +using AccountManagement.Application.Contracts.Media; +using AccountManagement.Domain.MediaAgg; +using Company.Domain.EmployeeAgg; +using Company.Domain.EmployeeDocumentItemAgg; +using Company.Domain.EmployeeDocumentsAgg; +using Company.Domain.LeftWorkAgg; +using Company.Domain.WorkshopAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.Workshop; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using System.Transactions; +using Microsoft.AspNetCore.Mvc; +using CompanyManagment.App.Contracts.SmsResult; +using Microsoft.Identity.Client; +using static Microsoft.QualityTools.Testing.Fakes.FakesDelegates; + +namespace CompanyManagment.Application +{ + public class EmployeeDocumentsApplication : IEmployeeDocumentsApplication + { + private readonly IEmployeeDocumentsRepository _employeeDocumentsRepository; + private readonly IEmployeeRepository _employeeRepository; + private readonly IWorkshopRepository _workshopRepository; + private readonly IWebHostEnvironment _webHostEnvironment; + private readonly IMediaRepository _mediaRepository; + private readonly ILeftWorkRepository _leftWorkRepository; + private readonly IEmployeeDocumentItemRepository _employeeDocumentItemRepository; + private readonly IAuthHelper _authHelper; + + + private readonly string _basePath; + + public EmployeeDocumentsApplication(IEmployeeDocumentsRepository employeeDocumentsRepository, + IEmployeeRepository employeeRepository, + IWorkshopRepository workshopRepository, IWebHostEnvironment webHostEnvironment, + IMediaRepository mediaRepository, ILeftWorkRepository leftWorkRepository, + IEmployeeDocumentItemRepository employeeDocumentItemRepository, IAuthHelper authHelper) + { + _employeeDocumentsRepository = employeeDocumentsRepository; + _employeeRepository = employeeRepository; + _workshopRepository = workshopRepository; + _webHostEnvironment = webHostEnvironment; + _mediaRepository = mediaRepository; + _leftWorkRepository = leftWorkRepository; + _employeeDocumentItemRepository = employeeDocumentItemRepository; + _authHelper = authHelper; + _basePath = Path.Combine(_webHostEnvironment.ContentRootPath, "Storage", "EmployeeDocuments"); + } + + /// + /// مدارک تا قبل از ثبت کردن می توانند توسط کاربر حذف شوند + /// + public OperationResult DeleteUnsubmittedDocument(long documentItemId) + { + OperationResult op = new(); + var entity = _employeeDocumentItemRepository.Get(documentItemId); + + if (entity == null) + return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + if (entity.DocumentStatus != DocumentStatus.Unsubmitted) + return op.Failed("امکان حذف رکورد های ثبت شده وجود ندارد"); + + DeleteDocumentItemFile(entity.MediaId); + _employeeDocumentItemRepository.Remove(entity); + _employeeDocumentItemRepository.SaveChanges(); + return op.Succcedded(); + } + + + /// + /// برای افزودن یکباره مدارک در افزودن پرسنل توسط کلاینت + /// + public OperationResult AddRangeEmployeeDocumentItemsTemp(long workshopId, long employeeId, List command) + { + OperationResult op = new(); + + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + + return op.Failed("پرسنل یافت نشد"); + + + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return op.Failed("کارگاه وجود ندارد"); + + + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + + + using var scope = new TransactionScope(); + + + //if record doesn't exist but employee exists and also the workshop, create a new record + if (entity == null) + { + var opCreate = Create(new CreateEmployeeDocuments() + { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return opCreate; + entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopId(employeeId, workshopId); + } + + List newEntities = new(); + foreach (var item in command) + { + DeleteMultipleUnsubmittedDocumentsByLabel(entity, item.Label, uploaderType); + + var mediaOpResult = UploadDocumentItemFile(item.PictureFile, item.Label.ToString(), + $"temp/{workshopId}/{employeeId}"); + + + if (mediaOpResult.IsSuccedded == false) + return mediaOpResult; + + + //if the mediaId is already in use in our table return failed + if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) + return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaOpResult.SendId, entity.id, item.Label, uploaderId, uploaderType); + newEntities.Add(newEntity); + } + + var currentItems = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).Where(x=>x.DocumentStatus == DocumentStatus.Unsubmitted); + + //This can bite! + _employeeDocumentItemRepository.RemoveRange(currentItems); + _employeeDocumentItemRepository.SaveChanges(); + + _employeeDocumentItemRepository.AddRange(newEntities); + _employeeDocumentItemRepository.SaveChanges(); + + scope.Complete(); + return op.Succcedded(entity.id); + } + + + /// + ///برای بررسی مدارک فرد پس از هر تایید و رد مدارک توسط ادمین صدا زده میشود، + ///می شود True اگر مدارک لازم را داشت یک مقدار در انتیتی + ///می شود False در غیر این صورت + /// + public void CheckEmployeeDocumentsConfirmation(long employeeDocumentId) + { + + var entity = _employeeDocumentsRepository.GetByIdWithItems(employeeDocumentId); + entity.UpdateIsConfirmed(); + entity.UpdateIsSentToChecker(); + _employeeDocumentsRepository.SaveChanges(); + } + + + + /// + /// مدارک تا قبل از ثبت کردن می توانند توسط کاربر حذف شوند + /// + public OperationResult DeleteEmployeeMultipleUnsubmittedDocumentsByLabel(long workshopId, long employeeId, + DocumentItemLabel label) + { + OperationResult op = new(); + var includedEmployeeDocuments = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + if (includedEmployeeDocuments == null) + return op.Failed(ApplicationMessages.RecordNotFound); + + var items = includedEmployeeDocuments.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && x.DocumentLabel == label).ToList(); + + var mediaIds = items.Select(x => x.MediaId); + if (items.Any()) + { + DeleteMultipleDocumentItemFiles(mediaIds); + _employeeDocumentItemRepository.RemoveRange(items); + _employeeDocumentItemRepository.SaveChanges(); + } + else + { + return op.Failed(ApplicationMessages.RecordNotFound); + } + return op.Succcedded(); + + } + + + /// + /// برای حذف فایل های آپلود شده هنگام انصراف + /// + public OperationResult DeleteUnsubmittedItems(long workshopId, long employeeId) + { + OperationResult op = new(); + (_, UserType userType) = _authHelper.GetUserTypeWithId(); + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + var items = + entity.EmployeeDocumentItemCollection.Where(x => + x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == userType).ToList(); + + if (items.Any()) + { + + _employeeDocumentItemRepository.RemoveRange(items); + _employeeDocumentItemRepository.SaveChanges(); + try + { + DeleteMultipleDocumentItemFiles(items.Select(x => x.MediaId)); + } + catch + { + // ignored + } + + } + + + return op.Succcedded(); + } + + + + #region Client Only Methods + + + /// + /// افزودن آیتم جدید به مدارک برای کلاینت + /// + public OperationResult AddEmployeeDocumentItemForClient(AddEmployeeDocumentItem command) + { + OperationResult op = new(); + + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + + if (!_employeeRepository.Exists(x => x.id == command.EmployeeId)) + return op.Failed("پرسنل یافت نشد"); + + + if (!_workshopRepository.Exists(x => x.id == command.WorkshopId)) + return op.Failed("کارگاه وجود ندارد"); + + + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(command.EmployeeId, command.WorkshopId); + + //if record doesn't exist but employee exists and also the workshop, create a new record + if (entity == null) + { + var opCreate = Create(new CreateEmployeeDocuments() + { EmployeeId = command.EmployeeId, WorkshopId = command.WorkshopId }); + if (opCreate.IsSuccedded == false) return opCreate; + entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopId(command.EmployeeId, command.WorkshopId); + } + + var currentItems = entity.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); + + if (currentItems.Any(x => x.DocumentLabel == command.Label && + (x.DocumentStatus == DocumentStatus.SubmittedByClient || x.DocumentStatus == DocumentStatus.SubmittedByAdmin))) + return op.Failed("امکان ثبت دوباره مدارک تا بررسی مدارک ثبت شده فعلی وجود ندارد"); + + DeleteMultipleUnsubmittedDocumentsByLabel(entity, command.Label, uploaderType); + + + + var mediaOpResult = UploadDocumentItemFile(command.PictureFile, command.Label.ToString(), + $"temp/{command.WorkshopId}/{command.EmployeeId}"); + + if (mediaOpResult.IsSuccedded == false) + return mediaOpResult; + + + //if the mediaId is already in use in our table return failed + if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) + return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + var newEntity = new EmployeeDocumentItem(command.WorkshopId, command.EmployeeId, mediaOpResult.SendId, entity.id, command.Label, uploaderId, uploaderType); + + _employeeDocumentItemRepository.Create(newEntity); + _employeeDocumentItemRepository.SaveChanges(); + + + + return op.Succcedded(entity.id); + } + + + /// + /// ثبت مدارک توسط کلاینت + /// + public OperationResult SubmitDocumentItemsByClient(SubmitEmployeeDocuments cmd) + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); + var currentDocs = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)) + .ToList(); + + + var (userId, userType) = _authHelper.GetUserTypeWithId(); + + var unsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && + x.UploaderType == UserType.Client).ToList(); + + + + if (unsubmittedDocs.Any() == false) + return op.Succcedded(); + + foreach (var item in unsubmittedDocs) + { + item.SubmitByClient(userId, userType); + MoveDocumentItemFile(item.MediaId, + $"SubmittedByClient/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); + } + + + if (HasRequiredDocuments(currentDocs, entity.Gender)) + entity.UpdateRequiredItemsSubmittedByClient(); + + + _employeeDocumentItemRepository.SaveChanges(); + + entity.UpdateIsConfirmed(); + _employeeDocumentsRepository.SaveChanges(); + + return op.Succcedded(); + } + + + /// + /// ثبت مدارک توسط کلاینت برای افزودن پرسنل + /// + public OperationResult SubmitDocumentItemsByEmployeeIdWorkshopId(long employeeId, long workshopId) + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + var notRejectedDocs = entity.EmployeeDocumentItemCollection + .Where(x=>x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Client) + .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + + if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) + return op.Failed("مدارک الزامی بارگذاری نشده اند"); + + var (userId, userType) = _authHelper.GetUserTypeWithId(); + + var unsubmittedDocs = notRejectedDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted).ToList(); + + if (unsubmittedDocs.Any() == false) + return op.Succcedded(); + + + foreach (var item in unsubmittedDocs) + { + item.SubmitByClient(userId, userType); + MoveDocumentItemFile(item.MediaId, $"SubmittedByClient/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); + } + _employeeDocumentItemRepository.SaveChanges(); + + entity.UpdateIsConfirmed(); + _employeeDocumentsRepository.SaveChanges(); + + return op.Succcedded(); + + } + + + /// + /// برای افزودن یکباره مدارک در افزودن پرسنل توسط کلاینت + /// + public OperationResult AddRangeEmployeeDocumentItems(long workshopId, long employeeId, List command) + { + OperationResult op = new(); + + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + + return op.Failed("پرسنل یافت نشد"); + + + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return op.Failed("کارگاه وجود ندارد"); + + + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + + + using var scope = new TransactionScope(); + + + //if record doesn't exist but employee exists and also the workshop, create a new record + if (entity == null) + { + var opCreate = Create(new CreateEmployeeDocuments() + { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return opCreate; + entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopId(employeeId, workshopId); + } + + List newEntities = new(); + foreach (var item in command) + { + DeleteMultipleUnsubmittedDocumentsByLabel(entity, item.Label, uploaderType); + + var mediaOpResult = UploadDocumentItemFile(item.PictureFile, item.Label.ToString(), + $"temp/{workshopId}/{employeeId}"); + + if (mediaOpResult.IsSuccedded == false) + return mediaOpResult; + + + //if the mediaId is already in use in our table return failed + if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) + return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + var newEntity = new EmployeeDocumentItem(workshopId, employeeId, mediaOpResult.SendId, entity.id, item.Label, uploaderId, uploaderType); + newEntities.Add(newEntity); + } + + var currentItems = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)); + + //This can bite! + _employeeDocumentItemRepository.RemoveRange(currentItems); + _employeeDocumentItemRepository.SaveChanges(); + + _employeeDocumentItemRepository.AddRange(newEntities); + _employeeDocumentItemRepository.SaveChanges(); + + SubmitDocumentItemsByEmployeeIdWorkshopId(employeeId, workshopId); + + scope.Complete(); + return op.Succcedded(entity.id); + } + + + ///// + ///// ثبت مدارک توسط کلاینت + ///// + //public OperationResult SubmitDocumentItemsByClient(SubmitEmployeeDocuments cmd) + //{ + // OperationResult op = new(); + // var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); + // var notRejectedDocs = entity.EmployeeDocumentItemCollection.Where(x => + // x.DocumentStatus != DocumentStatus.Rejected && x.DocumentStatus != DocumentStatus.Deleted) + // .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + // //if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) + // // return op.Failed("مدارک الزامی بارگذاری نشده اند"); + + // var (userId, userType) = _authHelper.GetUserTypeWithId(); + + // var unsubmittedDocs = notRejectedDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && + // x.UploaderType == UserType.Client).ToList(); + + // if (unsubmittedDocs.Any() == false) + // return op.Succcedded(); + + // foreach (var item in unsubmittedDocs) + // item.Submit(userId, userType); + + // _employeeDocumentItemRepository.SaveChanges(); + + // entity.UpdateIsSentToChecker(); + // entity.UpdateAreRequiredDocumentsConfirmed(); + // _employeeDocumentsRepository.SaveChanges(); + + // return op.Succcedded(); + //} + + // /// + // /// ثبت مدارک توسط کلاینت + // /// + // public OperationResult SubmitDocumentItemsByEmployeeIdWorkshopId(long employeeId, long workshopId) + // { + // OperationResult op = new(); + // var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + // var notRejectedDocs = entity.EmployeeDocumentItemCollection.Where(x => + // x.DocumentStatus != DocumentStatus.Rejected && x.DocumentStatus != DocumentStatus.Deleted) + // .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + + // if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) + // return op.Failed("مدارک الزامی بارگذاری نشده اند"); + + + // var unsubmittedDocs = notRejectedDocs.Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted).ToList(); + + // if (unsubmittedDocs.Any() == false) + // return op.Succcedded(); + + + // foreach (var item in unsubmittedDocs) + // item.Submit(userId, userType); + + // _employeeDocumentItemRepository.SaveChanges(); + + // entity.UpdateIsSentToChecker(); + // entity.UpdateAreRequiredDocumentsConfirmed(); + // _employeeDocumentsRepository.SaveChanges(); + + // return op.Succcedded(); + + // } + + // /// + // /// ادمین unsubmitted دریافت جزییات مدارک پرسنل برای کلاینت بدون مدارک + // /// /// + public EmployeeDocumentsViewModel GetDetailsForClient(long employeeId, long workshopId) + + { + + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return new(); + + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return new(); + + //if entity is null but employee exists, make a new empty entity for it + if (entity == null) + { + var opCreate = + Create(new CreateEmployeeDocuments() { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return new(); + + return new EmployeeDocumentsViewModel() { EmployeeId = employeeId }; + } + + List currentConfirmedDocuments = entity.EmployeeDocumentItemCollection + .Where(x => x.UploaderType == UserType.Client || x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + + var medias = _mediaRepository + .GetMedias(currentConfirmedDocuments.Select(x => x.MediaId) + .ToList()); + + + var employee = _employeeRepository.Get(entity.EmployeeId); + + + var result= new EmployeeDocumentsViewModel() + { + Id = entity.id, + MilitaryServiceCard = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), + + EducationalDegree = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, + DocumentItemLabel.EducationalDegree), + + + IdCardPage1 = + GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage1), + + IdCardPage2 = + GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage2), + + IdCardPage3 = + GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage3), + + IdCardPage4 = + GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage4), + + NationalCardFront = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, + DocumentItemLabel.NationalCardFront), + + NationalCardRear = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, + DocumentItemLabel.NationalCardRear), + + EmployeePicture = GetItemFromCollectionByLabel(currentConfirmedDocuments, medias, + DocumentItemLabel.EmployeePicture), + + EmployeeFullName = employee.FullName, + WorkshopId = workshopId, + EmployeeId = entity.EmployeeId, + Gender = employee.Gender, + NationalCode = employee.NationalCode, + EmployeeFName = employee.FName, + EmployeeLName = employee.LName, + Nationality = employee.Nationality, + IdNumber = employee.IdNumber, + FatherName = employee.FatherName, + DateOfBirth = employee.DateOfBirth.ToFarsi(), + MaritalStatus = employee.MaritalStatus, + MilitaryServiceStatus = employee.MilitaryService, + SubmittedItemsCount = currentConfirmedDocuments.Count(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin || x.DocumentStatus == DocumentStatus.SubmittedByClient), + IsSentToChecker = entity.IsSentToChecker + }; + result.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(result.EmployeePicture.PicturePath); + result.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage1.PicturePath); + result.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage2.PicturePath); + result.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage3.PicturePath); + result.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage4.PicturePath); + result.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(result.NationalCardFront.PicturePath); + result.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(result.NationalCardRear.PicturePath); + result.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(result.MilitaryServiceCard.PicturePath); + return result; + } + + + /// + /// جستجوی مجموعه مدارک بر اساس کارگاه + /// + /// مد تعیین کننده فیلتر افراد فعال است، سه حالت دارد: همه، فقط فعال، فقط غیر فعال + public List SearchForClient(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode=EmployeeDocumentSearchMode.ActiveEmployees) + { + + #region Create EmployeeDocuments Record For Newly Added Employees + + var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(cmd.WorkshopId); + var existingEmployeeIds = _leftWorkRepository.GetEmployeeIdsByWorkshopIdActiveInDates(cmd.WorkshopId, DateTime.Now, DateTime.Now); + var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList(); + + if (newEmployeeIds.Any()) + { + List employees = _employeeRepository.GetRangeByIds(newEmployeeIds).Select(x => + new EmployeeDocuments(x.id, cmd.WorkshopId, x.Gender)).ToList(); + + _employeeDocumentsRepository.AddRange(employees); + _employeeDocumentsRepository.SaveChanges(); + + } + + #endregion + + cmd.Mode = mode; + + + + var result = _employeeDocumentsRepository.SearchForClient(cmd); + + result.ForEach(x => + { + x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); + x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); + x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); + x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); + x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); + x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); + x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); + x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); + }); + return result; + } + + #endregion + + #region Admin Only Methods + /// + ///حذف آیتم ثبت شده توسط کلاینت برای ادمین + /// + public OperationResult RemoveClientDocumentItemsByAdminTemp(long workshopId, long employeeId, DocumentItemLabel label) + { + OperationResult op = new(); + + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return op.Failed("پرسنل یافت نشد"); + + + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return op.Failed("کارگاه وجود ندارد"); + + + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + if (entity == null) + { + + return op.Failed("خطای سیستمی"); + + } + + var currentItems = entity.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); + + + if (currentItems.Any(x => label == x.DocumentLabel && x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) + return op.Failed("امکان ثبت دوباره مدارک تا بررسی مدارک ثبت شده فعلی وجود ندارد"); + + + + var targetEntites = currentItems.Where(x => label == x.DocumentLabel && x.DocumentStatus == DocumentStatus.SubmittedByClient).ToList(); + //if the given label is uploaded by user, move it and soft delete it + if (targetEntites.Any()) + { + foreach (var clientUploadedItem in targetEntites) + { + clientUploadedItem.Delete(uploaderId, uploaderType); + + MoveDocumentItemFile(clientUploadedItem.MediaId, $"Deleted/{clientUploadedItem.EmployeeDocuments.WorkshopId}/{clientUploadedItem.EmployeeDocuments.EmployeeId}"); + } + } + DeleteMultipleUnsubmittedDocumentsByLabel(entity,label, uploaderType); + _employeeDocumentItemRepository.SaveChanges(); + + return op.Succcedded(); + } + + /// + ///حذف آیتم ثبت شده توسط کلاینت برای ادمین + /// + public OperationResult RemoveClientDocumentItemsByAdmin(long workshopId,long employeeId,Listlabels) + { + OperationResult op = new(); + + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return op.Failed("پرسنل یافت نشد"); + + + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return op.Failed("کارگاه وجود ندارد"); + + + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + if (entity == null) + { + + return op.Failed("خطای سیستمی"); + + } + + var currentItems = entity.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); + + + if (currentItems.Any(x=>labels.Contains(x.DocumentLabel) && x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) + return op.Failed("امکان ثبت دوباره مدارک تا بررسی مدارک ثبت شده فعلی وجود ندارد"); + + + + var targetEntites = currentItems.Where(x=>labels.Contains(x.DocumentLabel) && x.DocumentStatus == DocumentStatus.SubmittedByClient).ToList(); + //if the given label is uploaded by user, move it and soft delete it + if (targetEntites.Any()) + { + foreach (var clientUploadedItem in targetEntites) + { + clientUploadedItem.Delete(uploaderId, uploaderType); + + MoveDocumentItemFile(clientUploadedItem.MediaId, $"Deleted/{clientUploadedItem.EmployeeDocuments.WorkshopId}/{clientUploadedItem.EmployeeDocuments.EmployeeId}"); + } + _employeeDocumentItemRepository.SaveChanges(); + } + return op.Succcedded(); + } + + /// + /// اضافه کردن آیتم جدید به مدارک برای ادمین + /// + public OperationResult AddEmployeeDocumentItemForAdmin(AddEmployeeDocumentItem command) + { + OperationResult op = new(); + + var (uploaderId, uploaderType) = _authHelper.GetUserTypeWithId(); + + //ToDo: add check for leftwork + if (!_employeeRepository.Exists(x => x.id == command.EmployeeId)) + return op.Failed("پرسنل یافت نشد"); + + + if (!_workshopRepository.Exists(x => x.id == command.WorkshopId)) + return op.Failed("کارگاه وجود ندارد"); + + + var entity = + _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(command.EmployeeId, command.WorkshopId); + + //if record doesn't exist but employee exists and also the workshop, create a new record + if (entity == null) + { + var opCreate = Create(new CreateEmployeeDocuments() + { EmployeeId = command.EmployeeId, WorkshopId = command.WorkshopId }); + if (opCreate.IsSuccedded == false) return opCreate; + entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopId(command.EmployeeId, command.WorkshopId); + } + + var currentItems = entity.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); + + if (currentItems.Any(x => x.DocumentLabel == command.Label && x.DocumentStatus == DocumentStatus.SubmittedByAdmin)) + return op.Failed("امکان ثبت دوباره مدارک تا بررسی مدارک ثبت شده فعلی وجود ندارد"); + + //if a given label is uploaded by user, move it and soft delete it + if (currentItems.Any(x => + x.DocumentLabel == command.Label && x.DocumentStatus == DocumentStatus.SubmittedByClient)) + { + var clientUploadedItem = currentItems.First(x => + x.DocumentLabel == command.Label && x.DocumentStatus == DocumentStatus.SubmittedByClient); + clientUploadedItem.Delete(uploaderId,uploaderType); + MoveDocumentItemFile(clientUploadedItem.MediaId, + $"Deleted/{clientUploadedItem.EmployeeDocuments.WorkshopId}/{clientUploadedItem.EmployeeDocuments.EmployeeId}"); + } + + DeleteMultipleUnsubmittedDocumentsByLabel(entity, command.Label, uploaderType); + + + + var mediaOpResult = UploadDocumentItemFile(command.PictureFile, command.Label.ToString(), + $"temp/{command.WorkshopId}/{command.EmployeeId}"); + + if (mediaOpResult.IsSuccedded == false) + return mediaOpResult; + + + //if the mediaId is already in use in our table return failed + if (_employeeDocumentItemRepository.Exists(x => x.MediaId == mediaOpResult.SendId)) + return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + var newEntity = new EmployeeDocumentItem(command.WorkshopId, command.EmployeeId, mediaOpResult.SendId, entity.id, command.Label, uploaderId, uploaderType); + + _employeeDocumentItemRepository.Create(newEntity); + _employeeDocumentItemRepository.SaveChanges(); + + + + return op.Succcedded(entity.id); + } + + /// + /// ثبت مدارک توسط ادمین + /// + public OperationResult SubmitDocumentItemsByAdmin(SubmitEmployeeDocuments cmd) + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); + var currentDocs = entity.EmployeeDocumentItemCollection.Where(x=>x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + //if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) + // return op.Failed("مدارک الزامی بارگذاری نشده اند"); + + var (userId, operatorType) = _authHelper.GetUserTypeWithId(); + + var adminUnsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.SubmittedByClient || + (x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == UserType.Admin)).ToList(); + + //if (!HasRequiredDocuments(currentDocs, entity.Gender)) + // return op.Failed("مدارک الزامی بارگذاری نشده اند"); + + if (adminUnsubmittedDocs.Any() == false) + return op.Succcedded(); + + foreach (var item in adminUnsubmittedDocs) + { + item.SubmitByAdmin(userId, operatorType); + MoveDocumentItemFile(item.MediaId, $"SubmittedByAdmin/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); + } + + _employeeDocumentItemRepository.SaveChanges(); + entity.UpdateRequiredItemsSubmittedByClient(); + entity.UpdateIsSentToChecker(); + entity.UpdateIsConfirmed(); + _employeeDocumentsRepository.SaveChanges(); + + return op.Succcedded(); + } + + + /// + /// ثبت مدارک توسط ادمین، در این متد مدارک الزامی اعتبار سنجی دارند + /// + public OperationResult SubmitDocumentItemsByAdminInWorkFlow(SubmitEmployeeDocuments cmd) + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByIdWithItems(cmd.EmployeeDocumentsId); + var currentDocs = entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == UserType.Admin) + .GroupBy(x => x.DocumentLabel).Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + //if (!HasRequiredDocuments(notRejectedDocs, entity.Gender)) + // return op.Failed("مدارک الزامی بارگذاری نشده اند"); + + var (userId, operatorType) = _authHelper.GetUserTypeWithId(); + + var adminUnsubmittedDocs = currentDocs.Where(x => x.DocumentStatus == DocumentStatus.SubmittedByClient || + (x.DocumentStatus == DocumentStatus.Unsubmitted && x.UploaderType == UserType.Admin)).ToList(); + + if (!HasRequiredDocuments(currentDocs, entity.Gender)) + return op.Failed("مدارک الزامی بارگذاری نشده اند"); + + if (adminUnsubmittedDocs.Any() == false) + return op.Succcedded(); + + foreach (var item in adminUnsubmittedDocs) + { + item.SubmitByAdmin(userId, operatorType); + MoveDocumentItemFile(item.MediaId, $"SubmittedByAdmin/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); + } + + _employeeDocumentItemRepository.SaveChanges(); + entity.UpdateRequiredItemsSubmittedByClient(); + entity.UpdateIsSentToChecker(); + entity.UpdateIsConfirmed(); + _employeeDocumentsRepository.SaveChanges(); + + return op.Succcedded(); + } + + + /// + /// کلاینت unsubmitted دریافت جزییات مدارک پرسنل برای ادمین بدون مدارک + /// + public EmployeeDocumentsViewModel GetDetailsForAdmin(long employeeId, long workshopId) + { + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return new(); + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return new(); + + //if entity is null but employee exists, make a new empty entity for it + if (entity == null) + { + var opCreate = + Create(new CreateEmployeeDocuments() { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return new(); + + return new EmployeeDocumentsViewModel() { EmployeeId = employeeId }; + } + + List currentDocuments = entity.EmployeeDocumentItemCollection + .Where(x => x.UploaderType == UserType.Admin || x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + + var medias = _mediaRepository + .GetMedias(currentDocuments.Select(x => x.MediaId) + .ToList()); + + + var employee = _employeeRepository.Get(entity.EmployeeId); + + + var result = new EmployeeDocumentsViewModel() + { + Id = entity.id, + MilitaryServiceCard = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), + + EducationalDegree = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EducationalDegree), + + + IdCardPage1 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage1), + + IdCardPage2 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage2), + + IdCardPage3 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage3), + + IdCardPage4 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage4), + + NationalCardFront = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardFront), + + NationalCardRear = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardRear), + + EmployeePicture = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EmployeePicture), + + EmployeeFullName = employee.FullName, + WorkshopId = workshopId, + EmployeeId = entity.EmployeeId, + Gender = employee.Gender, + NationalCode = employee.NationalCode, + EmployeeFName = employee.FName, + EmployeeLName = employee.LName, + Nationality = employee.Nationality, + IdNumber = employee.IdNumber, + FatherName = employee.FatherName, + DateOfBirth = employee.DateOfBirth.ToFarsi(), + MaritalStatus = employee.MaritalStatus, + MilitaryServiceStatus = employee.MilitaryService, + + }; + result.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(result.EmployeePicture.PicturePath); + result.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage1.PicturePath); + result.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage2.PicturePath); + result.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage3.PicturePath); + result.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(result.IdCardPage4.PicturePath); + result.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(result.NationalCardFront.PicturePath); + result.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(result.NationalCardRear.PicturePath); + result.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(result.MilitaryServiceCard.PicturePath); + + return result; + } + + + /// + /// جستجوی مجموعه مدارک بر اساس کارگاه برای ادمین + /// مد تعیین کننده فیلتر افراد فعال است، سه حالت دارد: همه، فقط فعال، فقط غیر فعال + public List SearchForAdmin(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode=EmployeeDocumentSearchMode.ActiveEmployees) + { + + #region Create EmployeeDocuments Record For Newly Added Employees + + var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(cmd.WorkshopId); + var existingEmployeeIds = + _leftWorkRepository.GetEmployeeIdsByWorkshopIdActiveInDates(cmd.WorkshopId, DateTime.Now, DateTime.Now); + + var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList(); + + if (newEmployeeIds.Any()) + { + List employees = _employeeRepository.GetRangeByIds(newEmployeeIds).Select(x => + new EmployeeDocuments(x.id, cmd.WorkshopId, x.Gender)).ToList(); + + _employeeDocumentsRepository.AddRange(employees); + _employeeDocumentsRepository.SaveChanges(); + } + + #endregion + + cmd.Mode = mode; + + var result = _employeeDocumentsRepository.SearchForAdmin(cmd); + + result.ForEach(x => + { + var requiredDocuments = EmployeeDocumentRequiredItems.GetByGender(x.Gender); + x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); + x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); + x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); + x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); + x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); + x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); + x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); + x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); + x.RequiredDocuments = requiredDocuments; + x.RequiredDocumentsUploaded = x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(EmployeeDocumentItemViewModel)) + .Select(y => y.GetValue(x) as EmployeeDocumentItemViewModel).Where(y => y != null && !string.IsNullOrWhiteSpace(y.PicturePath) && + (y.Status is DocumentStatus.Confirmed or DocumentStatus.SubmittedByAdmin)).Select(y => y.DocumentItemLabel).ToList(); + }); + return result; + } + + + /// + /// مجموعه مدارک بر اساس کارگاه برای کارپوشه ادمین + public List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId) + { + + #region Create EmployeeDocuments Record For Newly Added Employees + + var existingEmployeesWithDocs = _employeeDocumentsRepository.GetEmployeeIds(workshopId); + var existingEmployeeIds = + _leftWorkRepository.GetEmployeeIdsByWorkshopIdActiveInDates(workshopId, DateTime.Now, DateTime.Now); + var newEmployeeIds = existingEmployeeIds.Except(existingEmployeesWithDocs).ToList(); + + if (newEmployeeIds.Any()) + { + List employees = _employeeRepository.GetRangeByIds(newEmployeeIds).Select(x => + new EmployeeDocuments(x.id, workshopId, x.Gender)).ToList(); + + _employeeDocumentsRepository.AddRange(employees); + _employeeDocumentsRepository.SaveChanges(); + } + + #endregion + + + var result = _employeeDocumentsRepository.GetByWorkshopIdWithItemsForAdminWorkFlow(workshopId); + + result.ForEach(x => + { + var requiredDocuments = EmployeeDocumentRequiredItems.GetByGender(x.Gender); + x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); + x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); + x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); + x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); + x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); + x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); + x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); + x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); + x.RequiredDocuments = requiredDocuments; + + #region شتر دیدی ندیدی + + x.RequiredDocumentsUploaded = x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(EmployeeDocumentItemViewModel)) + .Select(y => y.GetValue(x) as EmployeeDocumentItemViewModel).Where(y => y != null && !string.IsNullOrWhiteSpace(y.PicturePath) && + (y.Status is DocumentStatus.Confirmed or DocumentStatus.SubmittedByAdmin)).Select(y => y.DocumentItemLabel).ToList(); + #endregion + }); + return result; + } + + + /// + /// دریافت کارگاه های ادمین که نیاز به آپلود مدارک ضروری دارند + /// + public List GetWorkshopDocumentsAwaitingUploadForAdminWorkFlow(List workshops) + { + return _employeeDocumentsRepository.GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(workshops); + } + + /// + /// حذف توسط ادمین، مدارک ثبت شده کلاینت نیز میتوانند توسط ادمین پاک شوند + /// + public OperationResult RemoveByAdmin(long documentItemId) + { + OperationResult op = new(); + var entity = _employeeDocumentItemRepository.Get(documentItemId); + + (long operatorId, _) = _authHelper.GetUserTypeWithId(); + + if (entity == null) + return op.Failed(ApplicationMessages.RecordNotFound); + + if (entity.DocumentStatus == DocumentStatus.Confirmed || entity.DocumentStatus == DocumentStatus.Rejected || + entity.DocumentStatus == DocumentStatus.Deleted) + { + return op.Failed("شما تنها مجاز به حذف موارد تعیین تکلیف نشده هستید"); + } + + if (entity.UploaderType == UserType.Client) + { + entity.Delete(operatorId,UserType.Admin); + } + + else + { + _employeeDocumentItemRepository.Remove(entity); + } + + _employeeDocumentItemRepository.SaveChanges(); + return op.Succcedded(); + } + + public int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds) + { + return _employeeDocumentsRepository.GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(workshopIds); + } + + + #endregion + + #region Checker Only Methods + + /// + /// ثبت عملیات چکر + /// + public OperationResult SubmitCheckerOperation(CheckerDocumentsOperation cmd) + { + OperationResult op = new(); + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(cmd.EmployeeId, cmd.WorkshopId); + + if (entity == null) + return op.Failed(ApplicationMessages.RecordNotFound); + + foreach (var operation in cmd.Operations) + { + + var item = _employeeDocumentItemRepository.GetWithEmployeeDocumentsByItemId(operation.EmployeeDocumentItemId); + if (item == null) + { + return op.Failed("رکورد مورد نظر یافت نشد"); + } + + (long operatorId, UserType userType) = _authHelper.GetUserTypeWithId(); + + if (item.DocumentStatus != DocumentStatus.SubmittedByAdmin) + return op.Failed("امکان بررسی رکورد مورد نظر وجود ندارد"); + + + if (operation.IsConfirmed == false) + { + if (string.IsNullOrWhiteSpace(operation.Message)) + return op.Failed("لطفا علت رد درخواست را پر کنید"); + item.Reject(operatorId, operation.Message, userType); + + + MoveDocumentItemFile(item.MediaId, $"Rejected/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); + } + else + { + item.Confirm(operatorId, userType); + + + MoveDocumentItemFile(item.MediaId, $"Confirmed/{item.EmployeeDocuments.WorkshopId}/{item.EmployeeDocuments.EmployeeId}"); + } + + + + } + entity.UpdateIsConfirmed(); + entity.UpdateIsSentToChecker(); + _employeeDocumentsRepository.SaveChanges(); + return op.Succcedded(); + } + + + /// + /// برای تایید یا رد توسط چکر ،unsubmitted دریافت جزییات مدارک پرسنل، بدون مدارک + /// + public EmployeeDocumentsViewModel GetDetailsForChecker(long employeeId, long workshopId) + { + var entity = _employeeDocumentsRepository.GetByEmployeeIdWorkshopIdWithItems(employeeId, workshopId); + + if (!_employeeRepository.Exists(x => x.id == employeeId)) + return new(); + if (!_workshopRepository.Exists(x => x.id == workshopId)) + return new(); + + //if entity is null but employee exists, make a new empty entity for it + if (entity == null) + { + var opCreate = + Create(new CreateEmployeeDocuments() { EmployeeId = employeeId, WorkshopId = workshopId }); + if (opCreate.IsSuccedded == false) return new(); + + return new EmployeeDocumentsViewModel() { EmployeeId = employeeId }; + } + + List currentDocuments = entity.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)) + .Where(x=>x.DocumentStatus == DocumentStatus.SubmittedByAdmin || + x.DocumentStatus == DocumentStatus.Confirmed || x.DocumentStatus == DocumentStatus.Rejected).ToList(); + + + var medias = _mediaRepository + .GetMedias(currentDocuments.Select(x => x.MediaId) + .ToList()); + + var employee = _employeeRepository.Get(entity.EmployeeId); + + + return new EmployeeDocumentsViewModel() + { + Id = entity.id, + MilitaryServiceCard = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), + + EducationalDegree = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EducationalDegree), + + + IdCardPage1 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage1), + + IdCardPage2 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage2), + + IdCardPage3 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage3), + + IdCardPage4 = + GetItemFromCollectionByLabel(currentDocuments, medias, DocumentItemLabel.IdCardPage4), + + NationalCardFront = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardFront), + + NationalCardRear = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.NationalCardRear), + + EmployeePicture = GetItemFromCollectionByLabel(currentDocuments, medias, + DocumentItemLabel.EmployeePicture), + + EmployeeFullName = employee.FullName, + WorkshopId = workshopId, + EmployeeId = entity.EmployeeId, + Gender = employee.Gender, + NationalCode = employee.NationalCode, + EmployeeFName = employee.FName, + EmployeeLName = employee.LName, + Nationality = employee.Nationality, + IdNumber = employee.IdNumber, + FatherName = employee.FatherName, + DateOfBirth = employee.DateOfBirth.ToFarsi(), + MaritalStatus = employee.MaritalStatus, + MilitaryServiceStatus = employee.MilitaryService, + SubmittedItemsCount = currentDocuments.Count(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin) + }; + } + + /// + /// دریافت کارگاه هایی که اقدام به آپلود مدارک کرده اند + /// + public List GetWorkshopsWithUploadedDocumentsForChecker() + { + return _employeeDocumentsRepository.GetWorkshopsWithUploadedDocuments(); + } + + /// + /// دریافت پرسنلی که اقدام به آپلود مدارک کرده اند + /// + public List GetByWorkshopIdWithItemsForChecker(long workshopId, bool onlyConfirmed) + { + + var result = _employeeDocumentsRepository.GetByWorkshopIdWithItemsForChecker(workshopId, onlyConfirmed); + + result.ForEach(x => + { + x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); + x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); + x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); + x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); + x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); + x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); + x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); + x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); + }); + return result; + } + + /// + /// دریافت کارگاه هایی که اقدام به آپلود مدارک "ضروری" کرده اند، برای کارپوشه + /// + public List GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow() + { + return _employeeDocumentsRepository.GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow(); + } + + /// + /// دریافت پرسنلی در کارگاه که مدارک ضروری آن ها آپلود شده ولی تایید یا رد نشده اند، برای کارپوشه + /// + public List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId) + { + + var result = _employeeDocumentsRepository.GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(workshopId); + + result.ForEach(x => + { + x.EmployeePicture.PicturePath = GetThumbnailPathFromFilePath(x.EmployeePicture.PicturePath); + x.IdCardPage1.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage1.PicturePath); + x.IdCardPage2.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage2.PicturePath); + x.IdCardPage3.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage3.PicturePath); + x.IdCardPage4.PicturePath = GetThumbnailPathFromFilePath(x.IdCardPage4.PicturePath); + x.NationalCardFront.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardFront.PicturePath); + x.NationalCardRear.PicturePath = GetThumbnailPathFromFilePath(x.NationalCardRear.PicturePath); + x.MilitaryServiceCard.PicturePath = GetThumbnailPathFromFilePath(x.MilitaryServiceCard.PicturePath); + }); + return result; + } + + public int GetCheckerWorkFlowCount() + { + return _employeeDocumentsRepository.GetCheckerWorkFlowCount(); + } + #endregion + + + #region Private Methods + + + /// + /// مدارک ثبت نشده با برچسب داده شده را پاک می کند. هنگامی استفاده می شود که کاربر یک آیتم را آپلود می کند + /// + private void DeleteMultipleUnsubmittedDocumentsByLabel(EmployeeDocuments includedEmployeeDocuments, + DocumentItemLabel label,UserType userType) + { + var items = includedEmployeeDocuments.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && x.DocumentLabel == label && x.UploaderType == userType).ToList(); + + var mediaIds = items.Select(x => x.MediaId); + if (items.Any()) + { + DeleteMultipleDocumentItemFiles(mediaIds); + _employeeDocumentItemRepository.RemoveRange(items); + _employeeDocumentItemRepository.SaveChanges(); + } + + + } + /// + /// مدارک ثبت نشده با برچسب داده شده را پاک می کند. هنگامی استفاده می شود که کاربر یک آیتم را آپلود می کند + /// + private void DeleteMultipleUnsubmittedDocumentsByLabel(EmployeeDocuments includedEmployeeDocuments, + List labels, UserType userType) + { + var items = includedEmployeeDocuments.EmployeeDocumentItemCollection + .Where(x => x.DocumentStatus == DocumentStatus.Unsubmitted && labels.Contains(x.DocumentLabel) && x.UploaderType == userType).ToList(); + + var mediaIds = items.Select(x => x.MediaId); + if (items.Any()) + { + DeleteMultipleDocumentItemFiles(mediaIds); + _employeeDocumentItemRepository.RemoveRange(items); + _employeeDocumentItemRepository.SaveChanges(); + } + } + + //You don't need this method to be public as it's already called where its necessary + private OperationResult Create(CreateEmployeeDocuments command) + { + OperationResult op = new(); + + if (!_employeeRepository.Exists(x => x.id == command.EmployeeId)) + return op.Failed("پرسنل یافت نشد"); + + if (!_workshopRepository.Exists(x => x.id == command.WorkshopId)) + return op.Failed("کارگاه وجود ندارد"); + + // اگر در دیتابیس وجود داشت ارور ندهد و عملیاتی انجام ندهد + if (_employeeDocumentsRepository.Exists(x => x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) + return op.Succcedded(_employeeDocumentsRepository + .GetByEmployeeIdWorkshopId(command.EmployeeId, command.WorkshopId).id); + + var gender = _employeeRepository.Get(command.EmployeeId).Gender; + var entity = new EmployeeDocuments(command.EmployeeId, command.WorkshopId, gender); + + _employeeDocumentsRepository.Create(entity); + _employeeDocumentsRepository.SaveChanges(); + + return op.Succcedded(entity.id); + } + + + /// + /// برای حذف فایل مدارک + /// + private OperationResult DeleteMultipleDocumentItemFiles(IEnumerable mediaIds) + { + OperationResult op = new(); + var medias = _mediaRepository.GetRange(mediaIds); + if (medias == null || !medias.Any()) + return op.Failed("رسانه مورد نظر یافت نشد"); + + foreach (var media in medias) + { + + var filePath = media.Path; + var thumbnailPath = GetThumbnailPathFromFilePath(filePath); + try + { + if (System.IO.File.Exists(filePath)) + System.IO.File.Delete(filePath); + + if (System.IO.File.Exists(thumbnailPath)) + System.IO.File.Delete(thumbnailPath); + + } + catch + { + // ignored + } + } + + _mediaRepository.RemoveRange(medias); + _mediaRepository.SaveChanges(); + //if (somethingWentWrong) + // return op.Failed("خطایی در حذف فایل رخ داده است"); + return op.Succcedded(); + } + + /// + /// برای حذف فایل یکی از مدارک + /// + private OperationResult DeleteDocumentItemFile(long mediaId) + { + OperationResult op = new(); + var media = _mediaRepository.Get(mediaId); + if (media == null) + return op.Failed("رسانه مورد نظر یافت نشد"); + var filePath = media.Path; + var thumbnailPath = GetThumbnailPathFromFilePath(filePath); + try + { + if (System.IO.File.Exists(filePath)) + System.IO.File.Delete(filePath); + + if (System.IO.File.Exists(thumbnailPath)) + System.IO.File.Delete(thumbnailPath); + + } + catch + { + return op.Failed("خطایی در حذف فایل رخ داده است"); + } + + _mediaRepository.Remove(media.id); + _mediaRepository.SaveChanges(); + return op.Succcedded(); + } + + /// + /// جابجا کردن فایل یکی از مدارک، استفاده شده هنگام تایید و رد + /// + private OperationResult MoveDocumentItemFile(long mediaId, string newRelativePath) + { + OperationResult op = new(); + var media = _mediaRepository.Get(mediaId); + + var oldFilePath = media.Path; + var oldThumbnailPath = GetThumbnailPathFromFilePath(oldFilePath); + + var newDirectory = Path.Combine(_basePath, newRelativePath); + Directory.CreateDirectory(newDirectory); + + string newFilePath = Path.Combine(newDirectory, Path.GetFileName(oldFilePath)!); + string newThumbnailFilePath = Path.Combine(newDirectory, Path.GetFileName(oldThumbnailPath)); + + try + { + System.IO.File.Move(oldFilePath, newFilePath); + System.IO.File.Move(oldThumbnailPath, newThumbnailFilePath); + } + + catch + { + return op.Failed("در جابجایی فایل خطایی رخ داده است"); + } + + + media.Edit(newFilePath, media.Type, media.Category); + _mediaRepository.SaveChanges(); + return op.Succcedded(); + } + + + /// + /// دریافت فایل و نوشتن آن در مسیر داده شده، و ثبت مدیا + /// + /// فایل + /// برچسب مدارک + /// مسیر فایل + /// + private OperationResult UploadDocumentItemFile(IFormFile file, string label, string relativePath) + { + OperationResult op = new(); + var now= DateTime.Now; + PersianCalendar pc = new PersianCalendar(); + + var yearFa = pc.GetYear(now); + var monthFa = pc.GetMonth(now); + var dayFa = pc.GetDayOfMonth(now); + var ticks = now.Ticks % 864_000_000_000; + + + List allowedExtensions = [".png", ".jpg", ".jpeg"]; + var path = Path.Combine(_basePath, relativePath); + var fileExtension = Path.GetExtension(file.FileName); + + if (file.Length > (50 * 1024 * 1024)) + return op.Failed("حجم فایل نمی تواند بیشتر از 50 مگابایت باشد"); + + if (!allowedExtensions.Contains(fileExtension)) + { + var operationMessage = ":فرمت فایل باید یکی از موارد زیر باشد"; + operationMessage += "\n"; + operationMessage += string.Join(" ", allowedExtensions); + return op.Failed(operationMessage); + } + + Directory.CreateDirectory(path); + + var type = Path.GetExtension(file.FileName); + + var uniqueFileName = $"{label}-{yearFa}-{monthFa}-{dayFa}-{ticks}{type}"; + var filePath = Path.Combine(path, uniqueFileName); + using (var fileStream = new FileStream(filePath, FileMode.CreateNew)) + { + file.CopyTo(fileStream); + } + #region Thumbnail Creation + + var uniqueFileNameThumbnail = $"{label}-{yearFa}-{monthFa}-{dayFa}-{ticks}-thumbnail{type}"; + var thumbnailFilePath = Path.Combine(path, uniqueFileNameThumbnail); + var thumbnail = Tools.ResizeImage(filePath, 150, 150); + System.IO.File.WriteAllBytes(thumbnailFilePath, Convert.FromBase64String(thumbnail)); + #endregion + + + var mediaEntity = new Media(filePath, type, "فایل", "EmployeeDocuments"); + + _mediaRepository.Create(mediaEntity); + _mediaRepository.SaveChanges(); + + return op.Succcedded(mediaEntity.id); + + } + + + //private OperationResult UploadExistingRollCallEmployeePicture(long mediaId, long workshopId, long employeeId) + //{ + // OperationResult op = new(); + // var media = _mediaRepository.Get(mediaId); + + // if (media == null) + // return op.Failed("فایل مورد نظر یافت نشد"); + + // var path = Path.Combine(_webHostEnvironment.ContentRootPath, "Storage", "EmployeeDocuments", "temp", + // $"{workshopId}", $"{employeeId}"); + + // var uniqueFileName = $"{DocumentItemLabel.EmployeePicture.ToString()}-{Guid.NewGuid()}{media.Type}"; + // var newFilePath = Path.Combine(path, uniqueFileName); + // try + // { + // Directory.CreateDirectory(newFilePath); + + // if (!System.IO.File.Exists(media.Path)) + // return op.Failed("فایل مورد نظر یافت نشد"); + + // System.IO.File.Copy(media.Path, newFilePath); + // } + // catch + // { + // return op.Failed("در جابجایی فایل خطایی رخ داده است"); + // } + + // var mediaEntity = new Media(newFilePath, media.Type, "فایل", "EmployeeDocuments"); + // _mediaRepository.Create(mediaEntity); + // _mediaRepository.SaveChanges(); + + + // return op.Succcedded(mediaEntity.id); + + //} + + + + /// + /// متد پر استفاده برای دریافت آخرین مدارک تایید شده فرد + /// + private static List GetCurrentConfirmedDocuments(EmployeeDocuments entity) + { + return entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus == DocumentStatus.Confirmed) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + } + + + + /// + /// با توجه به جنسیت مدارک لازم را تعیین می کند، مثلا معافیت سربازی برای آقایان + /// + /// + /// "مرد" یا "زن" + private bool HasRequiredDocuments(List items, string gender) + { + + + List requiredDocuments = EmployeeDocumentRequiredItems.GetByGender(gender); + + + List labels = items.GroupBy(x => x.DocumentLabel) + .Select(x => x.Key).ToList(); + + //if labels has all the required labels + if (labels.Count(x => requiredDocuments.Contains(x)) == requiredDocuments.Count()) + return true; + return false; + } + + + //for mapping purposes + private static EmployeeDocumentItemViewModel GetItemFromCollectionByLabel(List items, + List medias, DocumentItemLabel label) + { + if (items == null || items.Count == 0) + return new(); + var item = items.FirstOrDefault(x => x.DocumentLabel == label); + + if (item == null || item.MediaId == 0) + return new(); + + return new EmployeeDocumentItemViewModel() + { + DocumentItemLabel = label, + Id = item.id, + Status = item.DocumentStatus, + StatusString = item.DocumentStatus.ToString().ToLower(), + PicturePath = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Path ?? "", + RejectionMessage = item.RejectionReason, + UploaderType = item.UploaderType + }; + } + + + private static string GetThumbnailPathFromFilePath(string filePath) + { + return string.IsNullOrWhiteSpace(filePath)? string.Empty: Path.Combine(Path.GetDirectoryName(filePath)!, Path.GetFileNameWithoutExtension(filePath) + $"-thumbnail{Path.GetExtension(filePath)}"); + } + + #endregion + #region Old MEthods + + ///// + ///// تایید یکی از مدارک توسط چکر + ///// + //public OperationResult ConfirmDocumentItem(ConfirmDocumentItem cmd) + //{ + // OperationResult op = new(); + + + // EmployeeDocumentItem entity = + // _employeeDocumentItemRepository.GetWithEmployeeDocumentsByItemId(cmd.EmployeeDocumentItemId); + + // if (entity == null) + // { + // return op.Failed("رکورد مورد نظر یافت نشد"); + // } + + // if (entity.DocumentStatus != DocumentStatus.SubmittedByAdmin) + // return op.Failed("امکان بررسی رکورد مورد نظر وجود ندارد"); + + // (long operatorId, UserType userType) = _authHelper.GetUserTypeWithId(); + + // entity.Confirm(operatorId, userType); + + // _employeeDocumentsRepository.SaveChanges(); + // CheckEmployeeDocumentsConfirmation(entity.EmployeeDocumentId); + + // MoveDocumentItemFile(entity.MediaId, + // $"Confirmed/{entity.EmployeeDocuments.WorkshopId}/{entity.EmployeeDocuments.EmployeeId}"); + // return op.Succcedded(); + + + //} + + ///// + ///// رد یکی از مدارک توسط چکر + ///// + //public OperationResult RejectDocumentItem(RejectDocumentItem cmd) + //{ + // OperationResult op = new(); + // var entity = _employeeDocumentItemRepository.GetWithEmployeeDocumentsByItemId(cmd.EmployeeDocumentItemId); + // if (entity == null) + // { + // return op.Failed("رکورد مورد نظر یافت نشد"); + // } + + // if (string.IsNullOrWhiteSpace(cmd.Message)) + // return op.Failed("لطفا علت رد درخواست را پر کنید"); + + // (long operatorId, UserType userType) = _authHelper.GetUserTypeWithId(); + + // if (entity.DocumentStatus != DocumentStatus.SubmittedByAdmin) + // return op.Failed("امکان بررسی رکورد مورد نظر وجود ندارد"); + + // entity.Reject(operatorId, cmd.Message, userType); + // _employeeDocumentsRepository.SaveChanges(); + + // CheckEmployeeDocumentsConfirmation(entity.EmployeeDocumentId); + + // MoveDocumentItemFile(entity.MediaId, $"Rejected/{entity.EmployeeDocuments.WorkshopId}/{entity.EmployeeDocuments.EmployeeId}"); + + + // return op.Succcedded(); + + + //} + + #endregion + + } + +} + + diff --git a/CompanyManagment.EFCore/CompanyContext.cs b/CompanyManagment.EFCore/CompanyContext.cs index 3729c2c8..2b767eda 100644 --- a/CompanyManagment.EFCore/CompanyContext.cs +++ b/CompanyManagment.EFCore/CompanyContext.cs @@ -26,6 +26,8 @@ using Company.Domain.EmployeeAgg; using Company.Domain.EmployeeBankInformationAgg; using Company.Domain.EmployeeChildrenAgg; using Company.Domain.EmployeeComputeOptionsAgg; +using Company.Domain.EmployeeDocumentItemAgg; +using Company.Domain.EmployeeDocumentsAgg; using Company.Domain.EmployeeInsuranceRecordAgg; using Company.Domain.EmployeeInsurancListDataAgg; using Company.Domain.EmployerAccountAgg; @@ -170,6 +172,9 @@ public class CompanyContext : DbContext #region Pooya + public DbSet EmployeeDocumentItems { get; set; } + public DbSet EmployeeDocuments { get; set; } + public DbSet WorkshopSubAccounts { get; set; } public DbSet Banks { get; set; } diff --git a/CompanyManagment.EFCore/Mapping/EmployeeDocumentItemMapping.cs b/CompanyManagment.EFCore/Mapping/EmployeeDocumentItemMapping.cs new file mode 100644 index 00000000..47a9bce6 --- /dev/null +++ b/CompanyManagment.EFCore/Mapping/EmployeeDocumentItemMapping.cs @@ -0,0 +1,40 @@ +using Company.Domain.EmployeeDocumentItemAgg; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace CompanyManagment.EFCore.Mapping +{ + public class EmployeeDocumentItemMapping:IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.ToTable("EmployeeDocumentItems"); + builder.HasKey(x => x.id); + builder.Property(x => x.DocumentLabel).HasConversion().HasMaxLength(31); + builder.Property(x => x.EmployeeDocumentId).IsRequired(); + builder.Property(x => x.DocumentStatus).HasConversion().HasMaxLength(20); + builder.Property(x => x.UploaderId).IsRequired(); + builder.Property(x => x.RejectionReason).HasMaxLength(150); + builder.Property(x => x.ReviewedById).HasMaxLength(120); + builder.Property(x => x.UploaderType).HasConversion().HasMaxLength(20).IsRequired(); + builder.Property(x => x.EmployeeDocumentsAdminViewId).IsRequired(false); + + builder.HasOne(x => x.EmployeeDocuments).WithMany(x => x.EmployeeDocumentItemCollection) + .HasForeignKey(x => x.EmployeeDocumentId); + + builder.HasOne(x => x.EmployeeDocumentsAdminSelection).WithMany(x => x.SelectedEmployeeDocumentItems) + .HasForeignKey(x => x.EmployeeDocumentsAdminViewId).IsRequired(false); + + builder.OwnsMany(x => x.ItemLogs, opt => + { + opt.ToTable("EmployeeDocumentItemLogs"); + opt.HasKey(x => x.id); + opt.Property(x => x.AdminMessage).HasMaxLength(500); + opt.Property(x => x.OperationType).HasConversion().HasMaxLength(25); + opt.Property(x => x.OperatorType).HasConversion().HasMaxLength(20); + opt.WithOwner(x => x.EmployeeDocumentItem).HasForeignKey(x => x.EmployeeDocumentItemId); + }); + + } + } +} diff --git a/CompanyManagment.EFCore/Mapping/EmployeeDocumentsAdminSelectionMapping.cs b/CompanyManagment.EFCore/Mapping/EmployeeDocumentsAdminSelectionMapping.cs new file mode 100644 index 00000000..65607b51 --- /dev/null +++ b/CompanyManagment.EFCore/Mapping/EmployeeDocumentsAdminSelectionMapping.cs @@ -0,0 +1,19 @@ + +using Company.Domain.EmployeeDocumentsAdminSelectionAgg; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace CompanyManagment.EFCore.Mapping +{ + public class EmployeeDocumentsAdminSelectionMapping : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.ToTable("EmployeeDocumentsAdminSelection"); + builder.HasKey(x => x.id); + + builder.HasMany(x => x.SelectedEmployeeDocumentItems).WithOne(x => x.EmployeeDocumentsAdminSelection) + .HasForeignKey(x => x.EmployeeDocumentsAdminViewId); + } + } +} diff --git a/CompanyManagment.EFCore/Mapping/EmployeeDocumentsMapping.cs b/CompanyManagment.EFCore/Mapping/EmployeeDocumentsMapping.cs new file mode 100644 index 00000000..135cde59 --- /dev/null +++ b/CompanyManagment.EFCore/Mapping/EmployeeDocumentsMapping.cs @@ -0,0 +1,26 @@ +using Company.Domain.EmployeeDocumentsAgg; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace CompanyManagment.EFCore.Mapping +{ + public class EmployeeDocumentsMapping : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + builder.ToTable("EmployeeDocuments"); + builder.HasKey(x => x.id); + + builder.Property(x => x.Gender).HasMaxLength(10).IsRequired(); + + builder.HasOne(x => x.Employee).WithMany(x => x.EmployeeDocuments) + .HasForeignKey(x => x.EmployeeId); + + builder.HasMany(x => x.EmployeeDocumentItemCollection).WithOne(x => x.EmployeeDocuments) + .HasForeignKey(x=>x.EmployeeDocumentId); + + + //builder.Navigation(x => x.EmployeeDocumentCollection).EnableLazyLoading(); + } + } +} diff --git a/CompanyManagment.EFCore/Mapping/EmployeeMapping.cs b/CompanyManagment.EFCore/Mapping/EmployeeMapping.cs index bae0c910..53e2fc88 100644 --- a/CompanyManagment.EFCore/Mapping/EmployeeMapping.cs +++ b/CompanyManagment.EFCore/Mapping/EmployeeMapping.cs @@ -74,9 +74,12 @@ public class EmployeeMapping : IEntityTypeConfiguration .WithOne(x => x.Employee) .HasForeignKey(x => x.EmployeeId); - #region Pooya + #region Pooya + builder.HasMany(x => x.EmployeeDocuments) + .WithOne(x => x.Employee) + .HasForeignKey(x => x.EmployeeId); - builder.HasMany(x => x.EmployeeBankInformationList).WithOne(x => x.Employee) + builder.HasMany(x => x.EmployeeBankInformationList).WithOne(x => x.Employee) .HasForeignKey(x => x.EmployeeId); builder.Ignore(x => x.FullName); diff --git a/CompanyManagment.EFCore/Migrations/20250217173745_employee Document.Designer.cs b/CompanyManagment.EFCore/Migrations/20250217173745_employee Document.Designer.cs new file mode 100644 index 00000000..cf05eb84 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250217173745_employee Document.Designer.cs @@ -0,0 +1,8751 @@ +// +using System; +using CompanyManagment.EFCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + [DbContext(typeof(CompanyContext))] + [Migration("20250217173745_employee Document")] + partial class employeeDocument + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Company.Domain.AndroidApkVersionAgg.AndroidApkVersion", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Path") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("VersionCode") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("VersionName") + .HasMaxLength(35) + .HasColumnType("nvarchar(35)"); + + b.HasKey("id"); + + b.ToTable("AndroidApkVersions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BankAgg.Bank", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankLogoMediaId") + .HasColumnType("bigint"); + + b.Property("BankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Banks", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BillAgg.EntityBill", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Appointed") + .HasColumnType("nvarchar(max)"); + + b.Property("Contact") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("ProcessingStage") + .HasColumnType("nvarchar(max)"); + + b.Property("SubjectBill") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Bill", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardChairman") + .HasColumnType("nvarchar(max)"); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("Branch") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DisputeResolutionPetitionDate") + .HasColumnType("datetime2"); + + b.Property("ExpertReport") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Boards", (string)null); + }); + + modelBuilder.Entity("Company.Domain.BoardType.BoardType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("BoardTypes", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Chapter") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("Subtitle_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("Subtitle_Id"); + + b.ToTable("TextManager_Chapter", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AbsenceDeduction") + .HasColumnType("float"); + + b.Property("AbsencePeriod") + .HasColumnType("float"); + + b.Property("AbsenceValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ArchiveCode") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("AverageHoursPerDay") + .HasColumnType("float"); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ConsumableItems") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreditLeaves") + .HasColumnType("float"); + + b.Property("DateOfBirth") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("EmployeeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FathersName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("FridayWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRollCall") + .HasColumnType("bit"); + + b.Property("HousingAllowance") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LeaveCheckout") + .HasColumnType("bit"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MissionPay") + .HasColumnType("float"); + + b.Property("Month") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightworkPay") + .HasColumnType("float"); + + b.Property("OverNightWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OverTimeWorkValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OvertimePay") + .HasColumnType("float"); + + b.Property("PersonnelCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("RotatingShiftValue") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("Signature") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("SumOfWorkingDays") + .HasMaxLength(6) + .HasColumnType("nvarchar(6)"); + + b.Property("TaxDeducation") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("TotalDayOfBunosesCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDayOfLeaveCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDayOfYearsCompute") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TotalDeductions") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkingHoursId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(70) + .HasColumnType("nvarchar(70)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("YearsPay") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("Checkouts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ClassifiedSalaryAgg.ClassifiedSalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Group1") + .HasColumnType("float"); + + b.Property("Group10") + .HasColumnType("float"); + + b.Property("Group11") + .HasColumnType("float"); + + b.Property("Group12") + .HasColumnType("float"); + + b.Property("Group13") + .HasColumnType("float"); + + b.Property("Group14") + .HasColumnType("float"); + + b.Property("Group15") + .HasColumnType("float"); + + b.Property("Group16") + .HasColumnType("float"); + + b.Property("Group17") + .HasColumnType("float"); + + b.Property("Group18") + .HasColumnType("float"); + + b.Property("Group19") + .HasColumnType("float"); + + b.Property("Group2") + .HasColumnType("float"); + + b.Property("Group20") + .HasColumnType("float"); + + b.Property("Group3") + .HasColumnType("float"); + + b.Property("Group4") + .HasColumnType("float"); + + b.Property("Group5") + .HasColumnType("float"); + + b.Property("Group6") + .HasColumnType("float"); + + b.Property("Group7") + .HasColumnType("float"); + + b.Property("Group8") + .HasColumnType("float"); + + b.Property("Group9") + .HasColumnType("float"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("ClassifiedSalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("WorkshopId", "EmployeeId"); + + b.HasIndex("EmployeeId"); + + b.ToTable("ClientWorkshopEmployee", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Contact2Agg.EntityContact", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NameContact") + .HasColumnType("nvarchar(max)"); + + b.Property("Signature") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Contact", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ArchiveCode") + .HasColumnType("int"); + + b.Property("BlockTimes") + .HasColumnType("int"); + + b.Property("City") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsBlock") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("State") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SureName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Zone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("PersonalContractingParties", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AgreementSalary") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ArchiveCode") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ConsumableItems") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContarctStart") + .HasColumnType("datetime2"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ContractPeriod") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ContractType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayliWage") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.Property("FamilyAllowance") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("GetWorkDate") + .HasColumnType("datetime2"); + + b.Property("HousingAllowance") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IsActiveString") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("JobType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobTypeId") + .HasColumnType("bigint"); + + b.Property("MandatoryHoursid") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("SetContractDate") + .HasColumnType("datetime2"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("WorkingHoursWeekly") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopAddress1") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopIds") + .HasColumnType("bigint"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("EmployerId"); + + b.HasIndex("JobTypeId"); + + b.HasIndex("MandatoryHoursid"); + + b.HasIndex("WorkshopIds"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("Contracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.Property("PersonalContractingPartyId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("PersonalContractingPartyId", "AccountId"); + + b.ToTable("ContractingPartyAccount", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobGuildId") + .HasColumnType("bigint"); + + b.Property("EquivalentRialOver") + .HasColumnType("bigint"); + + b.Property("EquivalentRialUnder") + .HasColumnType("bigint"); + + b.Property("SalaryRatioOver") + .HasColumnType("float"); + + b.Property("SalaryRatioUnder") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("CrossJobGuildId"); + + b.ToTable("CrossJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EconomicCode") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("CrossJobGuilds", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CrossJobId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("CrossJobId"); + + b.HasIndex("JobId"); + + b.ToTable("CrossJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckouts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPay") + .HasColumnType("float"); + + b.Property("BonusesPay") + .HasColumnType("float"); + + b.Property("ContractEnd") + .HasColumnType("datetime2"); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ContractStart") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EarlyExitDeduction") + .HasColumnType("float"); + + b.Property("EmployeeFName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeLName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FamilyAllowance") + .HasColumnType("float"); + + b.Property("FineAbsenceDeduction") + .HasColumnType("float"); + + b.Property("FineDeduction") + .HasColumnType("float"); + + b.Property("FridayPay") + .HasColumnType("float"); + + b.Property("InstallmentDeduction") + .HasColumnType("float"); + + b.Property("InsuranceDeduction") + .HasColumnType("float"); + + b.Property("LateToWorkDeduction") + .HasColumnType("float"); + + b.Property("LeavePay") + .HasColumnType("float"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthInt") + .HasColumnType("int"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NightWorkPay") + .HasColumnType("float"); + + b.Property("OverTimePay") + .HasColumnType("float"); + + b.Property("RewardPay") + .HasColumnType("float"); + + b.Property("SalaryAidDeduction") + .HasColumnType("float"); + + b.Property("ShiftPay") + .HasColumnType("float"); + + b.Property("SumOfWorkingDays") + .HasColumnType("nvarchar(max)"); + + b.Property("TaxDeduction") + .HasColumnType("float"); + + b.Property("TotalClaims") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalDeductions") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPayment") + .HasColumnType("float"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearInt") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("CustomizeCheckoutTemps", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopGroupSettingId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChanged") + .HasColumnType("bit"); + + b.Property("IsShiftChanged") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopGroupSettingId"); + + b.ToTable("CustomizeWorkshopEmployeeSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeWorkshopSettingId") + .HasColumnType("bigint"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("GroupName") + .HasMaxLength(120) + .HasColumnType("nvarchar(120)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("IsSettingChange") + .HasColumnType("bit"); + + b.Property("IsShiftChange") + .HasColumnType("bit"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MainGroup") + .HasColumnType("bit"); + + b.Property("Salary") + .HasColumnType("float"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("CustomizeWorkshopSettingId"); + + b.ToTable("CustomizeWorkshopGroupSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYearsPayInEndOfYear") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("BonusesPaysInEndOfMonth") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Currency") + .HasColumnType("int"); + + b.Property("EndTimeOffSet") + .HasColumnType("time"); + + b.Property("FridayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("HolidayWork") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("LeavePermittedDays") + .HasColumnType("int"); + + b.Property("MaxMonthDays") + .HasColumnType("int"); + + b.Property("OverTimeThresholdMinute") + .HasColumnType("int"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopShiftStatus") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("CustomizeWorkshopSettings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("EndDateGr") + .HasColumnType("datetime2"); + + b.Property("StartDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("StartDateGr") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("DateSalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryItemAgg.DateSalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateSalaryId") + .HasColumnType("bigint"); + + b.Property("Percent") + .HasColumnType("float"); + + b.Property("PercentageId") + .HasColumnType("bigint"); + + b.Property("Salary") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("DateSalaryId"); + + b.HasIndex("PercentageId"); + + b.ToTable("DateSalaryItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAccountAgg.EmployeeAccount", b => + { + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("EmployeeId", "AccountId"); + + b.ToTable("EmployeeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("BankBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BankCardNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FieldOfStudy") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByMonth") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("InsuranceHistoryByYear") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("LevelOfEducation") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MilitaryService") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NumberOfChildren") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("Employees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeBankInformationAgg.EmployeeBankInformation", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankAccountNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("BankId") + .HasColumnType("bigint"); + + b.Property("CardNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IsDefault") + .HasColumnType("bit"); + + b.Property("ShebaNumber") + .HasMaxLength(26) + .HasColumnType("nvarchar(26)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BankId"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeBankInformationSet", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeChildrenAgg.EmployeeChildren", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ParentNationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.ToTable("EmployeeChildren", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeComputeOptionsAgg.EmployeeComputeOptions", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("EmployeeComputeOptions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmationDateTime") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DocumentLabel") + .IsRequired() + .HasMaxLength(31) + .HasColumnType("nvarchar(31)"); + + b.Property("DocumentStatus") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("EmployeeDocumentId") + .HasColumnType("bigint"); + + b.Property("EmployeeDocumentsAdminViewId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.Property("RejectionReason") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("ReviewedById") + .HasMaxLength(120) + .HasColumnType("bigint"); + + b.Property("UploaderId") + .HasColumnType("bigint"); + + b.Property("UploaderType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeDocumentId"); + + b.HasIndex("EmployeeDocumentsAdminViewId"); + + b.ToTable("EmployeeDocumentItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("EmployeeDocumentsAdminSelection", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRejectedItems") + .HasColumnType("bit"); + + b.Property("IsConfirmed") + .HasColumnType("bit"); + + b.Property("IsSentToChecker") + .HasColumnType("bit"); + + b.Property("RequiredItemsSubmittedByClient") + .HasColumnType("bit"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("EmployeeDocuments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsurancListDataAgg.EmployeeInsurancListData", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseYears") + .HasColumnType("float"); + + b.Property("BenefitsIncludedContinuous") + .HasColumnType("float"); + + b.Property("BenefitsIncludedNonContinuous") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyWage") + .HasColumnType("float"); + + b.Property("DailyWagePlusBaseYears") + .HasColumnType("float"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("InsuranceListId") + .HasColumnType("bigint"); + + b.Property("InsuranceShare") + .HasColumnType("float"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2(7)"); + + b.Property("MarriedAllowance") + .HasColumnType("float"); + + b.Property("MonthlyBenefits") + .HasColumnType("float"); + + b.Property("MonthlyBenefitsIncluded") + .HasColumnType("float"); + + b.Property("MonthlySalary") + .HasColumnType("float"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkingDays") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("EmployeeInsurancListData", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfEnd") + .HasColumnType("datetime2"); + + b.Property("DateOfStart") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkShopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkShopId"); + + b.ToTable("EmployeeInsuranceRecord", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployerAccountAgg.EmployerAccount", b => + { + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.HasKey("EmployerId", "AccountId"); + + b.ToTable("EmployerAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Evidences", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EvidenceDetail.EvidenceDetail", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Evidence_Id") + .HasColumnType("bigint"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("Evidence_Id"); + + b.ToTable("EvidenceDetails", (string)null); + }); + + modelBuilder.Entity("Company.Domain.File1.File1", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ArchiveNo") + .HasColumnType("bigint"); + + b.Property("Client") + .HasColumnType("int"); + + b.Property("ClientVisitDate") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FileClass") + .HasColumnType("nvarchar(max)"); + + b.Property("HasMandate") + .HasColumnType("int"); + + b.Property("ProceederReference") + .HasColumnType("nvarchar(max)"); + + b.Property("Reqester") + .HasColumnType("bigint"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Summoned") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Files", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileAlert.FileAlert", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AdditionalDeadline") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FileState_Id") + .HasColumnType("bigint"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("FileState_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("File_Alerts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileAndFileEmployerAgg.FileAndFileEmployer", b => + { + b.Property("FileId") + .HasColumnType("bigint"); + + b.Property("FileEmployerId") + .HasColumnType("bigint"); + + b.HasKey("FileId", "FileEmployerId"); + + b.HasIndex("FileEmployerId"); + + b.ToTable("FileAndFileEmployers", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileEmployeeAgg.FileEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FatherName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FieldOfStudy") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LevelOfEducation") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Phone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("FileEmployee", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("FieldOfStudy") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceWorkshopCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("LegalName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LevelOfEducation") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("MaritalStatus") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("NationalId") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OfficePhone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("Phone") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("RegisterId") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("RepresentativeFullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("RepresentativeId"); + + b.ToTable("FileEmployer", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FileTiming_Id") + .HasColumnType("bigint"); + + b.Property("State") + .HasColumnType("int"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("FileTiming_Id"); + + b.ToTable("File_States", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileTiming.FileTiming", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Deadline") + .HasColumnType("int"); + + b.Property("Tips") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("File_Timings", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FileTitle.FileTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("File_Titles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FinancialStatmentAgg.FinancialStatment", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.ToTable("FinancialStatments", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FinancialTransactionAgg.FinancialTransaction", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Balance") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Creditor") + .HasColumnType("float"); + + b.Property("Deptor") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(600) + .HasColumnType("nvarchar(600)"); + + b.Property("DescriptionOption") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FinancialStatementId") + .HasColumnType("bigint"); + + b.Property("MessageText") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("SentSms") + .HasColumnType("bit"); + + b.Property("SentSmsDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TdateGr") + .HasColumnType("datetime2"); + + b.Property("TypeOfTransaction") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("FinancialStatementId"); + + b.ToTable("FinancialTransactions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineAgg.Fine", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FineDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Fines", (string)null); + }); + + modelBuilder.Entity("Company.Domain.FineSubjectAgg.FineSubject", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("FineSubjects", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AnnualSalary") + .HasColumnType("float"); + + b.Property("BaseSalary") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("JobSalary") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("GroupPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanJobItemAgg.GroupPlanJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("GroupNo") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("GroupPlanId") + .HasColumnType("bigint"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("JobName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("GroupPlanId"); + + b.ToTable("GroupPlanJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("Holidays", (string)null); + }); + + modelBuilder.Entity("Company.Domain.HolidayItemAgg.HolidayItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("HolidayId") + .HasColumnType("bigint"); + + b.Property("HolidayYear") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("Holidaydate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("HolidayId"); + + b.ToTable("Holidayitems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("City") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ContractAmount") + .HasColumnType("float"); + + b.Property("ContractDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractDateGr") + .HasColumnType("datetime2"); + + b.Property("ContractEndFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractEndGr") + .HasColumnType("datetime2"); + + b.Property("ContractNo") + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("ContractStartFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ContractStartGr") + .HasColumnType("datetime2"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("ContractingPartyName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DailyCompenseation") + .HasColumnType("float"); + + b.Property("Description") + .HasMaxLength(10000) + .HasColumnType("nvarchar(max)"); + + b.Property("EmployeeManualCount") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExtensionNo") + .HasColumnType("int"); + + b.Property("HasValueAddedTax") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Obligation") + .HasColumnType("float"); + + b.Property("OfficialCompany") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("RepresentativeId") + .HasColumnType("bigint"); + + b.Property("RepresentativeName") + .HasMaxLength(80) + .HasColumnType("nvarchar(80)"); + + b.Property("Signature") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("State") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("TotalAmount") + .HasColumnType("float"); + + b.Property("TypeOfContract") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("ValueAddedTax") + .HasColumnType("float"); + + b.Property("WorkshopManualCount") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("id"); + + b.ToTable("InstitutionContracts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FnameLname") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("PhoneNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("PhoneType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Position") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SendSms") + .HasColumnType("bit"); + + b.HasKey("id"); + + b.HasIndex("InstitutionContractId"); + + b.ToTable("InstitutinContractContactInfo", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InstitutionPlanAgg.InstitutionPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseContractAmont") + .HasColumnType("float"); + + b.Property("CountPerson") + .HasColumnType("int"); + + b.Property("FinalContractAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("InstitutionPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EconomicCode") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("InsuranceJobTitle") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("InsuranceJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgreementNumber") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ListNumber") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId") + .IsUnique(); + + b.ToTable("InsuranceWorkshopInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployerStr") + .HasColumnType("nvarchar(max)"); + + b.Property("ListNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("Month") + .HasMaxLength(2) + .HasColumnType("int"); + + b.Property("WorkShopId") + .HasColumnType("bigint"); + + b.Property("WorkShopStr") + .HasColumnType("nvarchar(max)"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("WorkShopId"); + + b.ToTable("Insurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FatherName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Gender") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IdNumber") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("InsuranceCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalCode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("InsuranceEmployeeInformation", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("InsuranceJobItemId") + .HasColumnType("bigint"); + + b.HasKey("JobId", "InsuranceJobItemId"); + + b.HasIndex("InsuranceJobItemId"); + + b.ToTable("InsuranceJobAndJobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InsuranceJobId") + .HasColumnType("bigint"); + + b.Property("PercentageLessThan") + .HasColumnType("float"); + + b.Property("PercentageMoreThan") + .HasColumnType("float"); + + b.Property("SalaeyLessThan") + .HasColumnType("float"); + + b.Property("SalaryMoreThan") + .HasColumnType("float"); + + b.HasKey("id"); + + b.HasIndex("InsuranceJobId"); + + b.ToTable("InsuranceJobItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceListAgg.InsuranceList", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmSentlist") + .HasColumnType("bit"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DifficultJobsInsuranc") + .HasColumnType("float"); + + b.Property("EmployerShare") + .HasColumnType("float"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Included") + .HasColumnType("float"); + + b.Property("IncludedAndNotIncluded") + .HasColumnType("float"); + + b.Property("InsuredShare") + .HasColumnType("float"); + + b.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("SumOfBaseYears") + .HasColumnType("float"); + + b.Property("SumOfBenefitsIncluded") + .HasColumnType("float"); + + b.Property("SumOfDailyWage") + .HasColumnType("float"); + + b.Property("SumOfDailyWagePlusBaseYears") + .HasColumnType("float"); + + b.Property("SumOfEmployees") + .HasColumnType("int"); + + b.Property("SumOfMarriedAllowance") + .HasColumnType("float"); + + b.Property("SumOfSalaries") + .HasColumnType("float"); + + b.Property("SumOfWorkingDays") + .HasColumnType("int"); + + b.Property("UnEmploymentInsurance") + .HasColumnType("float"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("InsuranceLists", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.Property("InsurancListId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("InsurancListId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("InsuranceListWorkshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.InsuranceYearlySalaryAgg.InsuranceYearlySalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Group1") + .HasColumnType("float"); + + b.Property("Group10") + .HasColumnType("float"); + + b.Property("Group11") + .HasColumnType("float"); + + b.Property("Group12") + .HasColumnType("float"); + + b.Property("Group13") + .HasColumnType("float"); + + b.Property("Group14") + .HasColumnType("float"); + + b.Property("Group15") + .HasColumnType("float"); + + b.Property("Group16") + .HasColumnType("float"); + + b.Property("Group17") + .HasColumnType("float"); + + b.Property("Group18") + .HasColumnType("float"); + + b.Property("Group19") + .HasColumnType("float"); + + b.Property("Group2") + .HasColumnType("float"); + + b.Property("Group20") + .HasColumnType("float"); + + b.Property("Group21") + .HasColumnType("float"); + + b.Property("Group22") + .HasColumnType("float"); + + b.Property("Group23") + .HasColumnType("float"); + + b.Property("Group24") + .HasColumnType("float"); + + b.Property("Group25") + .HasColumnType("float"); + + b.Property("Group26") + .HasColumnType("float"); + + b.Property("Group27") + .HasColumnType("float"); + + b.Property("Group28") + .HasColumnType("float"); + + b.Property("Group29") + .HasColumnType("float"); + + b.Property("Group3") + .HasColumnType("float"); + + b.Property("Group30") + .HasColumnType("float"); + + b.Property("Group4") + .HasColumnType("float"); + + b.Property("Group5") + .HasColumnType("float"); + + b.Property("Group6") + .HasColumnType("float"); + + b.Property("Group7") + .HasColumnType("float"); + + b.Property("Group8") + .HasColumnType("float"); + + b.Property("Group9") + .HasColumnType("float"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("InsuranceYearlySalaries", (string)null); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("JobCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("Jobs", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeaveAgg.Leave", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Decription") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndLeave") + .HasColumnType("datetime2"); + + b.Property("IsAccepted") + .HasColumnType("bit"); + + b.Property("LeaveHourses") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("PaidLeaveType") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("StartLeave") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("Leave", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWork", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("IncludeStatus") + .HasColumnType("bit"); + + b.Property("JobId") + .HasColumnType("bigint"); + + b.Property("LeftWorkDate") + .HasColumnType("datetime2(7)"); + + b.Property("StartWorkDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("LeftWorkInsurances", (string)null); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("AmountPerMonth") + .HasColumnType("float"); + + b.Property("Count") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GetRounded") + .HasColumnType("bit"); + + b.Property("LoanGrantDate") + .HasColumnType("datetime2"); + + b.Property("StartInstallmentPayment") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Loan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Aban") + .HasColumnType("float"); + + b.Property("AbanFridays") + .HasColumnType("int"); + + b.Property("AbanHolidays") + .HasColumnType("int"); + + b.Property("AbanMonadatoryDays") + .HasColumnType("int"); + + b.Property("Azar") + .HasColumnType("float"); + + b.Property("AzarFridays") + .HasColumnType("int"); + + b.Property("AzarHolidays") + .HasColumnType("int"); + + b.Property("AzarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Bahman") + .HasColumnType("float"); + + b.Property("BahmanFridays") + .HasColumnType("int"); + + b.Property("BahmanHolidays") + .HasColumnType("int"); + + b.Property("BahmanMonadatoryDays") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Dey") + .HasColumnType("float"); + + b.Property("DeyFridays") + .HasColumnType("int"); + + b.Property("DeyHolidays") + .HasColumnType("int"); + + b.Property("DeyMonadatoryDays") + .HasColumnType("int"); + + b.Property("Esfand") + .HasColumnType("float"); + + b.Property("EsfandFridays") + .HasColumnType("int"); + + b.Property("EsfandHolidays") + .HasColumnType("int"); + + b.Property("EsfandMonadatoryDays") + .HasColumnType("int"); + + b.Property("Farvardin") + .HasColumnType("float"); + + b.Property("FarvardinFridays") + .HasColumnType("int"); + + b.Property("FarvardinHolidays") + .HasColumnType("int"); + + b.Property("FarvardinMonadatoryDays") + .HasColumnType("int"); + + b.Property("Khordad") + .HasColumnType("float"); + + b.Property("KhordadFridays") + .HasColumnType("int"); + + b.Property("KhordadHolidays") + .HasColumnType("int"); + + b.Property("KhordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mehr") + .HasColumnType("float"); + + b.Property("MehrFridays") + .HasColumnType("int"); + + b.Property("MehrHolidays") + .HasColumnType("int"); + + b.Property("MehrMonadatoryDays") + .HasColumnType("int"); + + b.Property("Mordad") + .HasColumnType("float"); + + b.Property("MordadFridays") + .HasColumnType("int"); + + b.Property("MordadHolidays") + .HasColumnType("int"); + + b.Property("MordadMonadatoryDays") + .HasColumnType("int"); + + b.Property("Ordibehesht") + .HasColumnType("float"); + + b.Property("OrdibeheshtFridays") + .HasColumnType("int"); + + b.Property("OrdibeheshtHolidays") + .HasColumnType("int"); + + b.Property("OrdibeheshtMonadatoryDays") + .HasColumnType("int"); + + b.Property("Shahrivar") + .HasColumnType("float"); + + b.Property("ShahrivarFridays") + .HasColumnType("int"); + + b.Property("ShahrivarHolidays") + .HasColumnType("int"); + + b.Property("ShahrivarMonadatoryDays") + .HasColumnType("int"); + + b.Property("Tir") + .HasColumnType("float"); + + b.Property("TirFridays") + .HasColumnType("int"); + + b.Property("TirHolidays") + .HasColumnType("int"); + + b.Property("TirMonadatoryDays") + .HasColumnType("int"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("MandatoryHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("MasterName") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Master_Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("MasterPetition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("MasterPetition_Id"); + + b.ToTable("Master_WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NameSubModule") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.ToTable("TextManager_Module", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.Property("TextManagerId") + .HasColumnType("bigint"); + + b.Property("ModuleId") + .HasColumnType("bigint"); + + b.HasKey("TextManagerId", "ModuleId"); + + b.HasIndex("ModuleId"); + + b.ToTable("TextManager_ModuleTextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.ToTable("TextManager_OriginalTitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Month") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b.HasKey("id"); + + b.ToTable("PaymentToEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BankCheckNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CashDescription") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DestinationBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("DestinationBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PayDate") + .HasColumnType("datetime2"); + + b.Property("Payment") + .HasColumnType("float"); + + b.Property("PaymentMetod") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("PaymentTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentToEmployeeId") + .HasColumnType("bigint"); + + b.Property("SourceBankAccountNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("SourceBankName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeDestinationBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TypeSourceBankNumber") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("PaymentToEmployeeId"); + + b.ToTable("PaymentToEmployeeItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Day") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2(7)"); + + b.Property("PaidAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("RemainingAmount") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.Property("ToDate") + .HasColumnType("datetime2(7)"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("PenaltyTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Percent") + .HasColumnType("float"); + + b.HasKey("id"); + + b.ToTable("Percentages", (string)null); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("PersonnelCode") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("PersonnelCodes", (string)null); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BoardType_Id") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("File_Id") + .HasColumnType("bigint"); + + b.Property("NotificationPetitionDate") + .HasColumnType("datetime2"); + + b.Property("PetitionIssuanceDate") + .HasColumnType("datetime2"); + + b.Property("PetitionNo") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenalty") + .HasColumnType("nvarchar(max)"); + + b.Property("TotalPenaltyTitles") + .HasColumnType("nvarchar(max)"); + + b.Property("WorkHistoryDescreption") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("BoardType_Id"); + + b.HasIndex("File_Id"); + + b.ToTable("Petitions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Board_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Time") + .HasColumnType("nvarchar(max)"); + + b.HasKey("id"); + + b.HasIndex("Board_Id"); + + b.ToTable("ProceedingSessions", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgentPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("FullName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsLegal") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("LegalName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("NationalId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Phone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("RegisterId") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.HasKey("id"); + + b.ToTable("Representative", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RewardAgg.Reward", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("ntext"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("GrantDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RewardedByAccountId") + .HasColumnType("bigint"); + + b.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("Rewards", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallAgg.RollCall", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("Month") + .HasColumnType("int"); + + b.Property("RollCallModifyType") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ShiftDate") + .HasColumnType("datetime2"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("Year") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCall", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("FName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("HasChangedName") + .HasColumnType("bit"); + + b.Property("HasUploadedImage") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("LName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("RollCallEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("RollCallEmployeeId") + .HasColumnType("bigint"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.HasKey("id"); + + b.HasIndex("RollCallEmployeeId"); + + b.ToTable("RollCallEmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.RollCallPlanAgg.RollCallPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BaseAmont") + .HasColumnType("float"); + + b.Property("FinalAmont") + .HasColumnType("float"); + + b.Property("IncreasePercentage") + .HasColumnType("float"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.HasKey("id"); + + b.ToTable("RollCallPlans", (string)null); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutAmount") + .HasColumnType("float"); + + b.Property("CustomizeCheckoutServiceEnd") + .HasColumnType("datetime2"); + + b.Property("CustomizeCheckoutServiceStart") + .HasColumnType("datetime2"); + + b.Property("Duration") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("EndService") + .HasColumnType("datetime2"); + + b.Property("HasCustomizeCheckoutService") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveString") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("MaxPersonValid") + .HasColumnType("int"); + + b.Property("ServiceType") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("StartService") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("AccountId"); + + b.ToTable("RollCallServices", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SalaryAidAgg.SalaryAid", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Amount") + .HasColumnType("float"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("SalaryAids", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SmsResultAgg.SmsResult", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractingPartyName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPatyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("InstitutionContractId") + .HasColumnType("bigint"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Mobile") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b.Property("Status") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b.Property("TypeOfSms") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("SmsResults", (string)null); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EntitySubtitleid") + .HasColumnType("bigint"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Subtitle") + .IsRequired() + .HasMaxLength(60) + .HasColumnType("nvarchar(60)"); + + b.HasKey("id"); + + b.HasIndex("EntitySubtitleid"); + + b.HasIndex("OriginalTitle_Id"); + + b.ToTable("TextManager_Subtitle", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxJobCategoryAgg.TaxJobCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("JobCategoryCode") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("JobCategoryName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.ToTable("TaxJobCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("BudgetLawExceptions") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("Country") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CurrencyType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("EmployeeName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("EmploymentLocationStatus") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("ExchangeRate") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("InsuranceBranch") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("JobCategoryCode") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("JobCategoryId") + .HasColumnType("bigint"); + + b.Property("JobTitle") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("PaymentType") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("RetirementDate") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("TaxExempt") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfEmployment") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("TypeOfInsurance") + .HasMaxLength(3) + .HasColumnType("nvarchar(3)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopName") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("id"); + + b.HasIndex("WorkshopId"); + + b.ToTable("TaxLeftWorkCategory", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("LeftWork") + .HasColumnType("datetime2"); + + b.Property("StartWork") + .HasColumnType("datetime2"); + + b.Property("TaxLeftWorkCategoryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("TaxLeftWorkCategoryId"); + + b.ToTable("TaxLeftWorkItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Chapter_Id") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("IsActiveString") + .HasColumnType("nvarchar(max)"); + + b.Property("NoteNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("NumberTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("OriginalTitle_Id") + .HasColumnType("bigint"); + + b.Property("Paragraph") + .HasColumnType("nvarchar(max)"); + + b.Property("SubjectTextManager") + .HasColumnType("nvarchar(max)"); + + b.Property("Subtitle_Id") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("TextManager_TextManager", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("FromDate") + .HasColumnType("datetime2"); + + b.Property("Petition_Id") + .HasColumnType("bigint"); + + b.Property("ToDate") + .HasColumnType("datetime2"); + + b.Property("WorkingHoursPerDay") + .HasColumnType("int"); + + b.Property("WorkingHoursPerWeek") + .HasColumnType("int"); + + b.HasKey("id"); + + b.HasIndex("Petition_Id"); + + b.ToTable("WorkHistories", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ContractId") + .HasColumnType("bigint"); + + b.Property("ContractNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("NumberOfFriday") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("NumberOfWorkingDays") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverNightWorkH") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("OverNightWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("OverTimeWorkH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("OverTimeWorkM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("TotalHoursesH") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("TotalHoursesM") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WeeklyWorkingTime") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.HasIndex("ContractId"); + + b.ToTable("WorkingHours", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start3") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursId"); + + b.ToTable("WorkingHoursItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("ShiftWork") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b.Property("WorkShopAddress2") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkingHoursTemp", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ComplexEnd") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("ComplexStart") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DayOfWork") + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b.Property("End1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("End2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("RestTime") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start1") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Start2") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("WeekNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("WorkingHoursTempId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkingHoursTempId"); + + b.ToTable("WorkingHoursTempItem", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("AccountId") + .HasColumnType("bigint"); + + b.Property("ContractAndCheckout") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Insurance") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("IsActiveSting") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("Tax") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.HasKey("WorkshopId", "AccountId"); + + b.ToTable("WorkshopeAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("AddBonusesPay") + .HasColumnType("bit"); + + b.Property("AddLeavePay") + .HasColumnType("bit"); + + b.Property("AddYearsPay") + .HasColumnType("bit"); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AgreementNumber") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ArchiveCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("BonusesOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("City") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ComputeOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractTerm") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("FixedSalary") + .HasColumnType("bit"); + + b.Property("HasRollCallFreeVip") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("InsuranceCode") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InsuranceJobId") + .HasColumnType("bigint"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsActiveString") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IsClassified") + .HasColumnType("bit"); + + b.Property("IsOldContract") + .HasColumnType("bit"); + + b.Property("Population") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b.Property("State") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TotalPaymentHide") + .HasColumnType("bit"); + + b.Property("TypeOfContract") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfInsuranceSend") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TypeOfOwnership") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("WorkshopFullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopHolidayWorking") + .HasColumnType("bit"); + + b.Property("WorkshopName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("WorkshopSureName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("YearsOptions") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Workshops", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("EmployerId") + .HasColumnType("bigint"); + + b.HasKey("WorkshopId", "EmployerId"); + + b.HasIndex("EmployerId"); + + b.ToTable("WorkshopeEmployers", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Designer") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("DesignerPhone") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ExecutionDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("ExecutionDateGr") + .HasColumnType("datetime2"); + + b.Property("IncludingDateFa") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IncludingDateGr") + .HasColumnType("datetime2"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.ToTable("WorkshopPlan", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeFullName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("WorkshopPlanId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("WorkshopPlanId"); + + b.ToTable("WorkshopPlanEmployees", (string)null); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.Property("SubAccountId") + .HasColumnType("bigint"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.Property("IsActive") + .HasMaxLength(5) + .HasColumnType("int"); + + b.HasKey("SubAccountId", "WorkshopId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("WorkshopSubAccounts", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConnectionId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EndDate") + .HasColumnType("datetime2"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.Property("Year") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("id"); + + b.ToTable("YearlySalariess", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ItemName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ItemValue") + .HasColumnType("float"); + + b.Property("ParentConnectionId") + .HasColumnType("int"); + + b.Property("ValueType") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("YearlySalaryId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("YearlySalaryId"); + + b.ToTable("YearlyItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.YearlysSalaryTitleAgg.YearlySalaryTitle", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("Title1") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title10") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title2") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title3") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title4") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title5") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title6") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title7") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title8") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title9") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("id"); + + b.ToTable("YearlySalaryTitles", (string)null); + }); + + modelBuilder.Entity("Company.Domain.ZoneAgg.Zone", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CityId") + .HasColumnType("int"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ZoneName") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("id"); + + b.ToTable("Zones", (string)null); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("Address") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("AgentPhone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ContractingPartyId") + .HasColumnType("bigint"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DateOfBirth") + .HasColumnType("datetime2"); + + b.Property("DateOfIssue") + .HasColumnType("datetime2"); + + b.Property("EmployerLName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("EmployerNo") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EservicePassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EserviceUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FatherName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("FullName") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Gender") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("IdNumber") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsLegal") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("LName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("MclsPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MclsUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("NationalId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Nationalcode") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Nationality") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Phone") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("PlaceOfIssue") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("RegisterId") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("SanaPassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SanaUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficeUserName") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TaxOfficepassword") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("id"); + + b.HasIndex("ContractingPartyId"); + + b.ToTable("Employers", (string)null); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.Property("EmployersListid") + .HasColumnType("bigint"); + + b.Property("WorkshopsListid") + .HasColumnType("bigint"); + + b.HasKey("EmployersListid", "WorkshopsListid"); + + b.HasIndex("WorkshopsListid"); + + b.ToTable("EmployerWorkshop"); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("BoardsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("BoardsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ChapterAgg.EntityChapter", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", "EntitySubtitle") + .WithMany("Chapters") + .HasForeignKey("Subtitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntitySubtitle"); + }); + + modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Checkouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("ClientEmployeeWorkshopList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("ContractingParties") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("Contracts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("Contracts") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("ContractsList") + .HasForeignKey("JobTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.MandatoryHoursAgg.MandatoryHours", null) + .WithMany("Contracts") + .HasForeignKey("MandatoryHoursid"); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Contracts2") + .HasForeignKey("WorkshopIds") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("Contracts") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Employer"); + + b.Navigation("Job"); + + b.Navigation("Workshop"); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.ContractingPartyAccountAgg.ContractingPartyAccount", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "PersonalContractingParty") + .WithMany() + .HasForeignKey("PersonalContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PersonalContractingParty"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.HasOne("Company.Domain.CrossJobGuildAgg.CrossJobGuild", "CrossJobGuild") + .WithMany("CrossJobList") + .HasForeignKey("CrossJobGuildId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJobGuild"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobItemsAgg.CrossJobItems", b => + { + b.HasOne("Company.Domain.CrossJobAgg.CrossJob", "CrossJob") + .WithMany("CrossJobItemsList") + .HasForeignKey("CrossJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Job") + .WithMany("CrossJobItemsList") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CrossJob"); + + b.Navigation("Job"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutAgg.CustomizeCheckout", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("CustomizeCheckouts") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("CustomizeCheckouts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutAgg.ValueObjects.CustomizeCheckoutSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutid", "Id"); + + b1.ToTable("CustomizeCheckoutSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeCheckoutTempAgg.CustomizeCheckoutTemp", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempFine", "CheckoutFines", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("FineDateFa") + .HasMaxLength(12) + .HasColumnType("nvarchar(12)"); + + b1.Property("FineDateGr") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempFine"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempLoanInstallments", "CustomizeCheckoutLoanInstallments", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanAmount") + .HasMaxLength(30) + .HasColumnType("nvarchar(30)"); + + b1.Property("LoanRemaining") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempLoanInstallments"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempReward", "CustomizeCheckoutRewards", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("Description") + .HasColumnType("ntext"); + + b1.Property("GrantDate") + .HasColumnType("datetime2"); + + b1.Property("GrantDateFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("Title") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempReward"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.OwnsMany("Company.Domain.CustomizeCheckoutTempAgg.ValueObjects.CustomizeCheckoutTempSalaryAid", "CustomizeCheckoutSalaryAids", b1 => + { + b1.Property("CustomizeCheckoutTempid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("Amount") + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("SalaryAidDateTime") + .HasColumnType("datetime2"); + + b1.Property("SalaryAidDateTimeFa") + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b1.HasKey("CustomizeCheckoutTempid", "Id"); + + b1.ToTable("CustomizeCheckoutTempSalaryAid"); + + b1.WithOwner() + .HasForeignKey("CustomizeCheckoutTempid"); + }); + + b.Navigation("CheckoutFines"); + + b.Navigation("CustomizeCheckoutLoanInstallments"); + + b.Navigation("CustomizeCheckoutRewards"); + + b.Navigation("CustomizeCheckoutSalaryAids"); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettings", b => + { + b.HasOne("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", "CustomizeWorkshopGroupSettings") + .WithMany("CustomizeWorkshopEmployeeSettingsCollection") + .HasForeignKey("CustomizeWorkshopGroupSettingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities.CustomizeWorkshopEmployeeSettingsShift", "CustomizeWorkshopEmployeeSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("PreviousShiftThreshold") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopEmployeeSettingsId"); + + b1.ToTable("CustomizeWorkshopEmployeeSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopEmployeeSettings") + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + + b1.Navigation("CustomizeWorkshopEmployeeSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("BreakTimeType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("BreakTimeValue") + .HasColumnType("time"); + + b1.Property("HasBreakTimeValue") + .HasColumnType("bit"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid", "Id"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopEmployeeSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopEmployeeSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopEmployeeSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopEmployeeSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopEmployeeSettingsid"); + + b1.ToTable("CustomizeWorkshopEmployeeSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopEmployeeSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("BreakTime"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("CustomizeWorkshopEmployeeSettingsShifts"); + + b.Navigation("CustomizeWorkshopGroupSettings"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("IrregularShift"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.HasOne("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", "CustomizeWorkshopSettings") + .WithMany("CustomizeWorkshopGroupSettingsCollection") + .HasForeignKey("CustomizeWorkshopSettingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettingsShift", "CustomizeWorkshopGroupSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopGroupSettingsId"); + + b1.ToTable("CustomizeWorkshopGroupSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopGroupSettings") + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + + b1.Navigation("CustomizeWorkshopGroupSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BreakTime", "BreakTime", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("BreakTimeType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("BreakTimeValue") + .HasColumnType("time"); + + b1.Property("HasBreakTimeValue") + .HasColumnType("bit"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.CustomizeRotatingShift", "CustomizeRotatingShifts", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid", "Id"); + + b1.ToTable("CustomizeWorkshopGroupSettings_CustomizeRotatingShifts"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.IrregularShift", "IrregularShift", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.Property("WorkshopIrregularShifts") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopGroupSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopGroupSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopGroupSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopGroupSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopGroupSettingsid"); + + b1.ToTable("CustomizeWorkshopGroupSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopGroupSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("BreakTime"); + + b.Navigation("CustomizeRotatingShifts"); + + b.Navigation("CustomizeWorkshopGroupSettingsShifts"); + + b.Navigation("CustomizeWorkshopSettings"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("IrregularShift"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithOne("CustomizeWorkshopSettings") + .HasForeignKey("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", "WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettingsShift", "CustomizeWorkshopSettingsShifts", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b1.Property("EndTime") + .HasColumnType("time"); + + b1.Property("Placement") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.Property("StartTime") + .HasColumnType("time"); + + b1.HasKey("id"); + + b1.HasIndex("CustomizeWorkshopSettingsId"); + + b1.ToTable("CustomizeWorkshopSettingsShifts", (string)null); + + b1.WithOwner("CustomizeWorkshopSettings") + .HasForeignKey("CustomizeWorkshopSettingsId"); + + b1.Navigation("CustomizeWorkshopSettings"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BaseYearsPay", "BaseYearsPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("BaseYearsPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_BaseYearsPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BaseYearsPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BaseYearsPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.BonusesPay", "BonusesPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("BonusesPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_BonusesPayType"); + + b1.Property("PaymentType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("BonusesPay_PaymentType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("BonusesPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExit", "EarlyExit", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("EarlyExitType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("EarlyExit_EarlyExitType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.EarlyExitTimeFine", "EarlyExitTimeFines", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("EarlyExitTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("EarlyExitTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_EarlyExitTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("EarlyExitTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FamilyAllowance", "FamilyAllowance", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FamilyAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FamilyAllowance_FamilyAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FamilyAllowance_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDeduction", "FineAbsenceDeduction", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FineAbsenceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDeduction_FineAbsenceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FineAbsenceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FineAbsenceDayOfWeek", "FineAbsenceDayOfWeekCollection", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("DayOfWeek") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("FineAbsenceDayOfWeekCollection_DayOfWeek"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_FineAbsenceDayOfWeekCollection"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("FineAbsenceDayOfWeekCollection"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.FridayPay", "FridayPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("FridayPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("FridayPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.InsuranceDeduction", "InsuranceDeduction", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("InsuranceDeductionType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("InsuranceDeduction_InsuranceDeductionType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("InsuranceDeduction_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWork", "LateToWork", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("LateToWorkType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LateToWork_LateToWorkType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LateToWork_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + + b1.OwnsMany("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LateToWorkTimeFine", "LateToWorkTimeFines", b2 => + { + b2.Property("CustomizeWorkshopSettingsId") + .HasColumnType("bigint"); + + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b2.Property("Id")); + + b2.Property("FineMoney") + .HasColumnType("float") + .HasColumnName("LateToWorkTimeFines_FineMoney"); + + b2.Property("Minute") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)") + .HasColumnName("LateToWorkTimeFines_Minute"); + + b2.HasKey("CustomizeWorkshopSettingsId", "Id"); + + b2.ToTable("CustomizeWorkshopSettings_LateToWorkTimeFines"); + + b2.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsId"); + }); + + b1.Navigation("LateToWorkTimeFines"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.LeavePay", "LeavePay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("LeavePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("LeavePay_LeavePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("LeavePay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.MarriedAllowance", "MarriedAllowance", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("MarriedAllowanceType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("MarriedAllowance_MarriedAllowanceType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("MarriedAllowance_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.NightWorkPay", "NightWorkPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("NightWorkingType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("NightWorkPay_NightWorkingType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("NightWorkPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.OverTimePay", "OverTimePay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("OverTimePayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("OverTimePay_OverTimePayType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("OverTimePay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.OwnsOne("_0_Framework.Domain.CustomizeCheckoutShared.ValueObjects.ShiftPay", "ShiftPay", b1 => + { + b1.Property("CustomizeWorkshopSettingsid") + .HasColumnType("bigint"); + + b1.Property("ShiftPayType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftPayType"); + + b1.Property("ShiftType") + .IsRequired() + .HasMaxLength(1) + .HasColumnType("nvarchar(1)") + .HasColumnName("ShiftPay_ShiftType"); + + b1.Property("Value") + .HasColumnType("float") + .HasColumnName("ShiftPay_Value"); + + b1.HasKey("CustomizeWorkshopSettingsid"); + + b1.ToTable("CustomizeWorkshopSettings"); + + b1.WithOwner() + .HasForeignKey("CustomizeWorkshopSettingsid"); + }); + + b.Navigation("BaseYearsPay"); + + b.Navigation("BonusesPay"); + + b.Navigation("CustomizeWorkshopSettingsShifts"); + + b.Navigation("EarlyExit"); + + b.Navigation("FamilyAllowance"); + + b.Navigation("FineAbsenceDeduction"); + + b.Navigation("FridayPay"); + + b.Navigation("InsuranceDeduction"); + + b.Navigation("LateToWork"); + + b.Navigation("LeavePay"); + + b.Navigation("MarriedAllowance"); + + b.Navigation("NightWorkPay"); + + b.Navigation("OverTimePay"); + + b.Navigation("ShiftPay"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryItemAgg.DateSalaryItem", b => + { + b.HasOne("Company.Domain.DateSalaryAgg.DateSalary", "DateSalary") + .WithMany("DateSalaryItemList") + .HasForeignKey("DateSalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.PercentageAgg.Percentage", "Percentage") + .WithMany("DateSalaryItemList") + .HasForeignKey("PercentageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DateSalary"); + + b.Navigation("Percentage"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAccountAgg.EmployeeAccount", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeBankInformationAgg.EmployeeBankInformation", b => + { + b.HasOne("Company.Domain.BankAgg.Bank", "Bank") + .WithMany() + .HasForeignKey("BankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeBankInformationList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Bank"); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeChildrenAgg.EmployeeChildren", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeChildrenList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.HasOne("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", "EmployeeDocuments") + .WithMany("EmployeeDocumentItemCollection") + .HasForeignKey("EmployeeDocumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeDocumentsAdminSelection") + .WithMany("SelectedEmployeeDocumentItems") + .HasForeignKey("EmployeeDocumentsAdminViewId"); + + b.OwnsMany("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItemLog", "ItemLogs", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("AdminMessage") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EmployeeDocumentItemId") + .HasColumnType("bigint"); + + b1.Property("OperationType") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("OperatorId") + .HasColumnType("bigint"); + + b1.Property("OperatorType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.HasKey("id"); + + b1.HasIndex("EmployeeDocumentItemId"); + + b1.ToTable("EmployeeDocumentItemLogs", (string)null); + + b1.WithOwner("EmployeeDocumentItem") + .HasForeignKey("EmployeeDocumentItemId"); + + b1.Navigation("EmployeeDocumentItem"); + }); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("ItemLogs"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("EmployeeDocumentsAdminSelection") + .HasForeignKey("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeDocuments") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeInsuranceRecords") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("EmployeeInsuranceRecords") + .HasForeignKey("WorkShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.EmployerAccountAgg.EmployerAccount", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany() + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employer"); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("EvidencesList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("EvidencesList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.EvidenceDetail.EvidenceDetail", b => + { + b.HasOne("Company.Domain.Evidence.Evidence", "Evidence") + .WithMany("EvidenceDetailsList") + .HasForeignKey("Evidence_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Evidence"); + }); + + modelBuilder.Entity("Company.Domain.FileAlert.FileAlert", b => + { + b.HasOne("Company.Domain.FileState.FileState", "FileState") + .WithMany("FileAlertsList") + .HasForeignKey("FileState_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File") + .WithMany("FileAlertsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File"); + + b.Navigation("FileState"); + }); + + modelBuilder.Entity("Company.Domain.FileAndFileEmployerAgg.FileAndFileEmployer", b => + { + b.HasOne("Company.Domain.FileEmployerAgg.FileEmployer", "FileEmployer") + .WithMany("FileAndFileEmployers") + .HasForeignKey("FileEmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("FileAndFileEmployers") + .HasForeignKey("FileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("File1"); + + b.Navigation("FileEmployer"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployeeAgg.FileEmployee", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("FileEmployeeList") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.HasOne("Company.Domain.RepresentativeAgg.Representative", "Representative") + .WithMany("FileEmployerList") + .HasForeignKey("RepresentativeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Representative"); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.HasOne("Company.Domain.FileTiming.FileTiming", "FileTiming") + .WithMany("FileStates") + .HasForeignKey("FileTiming_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FileTiming"); + }); + + modelBuilder.Entity("Company.Domain.FinancialTransactionAgg.FinancialTransaction", b => + { + b.HasOne("Company.Domain.FinancialStatmentAgg.FinancialStatment", "FinancialStatment") + .WithMany("FinancialTransactionList") + .HasForeignKey("FinancialStatementId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FinancialStatment"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.HasOne("Company.Domain.WorkshopPlanAgg.WorkshopPlan", "WorkshopPlan") + .WithMany("GroupPlans") + .HasForeignKey("WorkshopPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopPlan"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanJobItemAgg.GroupPlanJobItem", b => + { + b.HasOne("Company.Domain.GroupPlanAgg.GroupPlan", "GroupPlan") + .WithMany("GroupPlanJobItems") + .HasForeignKey("GroupPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("GroupPlan"); + }); + + modelBuilder.Entity("Company.Domain.HolidayItemAgg.HolidayItem", b => + { + b.HasOne("Company.Domain.HolidayAgg.Holiday", "Holidayss") + .WithMany("HolidayItems") + .HasForeignKey("HolidayId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Holidayss"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractContactInfoAgg.InstitutionContractContactInfo", b => + { + b.HasOne("Company.Domain.InstitutionContractAgg.InstitutionContract", "InstitutionContracts") + .WithMany("ContactInfoList") + .HasForeignKey("InstitutionContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InstitutionContracts"); + }); + + modelBuilder.Entity("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithOne("InsuranceWorkshopInfo") + .HasForeignKey("Company.Domain.InsurancWorkshopInfoAgg.InsuranceWorkshopInfo", "WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceAgg.Insurance", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("Insurances") + .HasForeignKey("WorkShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("InsuranceEmployeeInfo") + .HasForeignKey("Company.Domain.InsuranceEmployeeInfoAgg.InsuranceEmployeeInfo", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobAndJobsAgg.InsuranceJobAndJobs", b => + { + b.HasOne("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", "InsuranceJobItem") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("InsuranceJobItemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.JobAgg.Job", "Jobs") + .WithMany("InsuranceJobAndJobs") + .HasForeignKey("JobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJobItem"); + + b.Navigation("Jobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.HasOne("Company.Domain.InsurancJobAgg.InsuranceJob", "InsuranceJob") + .WithMany("InsuranceJobItemList") + .HasForeignKey("InsuranceJobId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceJob"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceWorkshopAgg.InsuranceListWorkshop", b => + { + b.HasOne("Company.Domain.InsuranceListAgg.InsuranceList", "InsuranceList") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("InsurancListId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("InsuranceListWorkshops") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("InsuranceList"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkAgg.LeftWork", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorks") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorks") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LeftWorkInsuranceAgg.LeftWorkInsurance", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("LeftWorkInsurances") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("LeftWorkInsurances") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.LoanAgg.Entities.Loan", b => + { + b.OwnsMany("Company.Domain.LoanAgg.Entities.LoanInstallment", "LoanInstallments", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("Id")); + + b1.Property("AmountForMonth") + .HasColumnType("float"); + + b1.Property("InstallmentDate") + .HasColumnType("datetime2"); + + b1.Property("IsActive") + .IsRequired() + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b1.Property("LoanId") + .HasColumnType("bigint"); + + b1.Property("Month") + .HasMaxLength(2) + .HasColumnType("nvarchar(2)"); + + b1.Property("Year") + .HasMaxLength(4) + .HasColumnType("nvarchar(4)"); + + b1.HasKey("Id"); + + b1.HasIndex("LoanId"); + + b1.ToTable("LoanInstallment"); + + b1.WithOwner() + .HasForeignKey("LoanId"); + }); + + b.Navigation("LoanInstallments"); + }); + + modelBuilder.Entity("Company.Domain.MasterPenaltyTitle.MasterPenaltyTitle", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterPenaltyTitlesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("MasterPetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("MasterPetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.MasterWorkHistory.MasterWorkHistory", b => + { + b.HasOne("Company.Domain.MasterPetition.MasterPetition", "MasterPetition") + .WithMany("MasterWorkHistoriesList") + .HasForeignKey("MasterPetition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MasterPetition"); + }); + + modelBuilder.Entity("Company.Domain.ModuleTextManagerAgg.EntityModuleTextManager", b => + { + b.HasOne("Company.Domain.ModuleAgg.EntityModule", "Module") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("ModuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.TextManagerAgg.EntityTextManager", "TextManager") + .WithMany("EntityModuleTextManagers") + .HasForeignKey("TextManagerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Module"); + + b.Navigation("TextManager"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeItemAgg.PaymentToEmployeeItem", b => + { + b.HasOne("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", "PaymentToEmployee") + .WithMany("PaymentToEmployeeItemList") + .HasForeignKey("PaymentToEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentToEmployee"); + }); + + modelBuilder.Entity("Company.Domain.PenaltyTitle.PenaltyTitle", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("PenaltyTitlesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.PersonnelCodeAgg.PersonnelCodeDomain", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("PersonnelCodeList") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("PersonnelCodeList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.HasOne("Company.Domain.BoardType.BoardType", "BoardType") + .WithMany("PetitionsList") + .HasForeignKey("BoardType_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.File1.File1", "File1") + .WithMany("PetitionsList") + .HasForeignKey("File_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BoardType"); + + b.Navigation("File1"); + }); + + modelBuilder.Entity("Company.Domain.ProceedingSession.ProceedingSession", b => + { + b.HasOne("Company.Domain.Board.Board", "Board") + .WithMany("ProceedingSessionsList") + .HasForeignKey("Board_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Board"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeStatusAgg.RollCallEmployeeStatus", b => + { + b.HasOne("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", "RollCallEmployee") + .WithMany("EmployeesStatus") + .HasForeignKey("RollCallEmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("RollCallEmployee"); + }); + + modelBuilder.Entity("Company.Domain.RollCallServiceAgg.RollCallService", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("RollCallServicesList") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.HasOne("Company.Domain.SubtitleAgg.EntitySubtitle", null) + .WithMany("Subtitles") + .HasForeignKey("EntitySubtitleid"); + + b.HasOne("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", "EntityOriginalTitle") + .WithMany("Subtitles") + .HasForeignKey("OriginalTitle_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("EntityOriginalTitle"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("TaxLeftWorkCategoryList") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkItemAgg.TaxLeftWorkItem", b => + { + b.HasOne("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", "TaxLeftWorkCategory") + .WithMany("TaxLeftWorkItemList") + .HasForeignKey("TaxLeftWorkCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TaxLeftWorkCategory"); + }); + + modelBuilder.Entity("Company.Domain.WorkHistory.WorkHistory", b => + { + b.HasOne("Company.Domain.Petition.Petition", "Petition") + .WithMany("WorkHistoriesList") + .HasForeignKey("Petition_Id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Petition"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.HasOne("Company.Domain.ContractAgg.Contract", "Contracts") + .WithMany("WorkingHoursList") + .HasForeignKey("ContractId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursItemsAgg.WorkingHoursItems", b => + { + b.HasOne("Company.Domain.WorkingHoursAgg.WorkingHours", "WorkingHourses") + .WithMany("WorkingHoursItemsList") + .HasForeignKey("WorkingHoursId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHourses"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempItemAgg.WorkingHoursTempItem", b => + { + b.HasOne("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", "WorkingHoursTemp") + .WithMany("WorkingHoursTempItemList") + .HasForeignKey("WorkingHoursTempId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkingHoursTemp"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAccountAgg.WorkshopAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopEmployerAgg.WorkshopEmployer", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", "Employer") + .WithMany("WorkshopEmployers") + .HasForeignKey("EmployerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopEmployers") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employer"); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanEmployeeAgg.WorkshopPlanEmployee", b => + { + b.HasOne("Company.Domain.WorkshopPlanAgg.WorkshopPlan", "WorkshopPlan") + .WithMany("WorkshopPlanEmployees") + .HasForeignKey("WorkshopPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("WorkshopPlan"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopSubAccountAgg.WorkshopSubAccount", b => + { + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany("WorkshopSubAccounts") + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Workshop"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryItemsAgg.YearlySalaryItem", b => + { + b.HasOne("Company.Domain.YearlySalaryAgg.YearlySalary", "YearlySalary") + .WithMany("YearlySalaryItemsList") + .HasForeignKey("YearlySalaryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("YearlySalary"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "ContractingParty") + .WithMany("Employers") + .HasForeignKey("ContractingPartyId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ContractingParty"); + }); + + modelBuilder.Entity("EmployerWorkshop", b => + { + b.HasOne("Company.Domain.empolyerAgg.Employer", null) + .WithMany() + .HasForeignKey("EmployersListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", null) + .WithMany() + .HasForeignKey("WorkshopsListid") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Company.Domain.Board.Board", b => + { + b.Navigation("ProceedingSessionsList"); + }); + + modelBuilder.Entity("Company.Domain.BoardType.BoardType", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b => + { + b.Navigation("Employers"); + }); + + modelBuilder.Entity("Company.Domain.ContractAgg.Contract", b => + { + b.Navigation("WorkingHoursList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b => + { + b.Navigation("CrossJobItemsList"); + }); + + modelBuilder.Entity("Company.Domain.CrossJobGuildAgg.CrossJobGuild", b => + { + b.Navigation("CrossJobList"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities.CustomizeWorkshopGroupSettings", b => + { + b.Navigation("CustomizeWorkshopEmployeeSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.CustomizeWorkshopSettingsAgg.Entities.CustomizeWorkshopSettings", b => + { + b.Navigation("CustomizeWorkshopGroupSettingsCollection"); + }); + + modelBuilder.Entity("Company.Domain.DateSalaryAgg.DateSalary", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeAgg.Employee", b => + { + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("EmployeeBankInformationList"); + + b.Navigation("EmployeeChildrenList"); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceEmployeeInfo"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Navigation("SelectedEmployeeDocumentItems"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Navigation("EmployeeDocumentItemCollection"); + }); + + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => + { + b.Navigation("EvidenceDetailsList"); + }); + + modelBuilder.Entity("Company.Domain.File1.File1", b => + { + b.Navigation("BoardsList"); + + b.Navigation("EvidencesList"); + + b.Navigation("FileAlertsList"); + + b.Navigation("FileAndFileEmployers"); + + b.Navigation("MasterPetitionsList"); + + b.Navigation("PetitionsList"); + }); + + modelBuilder.Entity("Company.Domain.FileEmployerAgg.FileEmployer", b => + { + b.Navigation("FileAndFileEmployers"); + }); + + modelBuilder.Entity("Company.Domain.FileState.FileState", b => + { + b.Navigation("FileAlertsList"); + }); + + modelBuilder.Entity("Company.Domain.FileTiming.FileTiming", b => + { + b.Navigation("FileStates"); + }); + + modelBuilder.Entity("Company.Domain.FinancialStatmentAgg.FinancialStatment", b => + { + b.Navigation("FinancialTransactionList"); + }); + + modelBuilder.Entity("Company.Domain.GroupPlanAgg.GroupPlan", b => + { + b.Navigation("GroupPlanJobItems"); + }); + + modelBuilder.Entity("Company.Domain.HolidayAgg.Holiday", b => + { + b.Navigation("HolidayItems"); + }); + + modelBuilder.Entity("Company.Domain.InstitutionContractAgg.InstitutionContract", b => + { + b.Navigation("ContactInfoList"); + }); + + modelBuilder.Entity("Company.Domain.InsurancJobAgg.InsuranceJob", b => + { + b.Navigation("InsuranceJobItemList"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceJobItemAgg.InsuranceJobItem", b => + { + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.InsuranceListAgg.InsuranceList", b => + { + b.Navigation("InsuranceListWorkshops"); + }); + + modelBuilder.Entity("Company.Domain.JobAgg.Job", b => + { + b.Navigation("ContractsList"); + + b.Navigation("CrossJobItemsList"); + + b.Navigation("InsuranceJobAndJobs"); + }); + + modelBuilder.Entity("Company.Domain.MandatoryHoursAgg.MandatoryHours", b => + { + b.Navigation("Contracts"); + }); + + modelBuilder.Entity("Company.Domain.MasterPetition.MasterPetition", b => + { + b.Navigation("MasterPenaltyTitlesList"); + + b.Navigation("MasterWorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.ModuleAgg.EntityModule", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.OriginalTitleAgg.EntityOriginalTitle", b => + { + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.PaymentToEmployeeAgg.PaymentToEmployee", b => + { + b.Navigation("PaymentToEmployeeItemList"); + }); + + modelBuilder.Entity("Company.Domain.PercentageAgg.Percentage", b => + { + b.Navigation("DateSalaryItemList"); + }); + + modelBuilder.Entity("Company.Domain.Petition.Petition", b => + { + b.Navigation("PenaltyTitlesList"); + + b.Navigation("WorkHistoriesList"); + }); + + modelBuilder.Entity("Company.Domain.RepresentativeAgg.Representative", b => + { + b.Navigation("ContractingParties"); + + b.Navigation("FileEmployeeList"); + + b.Navigation("FileEmployerList"); + }); + + modelBuilder.Entity("Company.Domain.RollCallEmployeeAgg.RollCallEmployee", b => + { + b.Navigation("EmployeesStatus"); + }); + + modelBuilder.Entity("Company.Domain.SubtitleAgg.EntitySubtitle", b => + { + b.Navigation("Chapters"); + + b.Navigation("Subtitles"); + }); + + modelBuilder.Entity("Company.Domain.TaxLeftWorkCategoryAgg.TaxLeftWorkCategory", b => + { + b.Navigation("TaxLeftWorkItemList"); + }); + + modelBuilder.Entity("Company.Domain.TextManagerAgg.EntityTextManager", b => + { + b.Navigation("EntityModuleTextManagers"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursAgg.WorkingHours", b => + { + b.Navigation("WorkingHoursItemsList"); + }); + + modelBuilder.Entity("Company.Domain.WorkingHoursTempAgg.WorkingHoursTemp", b => + { + b.Navigation("WorkingHoursTempItemList"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopAgg.Workshop", b => + { + b.Navigation("Checkouts"); + + b.Navigation("ClientEmployeeWorkshopList"); + + b.Navigation("Contracts2"); + + b.Navigation("CustomizeCheckouts"); + + b.Navigation("CustomizeWorkshopSettings"); + + b.Navigation("EmployeeInsuranceRecords"); + + b.Navigation("InsuranceListWorkshops"); + + b.Navigation("InsuranceWorkshopInfo"); + + b.Navigation("Insurances"); + + b.Navigation("LeftWorkInsurances"); + + b.Navigation("LeftWorks"); + + b.Navigation("PersonnelCodeList"); + + b.Navigation("RollCallServicesList"); + + b.Navigation("TaxLeftWorkCategoryList"); + + b.Navigation("WorkshopEmployers"); + + b.Navigation("WorkshopSubAccounts"); + }); + + modelBuilder.Entity("Company.Domain.WorkshopPlanAgg.WorkshopPlan", b => + { + b.Navigation("GroupPlans"); + + b.Navigation("WorkshopPlanEmployees"); + }); + + modelBuilder.Entity("Company.Domain.YearlySalaryAgg.YearlySalary", b => + { + b.Navigation("Contracts"); + + b.Navigation("YearlySalaryItemsList"); + }); + + modelBuilder.Entity("Company.Domain.empolyerAgg.Employer", b => + { + b.Navigation("Contracts"); + + b.Navigation("WorkshopEmployers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/20250217173745_employee Document.cs b/CompanyManagment.EFCore/Migrations/20250217173745_employee Document.cs new file mode 100644 index 00000000..49623328 --- /dev/null +++ b/CompanyManagment.EFCore/Migrations/20250217173745_employee Document.cs @@ -0,0 +1,174 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace CompanyManagment.EFCore.Migrations +{ + /// + public partial class employeeDocument : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "EmployeeDocuments", + columns: table => new + { + id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + EmployeeId = table.Column(type: "bigint", nullable: false), + WorkshopId = table.Column(type: "bigint", nullable: false), + Gender = table.Column(type: "nvarchar(10)", maxLength: 10, nullable: false), + IsConfirmed = table.Column(type: "bit", nullable: false), + RequiredItemsSubmittedByClient = table.Column(type: "bit", nullable: false), + IsSentToChecker = table.Column(type: "bit", nullable: false), + HasRejectedItems = table.Column(type: "bit", nullable: false), + CreationDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_EmployeeDocuments", x => x.id); + table.ForeignKey( + name: "FK_EmployeeDocuments_Employees_EmployeeId", + column: x => x.EmployeeId, + principalTable: "Employees", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_EmployeeDocuments_Workshops_WorkshopId", + column: x => x.WorkshopId, + principalTable: "Workshops", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "EmployeeDocumentsAdminSelection", + columns: table => new + { + id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + EmployeeId = table.Column(type: "bigint", nullable: false), + CreationDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_EmployeeDocumentsAdminSelection", x => x.id); + table.ForeignKey( + name: "FK_EmployeeDocumentsAdminSelection_Employees_EmployeeId", + column: x => x.EmployeeId, + principalTable: "Employees", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "EmployeeDocumentItems", + columns: table => new + { + id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + WorkshopId = table.Column(type: "bigint", nullable: false), + EmployeeId = table.Column(type: "bigint", nullable: false), + UploaderId = table.Column(type: "bigint", nullable: false), + UploaderType = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false), + ReviewedById = table.Column(type: "bigint", maxLength: 120, nullable: false), + RejectionReason = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: true), + DocumentStatus = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false), + MediaId = table.Column(type: "bigint", nullable: false), + ConfirmationDateTime = table.Column(type: "datetime2", nullable: true), + DocumentLabel = table.Column(type: "nvarchar(31)", maxLength: 31, nullable: false), + EmployeeDocumentId = table.Column(type: "bigint", nullable: false), + EmployeeDocumentsAdminViewId = table.Column(type: "bigint", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_EmployeeDocumentItems", x => x.id); + table.ForeignKey( + name: "FK_EmployeeDocumentItems_EmployeeDocumentsAdminSelection_EmployeeDocumentsAdminViewId", + column: x => x.EmployeeDocumentsAdminViewId, + principalTable: "EmployeeDocumentsAdminSelection", + principalColumn: "id"); + table.ForeignKey( + name: "FK_EmployeeDocumentItems_EmployeeDocuments_EmployeeDocumentId", + column: x => x.EmployeeDocumentId, + principalTable: "EmployeeDocuments", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "EmployeeDocumentItemLogs", + columns: table => new + { + id = table.Column(type: "bigint", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + EmployeeDocumentItemId = table.Column(type: "bigint", nullable: false), + OperationType = table.Column(type: "nvarchar(25)", maxLength: 25, nullable: false), + OperatorId = table.Column(type: "bigint", nullable: false), + OperatorType = table.Column(type: "nvarchar(20)", maxLength: 20, nullable: false), + AdminMessage = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_EmployeeDocumentItemLogs", x => x.id); + table.ForeignKey( + name: "FK_EmployeeDocumentItemLogs_EmployeeDocumentItems_EmployeeDocumentItemId", + column: x => x.EmployeeDocumentItemId, + principalTable: "EmployeeDocumentItems", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_EmployeeDocumentItemLogs_EmployeeDocumentItemId", + table: "EmployeeDocumentItemLogs", + column: "EmployeeDocumentItemId"); + + migrationBuilder.CreateIndex( + name: "IX_EmployeeDocumentItems_EmployeeDocumentId", + table: "EmployeeDocumentItems", + column: "EmployeeDocumentId"); + + migrationBuilder.CreateIndex( + name: "IX_EmployeeDocumentItems_EmployeeDocumentsAdminViewId", + table: "EmployeeDocumentItems", + column: "EmployeeDocumentsAdminViewId"); + + migrationBuilder.CreateIndex( + name: "IX_EmployeeDocuments_EmployeeId", + table: "EmployeeDocuments", + column: "EmployeeId"); + + migrationBuilder.CreateIndex( + name: "IX_EmployeeDocuments_WorkshopId", + table: "EmployeeDocuments", + column: "WorkshopId"); + + migrationBuilder.CreateIndex( + name: "IX_EmployeeDocumentsAdminSelection_EmployeeId", + table: "EmployeeDocumentsAdminSelection", + column: "EmployeeId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "EmployeeDocumentItemLogs"); + + migrationBuilder.DropTable( + name: "EmployeeDocumentItems"); + + migrationBuilder.DropTable( + name: "EmployeeDocumentsAdminSelection"); + + migrationBuilder.DropTable( + name: "EmployeeDocuments"); + } + } +} diff --git a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs index c90fc187..3cf52fbb 100644 --- a/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs +++ b/CompanyManagment.EFCore/Migrations/CompanyContextModelSnapshot.cs @@ -1643,6 +1643,135 @@ namespace CompanyManagment.EFCore.Migrations b.ToTable("EmployeeComputeOptions", (string)null); }); + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("ConfirmationDateTime") + .HasColumnType("datetime2"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("DocumentLabel") + .IsRequired() + .HasMaxLength(31) + .HasColumnType("nvarchar(31)"); + + b.Property("DocumentStatus") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("EmployeeDocumentId") + .HasColumnType("bigint"); + + b.Property("EmployeeDocumentsAdminViewId") + .HasColumnType("bigint"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("MediaId") + .HasColumnType("bigint"); + + b.Property("RejectionReason") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("ReviewedById") + .HasMaxLength(120) + .HasColumnType("bigint"); + + b.Property("UploaderId") + .HasColumnType("bigint"); + + b.Property("UploaderType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeDocumentId"); + + b.HasIndex("EmployeeDocumentsAdminViewId"); + + b.ToTable("EmployeeDocumentItems", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId") + .IsUnique(); + + b.ToTable("EmployeeDocumentsAdminSelection", (string)null); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("id")); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("EmployeeId") + .HasColumnType("bigint"); + + b.Property("Gender") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("HasRejectedItems") + .HasColumnType("bit"); + + b.Property("IsConfirmed") + .HasColumnType("bit"); + + b.Property("IsSentToChecker") + .HasColumnType("bit"); + + b.Property("RequiredItemsSubmittedByClient") + .HasColumnType("bit"); + + b.Property("WorkshopId") + .HasColumnType("bigint"); + + b.HasKey("id"); + + b.HasIndex("EmployeeId"); + + b.HasIndex("WorkshopId"); + + b.ToTable("EmployeeDocuments", (string)null); + }); + modelBuilder.Entity("Company.Domain.EmployeeInsurancListDataAgg.EmployeeInsurancListData", b => { b.Property("id") @@ -7545,6 +7674,98 @@ namespace CompanyManagment.EFCore.Migrations b.Navigation("Employee"); }); + modelBuilder.Entity("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItem", b => + { + b.HasOne("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", "EmployeeDocuments") + .WithMany("EmployeeDocumentItemCollection") + .HasForeignKey("EmployeeDocumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeDocumentsAdminSelection") + .WithMany("SelectedEmployeeDocumentItems") + .HasForeignKey("EmployeeDocumentsAdminViewId"); + + b.OwnsMany("Company.Domain.EmployeeDocumentItemAgg.EmployeeDocumentItemLog", "ItemLogs", b1 => + { + b1.Property("id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property("id")); + + b1.Property("AdminMessage") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b1.Property("CreationDate") + .HasColumnType("datetime2"); + + b1.Property("EmployeeDocumentItemId") + .HasColumnType("bigint"); + + b1.Property("OperationType") + .IsRequired() + .HasMaxLength(25) + .HasColumnType("nvarchar(25)"); + + b1.Property("OperatorId") + .HasColumnType("bigint"); + + b1.Property("OperatorType") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b1.HasKey("id"); + + b1.HasIndex("EmployeeDocumentItemId"); + + b1.ToTable("EmployeeDocumentItemLogs", (string)null); + + b1.WithOwner("EmployeeDocumentItem") + .HasForeignKey("EmployeeDocumentItemId"); + + b1.Navigation("EmployeeDocumentItem"); + }); + + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + + b.Navigation("ItemLogs"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithOne("EmployeeDocumentsAdminSelection") + .HasForeignKey("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", "EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") + .WithMany("EmployeeDocuments") + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Company.Domain.WorkshopAgg.Workshop", "Workshop") + .WithMany() + .HasForeignKey("WorkshopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Workshop"); + }); + modelBuilder.Entity("Company.Domain.EmployeeInsuranceRecordAgg.EmployeeInsuranceRecord", b => { b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee") @@ -8282,6 +8503,10 @@ namespace CompanyManagment.EFCore.Migrations b.Navigation("EmployeeChildrenList"); + b.Navigation("EmployeeDocuments"); + + b.Navigation("EmployeeDocumentsAdminSelection"); + b.Navigation("EmployeeInsuranceRecords"); b.Navigation("InsuranceEmployeeInfo"); @@ -8293,6 +8518,16 @@ namespace CompanyManagment.EFCore.Migrations b.Navigation("PersonnelCodeList"); }); + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAdminSelectionAgg.EmployeeDocumentsAdminSelection", b => + { + b.Navigation("SelectedEmployeeDocumentItems"); + }); + + modelBuilder.Entity("Company.Domain.EmployeeDocumentsAgg.EmployeeDocuments", b => + { + b.Navigation("EmployeeDocumentItemCollection"); + }); + modelBuilder.Entity("Company.Domain.Evidence.Evidence", b => { b.Navigation("EvidenceDetailsList"); diff --git a/CompanyManagment.EFCore/Repository/EmployeeDocumentItemRepository.cs b/CompanyManagment.EFCore/Repository/EmployeeDocumentItemRepository.cs new file mode 100644 index 00000000..437a421d --- /dev/null +++ b/CompanyManagment.EFCore/Repository/EmployeeDocumentItemRepository.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using System.Linq; +using _0_Framework.InfraStructure; +using Company.Domain.EmployeeDocumentItemAgg; +using Microsoft.EntityFrameworkCore; + +namespace CompanyManagment.EFCore.Repository +{ + public class EmployeeDocumentItemRepository:RepositoryBase,IEmployeeDocumentItemRepository + { + private readonly CompanyContext _context; + public EmployeeDocumentItemRepository(CompanyContext context) : base(context) + { + _context = context; + } + + public EmployeeDocumentItem GetWithEmployeeDocumentsByItemId(long id) + { + return _context.EmployeeDocumentItems.Include(x => x.EmployeeDocuments).FirstOrDefault(x => x.id == id); + } + + public List GetUnsubmittedByEmployeeDocumentsId(long employeeDocumentsId) + { + return _context.EmployeeDocumentItems.Where(x => x.EmployeeDocumentId == employeeDocumentsId).ToList(); + } + + } +} diff --git a/CompanyManagment.EFCore/Repository/EmployeeDocumentsAdminSelectionRepository.cs b/CompanyManagment.EFCore/Repository/EmployeeDocumentsAdminSelectionRepository.cs new file mode 100644 index 00000000..59b05f76 --- /dev/null +++ b/CompanyManagment.EFCore/Repository/EmployeeDocumentsAdminSelectionRepository.cs @@ -0,0 +1,74 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using _0_Framework.Application; +using _0_Framework.InfraStructure; +using AccountMangement.Infrastructure.EFCore; +using Company.Domain.EmployeeDocumentsAdminSelectionAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection; +using Microsoft.EntityFrameworkCore; + +namespace CompanyManagment.EFCore.Repository +{ + public class EmployeeDocumentsAdminSelectionRepository : RepositoryBase,IEmployeeDocumentsAdminSelectionRepository + { + private readonly CompanyContext _companyContext; + private readonly AccountContext _accountContext; + public EmployeeDocumentsAdminSelectionRepository(CompanyContext context, CompanyContext companyContext, AccountContext accountContext) : base(context) + { + _companyContext = companyContext; + _accountContext = accountContext; + } + + //public List Search(SearchEmployeeDocumentsAdminSelection command) + //{ + // var query = _companyContext.EmployeeDocumentsAdminSelectionSet.Include(x => x.Employee) + // .Include(x => x.SelectedEmployeeDocumentItems).ThenInclude(x=>x.EmployeeDocuments).AsQueryable(); + + // if (!string.IsNullOrWhiteSpace(command.EmployeeName)) + // query = query.Where(x => (x.Employee.FName+" "+x.Employee.LName).Contains(command.EmployeeName)); + + // var items = query.SelectMany(x => x.SelectedEmployeeDocumentItems); + + + // //get selected documents mediaIds + // var mediaIds = items.Select(x => x.MediaId); + + // var medias = _accountContext.Medias.Where(x => mediaIds.Contains(x.id)); + + + // var joinedList = items.Join(medias, x => x.MediaId, y => y.id, (x, y) => new + // { + // Label = x.DocumentLabel, + // Path = y.Path + // }); + + // return query.Select(x => new EmployeeDocumentsAdminSelectionViewModel() + // { + // EmployeeId = x.EmployeeId, + // EducationalDegreePicturePath = + // joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.EducationalDegree).Path, + // EmployeeFullName = x.Employee.FullName, + // EmployeePicturePath = joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.EmployeePicture).Path, + // Gender = x.Employee.Gender, + // IdCardPage1PicturePath = joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.IdCardPage1).Path, + // IdCardPage2PicturePath = joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.IdCardPage2).Path, + // IdCardPage3PicturePath = joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.IdCardPage3).Path, + // IdCardPage4PicturePath = joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.IdCardPage4).Path, + // MilitaryServiceCardPicturePath = + // joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.MilitaryServiceCard).Path, + // NationalCardFrontPicturePath = + // joinedList.FirstOrDefault(y => y.Label == DocumentItemLabel.NationalCardFront).Path, + // NationalCardRearPicturePath = joinedList.FirstOrDefault(y=>y.Label==DocumentItemLabel.NationalCardRear).Path, + // }).ToList(); + //} + + //public EmployeeDocumentsAdminSelection GetByEmployeeIdWithItems(long employeeId) + //{ + // return _companyContext.EmployeeDocumentsAdminSelectionSet.Include(x => x.SelectedEmployeeDocumentItems).Include(x=>x.Employee) + // .FirstOrDefault(x => x.EmployeeId == employeeId); + //} + } +} diff --git a/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs new file mode 100644 index 00000000..5a9018ee --- /dev/null +++ b/CompanyManagment.EFCore/Repository/EmployeeDocumentsRepository.cs @@ -0,0 +1,841 @@ +using _0_Framework.InfraStructure; +using AccountMangement.Infrastructure.EFCore; +using Company.Domain.EmployeeDocumentItemAgg; +using Company.Domain.EmployeeDocumentsAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.Workshop; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using _0_Framework.Application; +using AccountManagement.Application.Contracts.Media; +using Company.Domain.empolyerAgg; +using Company.Domain.LeftWorkAgg; + +namespace CompanyManagment.EFCore.Repository +{ + public class EmployeeDocumentsRepository : RepositoryBase, IEmployeeDocumentsRepository + { + private readonly CompanyContext _companyContext; + private readonly AccountContext _accountContext; + private readonly IEmployerRepository _employerRepository; + + public EmployeeDocumentsRepository(CompanyContext context, AccountContext accountContext, IEmployerRepository employerRepository) : base(context) + { + _companyContext = context; + _accountContext = accountContext; + _employerRepository = employerRepository; + } + + + public List GetEmployeeIds(long workshopId) + { + var query = _companyContext.EmployeeDocuments.Include(x => x.Employee).Where(x => x.WorkshopId == workshopId); + return query.Select(x => x.EmployeeId).ToList(); + } + + public EmployeeDocuments GetByEmployeeIdWorkshopId(long employeeId, long workshopId) + { + return _companyContext.EmployeeDocuments.FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId); + } + + public EmployeeDocuments GetByEmployeeIdWorkshopIdWithItems(long employeeId, long workshopId) + { + return _companyContext.EmployeeDocuments.Include(x => x.EmployeeDocumentItemCollection) + .FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId); + } + + public EmployeeDocuments GetByIdWithItems(long employeeDocumentsId) + { + return _companyContext.EmployeeDocuments.Include(x => x.EmployeeDocumentItemCollection) + .FirstOrDefault(x => x.id == employeeDocumentsId); + } + + public EmployeeDocumentsViewModel GetViewModelByEmployeeIdWorkshopId(long employeeId, long workshopId) + { + var entity = _companyContext.EmployeeDocuments.Include(x => x.Employee) + .Include(x => x.EmployeeDocumentItemCollection) + .FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId); + + if (entity == null) + return null; + + List currentConfirmedDocuments = entity.EmployeeDocumentItemCollection.GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).Where(x => x.DocumentStatus == DocumentStatus.Confirmed).ToList(); + + + + var medias = _accountContext.Medias.Where(x => currentConfirmedDocuments + .Any(y => y.MediaId == x.id)) + .Select(x => new MediaViewModel { Id = x.id, Path = x.Path }).ToList(); + + + + + return new EmployeeDocumentsViewModel() + { + EducationalDegree = GetByLabelAndLoadMedia(currentConfirmedDocuments,medias,DocumentItemLabel.EducationalDegree), + IdCardPage1= + GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage1), + + IdCardPage2 = + GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage2), + + IdCardPage3 = + GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage3), + + IdCardPage4 = + GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, DocumentItemLabel.IdCardPage4), + + MilitaryServiceCard = GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), + NationalCardRear = + GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, DocumentItemLabel.NationalCardRear), + + NationalCardFront = + GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, DocumentItemLabel.NationalCardFront), + + EmployeePicture= GetByLabelAndLoadMedia(currentConfirmedDocuments, medias, DocumentItemLabel.EmployeePicture), + + EmployeeFullName = entity.Employee.FullName, + + Id = entity.id + }; + } + + public List SearchEmployeesWithActiveLeftWork(SearchEmployeeDocuments cmd) + { + //take employeeDocuments for workshop + var query = _companyContext.EmployeeDocuments.Include(x => x.Employee).Where(x => x.WorkshopId == cmd.WorkshopId); + + if (!string.IsNullOrWhiteSpace(cmd.EmployeeName)) + { + query = query.Where(x => x.Employee.FullName.Contains(cmd.EmployeeName)); + } + + //get leftworks for employees selected + var passedLeftWorks = _companyContext.LeftWorkList.Where(x => query.Any(y => y.EmployeeId == x.EmployeeId && y.WorkshopId == x.WorkshopId) && x.LeftWorkDate <= DateTime.Now.Date) + .Select(x => x.EmployeeId).AsEnumerable(); + + + + + var documents = query.Where(x => passedLeftWorks.All(y => x.EmployeeId != y)) + .OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList(); + + + + var currentDocs = documents.SelectMany(y =>y.EmployeeDocumentItemCollection.Where(z=>z.DocumentStatus != DocumentStatus.Unsubmitted && + z.DocumentStatus != DocumentStatus.Deleted)).Select(y => y.MediaId).ToList(); + + //get medias for current documents of employees + var medias = _accountContext.Medias.Where(x => currentDocs.Contains(x.id)).Select(x => new MediaViewModel() + { Id = x.id,Path=x.Path }).ToList(); + + + + return documents.Select(x => + { + var employeeCurrentConfirmedDocuments = + x.EmployeeDocumentItemCollection.Where(y => x.EmployeeId == y.EmployeeId).ToList(); + + + return new EmployeeDocumentsViewModel + { + Id = x.id, + EmployeeId = x.EmployeeId, + EmployeeFullName = x.Employee.FullName, + + IdCardPage1 = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.IdCardPage4), + + EducationalDegree = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.EducationalDegree), + NationalCardFront = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeCurrentConfirmedDocuments, medias, + DocumentItemLabel.EmployeePicture), + }; + }).ToList(); + } + + public List SearchForClient(SearchEmployeeDocuments cmd) + { + //take employeeDocuments for workshop + var query = _companyContext.EmployeeDocuments.Include(x => x.Employee) + .Include(x => x.EmployeeDocumentItemCollection) + .Where(x => x.WorkshopId == cmd.WorkshopId); + + + if (!string.IsNullOrWhiteSpace(cmd.EmployeeName)) + { + query = query.Where(x => (x.Employee.FName + " " + x.Employee.LName).Contains(cmd.EmployeeName)); + } + + + //get the last leftworks in each workshop for selected employees where the leftwork + var passedLeftWorks = _companyContext.LeftWorkList + .Where(x => query.Any(y => y.EmployeeId == x.EmployeeId && + y.WorkshopId == cmd.WorkshopId && x.LeftWorkDate <= DateTime.Now.Date)) + .Select(x => x.EmployeeId).AsEnumerable(); + + + List employeeDocuments; + switch (cmd.Mode) + { + case EmployeeDocumentSearchMode.All: + employeeDocuments = query.OrderBy(x => passedLeftWorks.Any(y => x.EmployeeId == y)) + .Skip(cmd.PageIndex).Take(30).ToList(); + break; + case EmployeeDocumentSearchMode.ActiveEmployees: + employeeDocuments = query.Where(x => passedLeftWorks.All(y => x.EmployeeId != y)) + .OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList(); + break; + case EmployeeDocumentSearchMode.DeactiveEmployees: + employeeDocuments = query.Where(x => passedLeftWorks.Any(y => x.EmployeeId == y)) + .OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList(); + break; + default: + employeeDocuments = new(); + break; + } + + + var employer = _employerRepository.GetEmployerByWorkshopId(cmd.WorkshopId).FirstOrDefault(); + string employerFullName = employer.EmployerFullName; + + + var currentItemsMediaId = employeeDocuments.SelectMany(y => y.EmployeeDocumentItemCollection) + .Where(y=>y.DocumentStatus != DocumentStatus.Unsubmitted || y.UploaderType == UserType.Client) + .GroupBy(x=>new{x.WorkshopId,x.EmployeeId,x.DocumentLabel}).Select(x=> + x.MaxBy(y=>y.CreationDate)).Select(z => z.MediaId).ToList(); + + var personnelCodes = _companyContext.PersonnelCodeSet.Where(x => x.WorkshopId == cmd.WorkshopId).ToList(); + //get medias for current documents of employees + + var medias = _accountContext.Medias.Where(x => currentItemsMediaId.Contains(x.id)) + .Select(x => new MediaViewModel(){ Id = x.id,Path= x.Path }).ToList(); + + + return employeeDocuments.Select(x => + { + + var employeeLatestConfirmedDocuments = employeeDocuments.Where(y=>x.EmployeeId==y.EmployeeId) + .SelectMany(y=> GetAllCurrentDocuments(y,UserType.Client)).ToList(); + + return new EmployeeDocumentsViewModel + { + Id = x.id, + EmployeeId = x.EmployeeId, + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments,medias,DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage2), + IdCardPage3= GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage3), + IdCardPage4= GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EducationalDegree), + EmployeeFullName = x.Employee.FullName, + NationalCardFront =GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardFront), + NationalCardRear =GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard= GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EmployeePicture), + IsBlack = passedLeftWorks.Any(y => y == x.EmployeeId) ? "true" : "false", + EmployerFullName = employerFullName, + IsSentToChecker = x.IsSentToChecker, + PersonnelCode = personnelCodes.FirstOrDefault(y=>y.EmployeeId == x.EmployeeId)?.PersonnelCode??0 + }; + }).OrderBy(x=>x.PersonnelCode).ToList(); + } + + public List SearchForAdmin(SearchEmployeeDocuments cmd) + { + //take employeeDocuments for workshop + var query = _companyContext.EmployeeDocuments.Include(x => x.Employee) + .Include(x => x.EmployeeDocumentItemCollection).Where(x => x.WorkshopId == cmd.WorkshopId); + + + if (!string.IsNullOrWhiteSpace(cmd.EmployeeName)) + { + query = query.Where(x => (x.Employee.FName + " " + x.Employee.LName).Contains(cmd.EmployeeName)); + } + + + //get the last leftworks in each workshop for selected employees where the leftwork + var passedLeftWorks = _companyContext.LeftWorkList + .Where(x => query.Any(y => y.EmployeeId == x.EmployeeId && y.WorkshopId == cmd.WorkshopId && x.LeftWorkDate <= DateTime.Now.Date)) + .Select(x => x.EmployeeId).AsEnumerable(); + + + List employeeDocuments; + switch (cmd.Mode) + { + case EmployeeDocumentSearchMode.All: + employeeDocuments = query.OrderBy(x => passedLeftWorks.Any(y => x.EmployeeId == y)).Skip(cmd.PageIndex).Take(30).ToList(); + break; + case EmployeeDocumentSearchMode.ActiveEmployees: + employeeDocuments = query.Where(x => passedLeftWorks.All(y => x.EmployeeId != y)) + .OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList(); + break; + case EmployeeDocumentSearchMode.DeactiveEmployees: + employeeDocuments = query.Where(x => passedLeftWorks.Any(y => x.EmployeeId == y)) + .OrderByDescending(x => x.id).Skip(cmd.PageIndex).Take(30).ToList(); + break; + default: + employeeDocuments = new(); + break; + } + + + var employer = _employerRepository.GetEmployerByWorkshopId(cmd.WorkshopId).FirstOrDefault(); + string employerFullName = employer.EmployerFullName; + + + var currentItemsMediaId = employeeDocuments.SelectMany(y => GetAllCurrentDocuments(y,UserType.Admin)) + .Select(y => y.MediaId).ToList(); + //get medias for current documents of employees + var personnelCodes = _companyContext.PersonnelCodeSet.Where(x => x.WorkshopId == cmd.WorkshopId).ToList(); + + var medias = _accountContext.Medias.Where(x => currentItemsMediaId.Contains(x.id)) + .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToList(); + + + return employeeDocuments.Select(x => + { + + var employeeLatestConfirmedDocuments = employeeDocuments.Where(y => x.EmployeeId == y.EmployeeId) + .SelectMany(y => GetAllCurrentDocuments(y, UserType.Admin)).ToList(); + + return new EmployeeDocumentsViewModel + { + Id = x.id, + EmployeeId = x.EmployeeId, + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EducationalDegree), + EmployeeFullName = x.Employee.FullName, + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, medias, DocumentItemLabel.EmployeePicture), + IsBlack = passedLeftWorks.Any(y => y == x.EmployeeId) ? "true" : "false", + EmployerFullName = employerFullName, + PersonnelCode = personnelCodes.FirstOrDefault(y => y.EmployeeId == x.EmployeeId)?.PersonnelCode ?? 0 + }; + }).OrderBy(x=>x.PersonnelCode).ToList(); + } + + public List GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(List workshops) + { + var activeEmployees = _companyContext.LeftWorkList + .Where(x => workshops.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= DateTime.Now) + .Select(x=>new{x.WorkshopId,x.EmployeeId}); + + + var query = _companyContext.EmployeeDocuments + .Where(x=> workshops.Contains(x.WorkshopId) && + activeEmployees.Any(y=>y.WorkshopId == x.WorkshopId && y.EmployeeId==x.EmployeeId)) + .Include(x=>x.Workshop).Include(x => x.EmployeeDocumentItemCollection) + .Where(x=> x.IsSentToChecker == false && + (x.EmployeeDocumentItemCollection.Any(y => + y.DocumentStatus == DocumentStatus.SubmittedByClient)) || x.HasRejectedItems) + .GroupBy(x=>x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + { + WorkshopId = x.Key, + WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, + EmployeesWithoutDocumentCount = x.Count() + }); + + + + var workshopEmployers = _companyContext.WorkshopEmployers.Include(x => x.Employer) + .Where(x => query.Any(y=>y.WorkshopId==x.WorkshopId)) + .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToList(); + + + + + var result = query.ToList(); + + + result.ForEach(x => + { + var employer = workshopEmployers.FirstOrDefault(y => y.WorkshopId == x.WorkshopId)?.Employer; + x.EmployerName = employer.FullName; + + //x.SubmittedItems.ForEach(y=>y.PicturePath= medias.FirstOrDefault(z=>z.id == y.MediaId)?.Path ?? ""); + }); + + return result.Where(x=>x.EmployeesWithoutDocumentCount > 0).OrderByDescending(x => x.EmployeesWithoutDocumentCount).ToList(); + } + //ToDo آپلود مدارک و افزودن پرسنل + //public List GetWorkshopsWithNewEmployeesWithoutDocuments(List workshops) + //{ + // var newEmployees = _companyContext.LeftWorkTemps.Where(x => workshops.Contains(x.WorkshopId)) + // .Select(x => new { x.WorkshopId, x.EmployeeId }); + + + // var query = _companyContext.EmployeeDocuments + // .Where(x => workshops.Contains(x.WorkshopId) && + // newEmployees.Any(y => y.WorkshopId == x.WorkshopId && y.EmployeeId == x.EmployeeId)) + // .Include(x => x.Workshop).Include(x => x.EmployeeDocumentItemCollection) + // .GroupBy(x => x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + // { + // WorkshopId = x.Key, + // WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, + // EmployeesWithoutDocumentCount = x.Count() + // }); + + // var workshopEmployers = _companyContext.WorkshopEmployers.Include(x => x.Employer) + // .Where(x => query.Any(y => y.WorkshopId == x.WorkshopId)) + // .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToList(); + + // var result = query.ToList(); + + // result.ForEach(x => + // { + // var employer = workshopEmployers.FirstOrDefault(y => y.WorkshopId == x.WorkshopId)?.Employer; + // x.EmployerName = employer.FullName; + + // //x.SubmittedItems.ForEach(y=>y.PicturePath= medias.FirstOrDefault(z=>z.id == y.MediaId)?.Path ?? ""); + // }); + + // return result.Where(x => x.EmployeesWithoutDocumentCount > 0).OrderByDescending(x => x.EmployeesWithoutDocumentCount).ToList(); + //} + + public List GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId) + { + var activeEmployeesInWorkshop = _companyContext.LeftWorkList + .Where(x => workshopId == x.WorkshopId && x.LeftWorkDate.AddDays(-1) >= DateTime.Today) + .Include(x=>x.Employee).ThenInclude(x=>x.EmployeeDocuments) + .Select(x => new {x.EmployeeId ,FullName= x.Employee.FName +" " +x.Employee.LName,x.Employee.Gender}); + + + var EDItemsList = _companyContext.EmployeeDocumentItems + .Where(x => x.WorkshopId == workshopId && x.DocumentStatus != DocumentStatus.Unsubmitted && + activeEmployeesInWorkshop.Any(y => y.EmployeeId == x.EmployeeId)) + .Include(x => x.EmployeeDocuments).Where(x=> x.EmployeeDocuments.IsSentToChecker == false && + ( (x.DocumentStatus == DocumentStatus.SubmittedByClient) || x.EmployeeDocuments.HasRejectedItems) ) + .GroupBy(x => new { x.EmployeeId, x.DocumentLabel }) + .Select(x => + x.Select(y => new + { + y.EmployeeDocumentId, + Id = y.id, + y.EmployeeDocuments.Gender, + y.DocumentLabel, + y.DocumentStatus, + y.MediaId, + y.RejectionReason, + y.EmployeeId, + y.CreationDate, + IsSentToChecker = y.EmployeeDocuments.IsSentToChecker, + y.EmployeeDocuments.IsConfirmed + }) + .OrderByDescending(y => y.CreationDate).First()) + + .ToList(); + + + + var activeEmployeesInWorkshopList = activeEmployeesInWorkshop.ToList(); + + //get medias for current documents of employees + var mediaIds = EDItemsList.Select(x => x.MediaId).ToList(); + var mediasList = _accountContext.Medias.Where(x => mediaIds.Contains(x.id)) + .Select(x => new MediaViewModel() { Id= x.id, Path = x.Path }).ToList(); + + + + return EDItemsList.GroupBy(x=>x.EmployeeId) + .Select(x => + { + //var requiredDocs = EmployeeDocumentRequiredItems.GetByGender(x.Gender); + var employeeLatestConfirmedDocuments = x + + .Where(y => y.EmployeeId == x.Key &&(y.DocumentStatus == DocumentStatus.SubmittedByClient || y.DocumentStatus == DocumentStatus.SubmittedByAdmin || y.DocumentStatus == DocumentStatus.Rejected)) + .Select(y=>new EmployeeDocumentItemViewModel() + { + Status = y.DocumentStatus, + MediaId = y.MediaId, + DocumentItemLabel = y.DocumentLabel, + Id = y.Id, + RejectionMessage = y.RejectionReason, + StatusString = y.DocumentStatus.ToString() + }).ToList(); + + + //var requiredItemsUploaded = employeeLatestConfirmedDocuments + // .Where(y => requiredDocs.Contains(y.DocumentItemLabel)).Select(y => y.DocumentItemLabel) + // .ToList(); + + return new EmployeeDocumentsViewModel() + { + EmployeeId = x.Key, + IdCardPage1 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.IdCardPage4), + EducationalDegree = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EducationalDegree), + EmployeeFullName = activeEmployeesInWorkshopList.First(y=>y.EmployeeId==x.Key).FullName, + NationalCardFront = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(employeeLatestConfirmedDocuments, mediasList, DocumentItemLabel.EmployeePicture), + //RequiredDocumentsUploaded = requiredItemsUploaded, + //RequiredDocuments = requiredDocs + }; + }).ToList(); + + } + + + /// + /// برای دریافت لیست کارگاه های آپلود کرده در لیست چکر + /// + public List GetWorkshopsWithUploadedDocuments() + { + var itemsQuery = _companyContext.EmployeeDocumentItems + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted && x.DocumentStatus != DocumentStatus.SubmittedByClient) + .Include(x => x.EmployeeDocuments) + .ThenInclude(x => x.Workshop).ThenInclude(x=>x.WorkshopEmployers).ThenInclude(x=>x.Employer) + .GroupBy(x=>x.WorkshopId).Select(x => new WorkshopWithEmployeeDocumentsViewModel() + { + SubmittedItemsCount = x.Count(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin), + WorkshopId = x.Key, + WorkshopFullName = x.First().EmployeeDocuments.Workshop.WorkshopName, + EmployerName = x.First().EmployeeDocuments.Workshop.WorkshopEmployers.First().Employer.FullName + }); + + + + //var workshopIds = itemsQuery.Select(x => x.WorkshopId); + // var workshopEmployers = _companyContext.WorkshopEmployers.Include(x => x.Employer) + // .Where(x=> workshopIds.Contains(x.WorkshopId)) + // .GroupBy(x => x.WorkshopId).Select(x => x.FirstOrDefault()).ToList(); + + + + //var mediaIds = _companyContext.EmployeeDocumentItems.Where(x=>x.DocumentStatus==DocumentStatus.Submitted).Select(x=>x.EmployeeDocumentId).ToList(); + + //var medias = + // _accountContext.Medias.Where(x =>mediaIds.Contains(x.id)).ToList(); + + + // list.ForEach(x => + // { + // var employer = workshopEmployers.FirstOrDefault(y => y.WorkshopId == x.WorkshopId)?.Employer; + + //x.EmployerName = employer.FullName; + // x.SubmittedItemsCount = x.SubmittedItems.Count(y=>y.Status == DocumentStatus.SubmittedByAdmin); + // //x.SubmittedItems.ForEach(y=>y.PicturePath= medias.FirstOrDefault(z=>z.id == y.MediaId)?.Path ?? ""); + // }); + + return itemsQuery.Where(x=>x.SubmittedItemsCount > 0).OrderByDescending(x=>x.SubmittedItemsCount).ToList(); + } + + + public List GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow() + { + var query = _companyContext.EmployeeDocuments + .Include(x => x.Workshop); + + var workshopEmployers = _companyContext.WorkshopEmployers.Include(x => x.Employer) + .Where(x => query.Any(y=>y.WorkshopId == x.WorkshopId)) + .GroupBy(x => x.WorkshopId).ToList() + .Select(x => new { x.Key, x.FirstOrDefault()!.Employer }).ToList(); + + var result = query + .GroupBy(x => x.WorkshopId).ToList().Select(x => + new WorkshopWithEmployeeDocumentsViewModel() + { + SubmittedItemsCount = x.Count(), + WorkshopId = x.Key, + WorkshopFullName = x.FirstOrDefault().Workshop.WorkshopName, + }).ToList(); + + result.ForEach(x => + { + var employer = workshopEmployers.FirstOrDefault().Employer; + x.EmployerName = employer.FullName; + }); + return result; + } + + public List GetByWorkshopIdWithItemsForChecker(long workshopId, bool onlyConfirmed) + { + //todo: optimize here + var workshopDocuments = _companyContext.EmployeeDocuments.Where(x => x.WorkshopId == workshopId) + .Include(x => x.EmployeeDocumentItemCollection) + .Where(x=>x.EmployeeDocumentItemCollection.Any(y => + y.DocumentStatus != DocumentStatus.Unsubmitted && y.DocumentStatus != DocumentStatus.SubmittedByClient)); + + var employeesList = _companyContext.Employees.Where(x => + workshopDocuments.Any(y => y.EmployeeId == x.id)) + .Select(x => new { Id = x.id, FullName = (x.FName + " " + x.LName) }).ToList(); + + var employer = _companyContext.WorkshopEmployers.Include(x => x.Employer) + .FirstOrDefault(x => x.WorkshopId == workshopId)!.Employer; + + var employerName = employer.FullName; + //var employerName = employer.IsLegal == "حقیقی" ? (employer.FName + " " + employer.LName) : employer.LName; + + + var workshopDocumentsList = workshopDocuments.ToList(); + + + + + + var workshopDocumentsListWithConfirmed = workshopDocumentsList.Select(x => new + { + EmployeeDocuments = x, + EmployeeDocumentItemCollection = x.EmployeeDocumentItemCollection.Where(y=> y.DocumentStatus != DocumentStatus.Unsubmitted && + y.DocumentStatus != DocumentStatus.SubmittedByClient) + .GroupBy(y => y.DocumentLabel) + .Select(y => y.MaxBy(z => z.CreationDate)) + . ToList() + }).ToList(); + + var workshopName = _companyContext.Workshops.FirstOrDefault(x => x.id == workshopId)?.WorkshopFullName ?? ""; + + var mediaIds = workshopDocumentsList.SelectMany(x => x.EmployeeDocumentItemCollection) + + .Select(x => x.MediaId).ToList(); + var mediasList = _accountContext.Medias.Where(x=>mediaIds.Contains(x.id)) + .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToList(); + + + if (onlyConfirmed) + workshopDocumentsListWithConfirmed=workshopDocumentsListWithConfirmed.Where(x => + x.EmployeeDocumentItemCollection.All(y => y.DocumentStatus != DocumentStatus.SubmittedByAdmin)).ToList(); + else + workshopDocumentsListWithConfirmed = workshopDocumentsListWithConfirmed.Where(x => + x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin)).ToList(); + + return workshopDocumentsListWithConfirmed.Select(x => new EmployeeDocumentsViewModel() + { + Id=x.EmployeeDocuments.id, + EmployeeFullName = employeesList.FirstOrDefault(y=>y.Id==x.EmployeeDocuments.EmployeeId)?.FullName ?? "", + EmployeeId = x.EmployeeDocuments.EmployeeId, + WorkshopId = workshopId, + WorkshopName = workshopName, + Gender = x.EmployeeDocuments.Gender, + EducationalDegree = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection,mediasList, + DocumentItemLabel.EducationalDegree), + IdCardPage1 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage4), + NationalCardFront = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.EmployeePicture), + SubmittedItemsCount = x.EmployeeDocumentItemCollection.Count(y=>y.DocumentStatus==DocumentStatus.SubmittedByAdmin), + RejectedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Rejected), + ConfirmedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Confirmed), + EmployerFullName = employerName, + IsSentToChecker = x.EmployeeDocuments.IsSentToChecker + }).Where(x=>x.SubmittedItemsCount > 0 || x.RejectedItemsCount > 0 || x.ConfirmedItemsCount > 0) + .OrderByDescending(x=>x.SubmittedItemsCount).ToList(); + + } + + + + + public int GetCheckerWorkFlowCount() + { + return _companyContext.EmployeeDocumentItems.Include(x => x.EmployeeDocuments) + .Count(x => x.DocumentStatus == DocumentStatus.SubmittedByAdmin); + } + + //ToDo آپلود مدارک و افزدن پرسنل + //public int GetAdminWorkFlowCountForNewEmployees(List workshopIds) + //{ + // //New employees created by client should have their documents uploaded or confirmed + // var newEmployeesInWorkshop = _companyContext.LeftWorkTemps.Where(x => workshopIds.Contains(x.WorkshopId)); + + // var duty = _companyContext.EmployeeDocuments + // .Count(x => workshopIds.Contains(x.WorkshopId) && + // newEmployeesInWorkshop.Any(y => + // y.EmployeeId == x.EmployeeId) + // && x.IsSentToChecker == false && x.IsConfirmed == false); + + + + // return duty; + //} + + public int GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List workshopIds) + { + + + //Uploaded items done by client should be reviewed by admin before proceeding to checker + var activeEmployeesInWorkshop = _companyContext.LeftWorkList + .Where(x => workshopIds.Contains(x.WorkshopId) && x.LeftWorkDate.AddDays(-1) >= DateTime.Today); + var dutyCount = _companyContext.EmployeeDocuments + .Count(x => workshopIds.Contains(x.WorkshopId) && + activeEmployeesInWorkshop.Any(y => y.EmployeeId == x.EmployeeId) && + x.IsSentToChecker == false && + (x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus == DocumentStatus.SubmittedByClient) || x.HasRejectedItems)); + + return dutyCount; + } + + public List GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId) + { + + //todo: optimize here + var workshopDocuments = _companyContext.EmployeeDocuments.Where(x => x.WorkshopId == workshopId) + .Include(x => x.EmployeeDocumentItemCollection) + .Where(x => x.IsSentToChecker); + + var employeesList = _companyContext.Employees.Where(x => + workshopDocuments.Any(y => y.EmployeeId == x.id)) + .Select(x => new { Id = x.id, FullName = (x.FName + " " + x.LName) }).ToList(); + + + var employer = _companyContext.WorkshopEmployers.Include(x => x.Employer) + .FirstOrDefault(x => x.WorkshopId == workshopId)!.Employer; + + + var employerName = employer.FullName; + //var employerName = employer.IsLegal == "حقیقی" ? (employer.FName + " " + employer.LName) : employer.LName; + + + var workshopDocumentsList = workshopDocuments.ToList(); + + + + + + var workshopDocumentsListWithConfirmed = workshopDocumentsList.Select(x => new + { + EmployeeDocuments = x, + EmployeeDocumentItemCollection = x.EmployeeDocumentItemCollection + .Where(y => y.DocumentStatus != DocumentStatus.Unsubmitted) + .GroupBy(y => y.DocumentLabel) + .Select(y => y.MaxBy(z => z.CreationDate)).ToList() + }).ToList(); + + var workshopName = _companyContext.Workshops.FirstOrDefault(x => x.id == workshopId)?.WorkshopFullName ?? ""; + + var mediaIds = workshopDocumentsList.SelectMany(x => x.EmployeeDocumentItemCollection) + .Where(x => x.DocumentStatus != DocumentStatus.Unsubmitted).Select(x => x.MediaId).ToList(); + var mediasList = _accountContext.Medias.Where(x => mediaIds.Contains(x.id)) + .Select(x => new MediaViewModel() { Id = x.id, Path = x.Path }).ToList(); + + workshopDocumentsListWithConfirmed = workshopDocumentsListWithConfirmed.Where(x => + x.EmployeeDocumentItemCollection.Any(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin)).ToList(); + + return workshopDocumentsListWithConfirmed.Select(x => new EmployeeDocumentsViewModel() + { + Id = x.EmployeeDocuments.id, + EmployeeFullName = employeesList.FirstOrDefault(y => y.Id == x.EmployeeDocuments.EmployeeId)?.FullName ?? "", + EmployeeId = x.EmployeeDocuments.EmployeeId, + WorkshopId = workshopId, + WorkshopName = workshopName, + Gender = x.EmployeeDocuments.Gender, + EducationalDegree = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.EducationalDegree), + IdCardPage1 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage1), + IdCardPage2 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage2), + IdCardPage3 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage3), + IdCardPage4 = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.IdCardPage4), + NationalCardFront = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.NationalCardFront), + NationalCardRear = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.NationalCardRear), + MilitaryServiceCard = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.MilitaryServiceCard), + EmployeePicture = GetByLabelAndLoadMedia(x.EmployeeDocumentItemCollection, mediasList, + DocumentItemLabel.EmployeePicture), + SubmittedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.SubmittedByAdmin), + RejectedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Rejected), + ConfirmedItemsCount = x.EmployeeDocumentItemCollection.Count(y => y.DocumentStatus == DocumentStatus.Confirmed), + EmployerFullName = employerName, + IsSentToChecker = x.EmployeeDocuments.IsSentToChecker + }).Where(x => x.SubmittedItemsCount > 0) + .OrderByDescending(x => x.SubmittedItemsCount).ToList(); + } + + #region Private Methods + + private static List GetCurrentConfirmedDocumentItemsFromEmployeeDocumentItems(EmployeeDocuments entity) + { + return entity.EmployeeDocumentItemCollection.Where(x => x.DocumentStatus == DocumentStatus.Confirmed) + .GroupBy(x => x.DocumentLabel) + .Select(x => x.MaxBy(y => y.CreationDate)).ToList(); + } + + private static List GetAllCurrentDocuments(EmployeeDocuments entity,UserType userType) + { + return entity.EmployeeDocumentItemCollection.Where(x=>x.DocumentStatus != DocumentStatus.Unsubmitted || x.UploaderType == userType) + .GroupBy(x => x.DocumentLabel).Select(x => x.OrderByDescending(y => y.CreationDate).First()).ToList(); + } + + private static EmployeeDocumentItemViewModel GetByLabelAndLoadMedia(List items, + List medias, DocumentItemLabel label) + { + if (items == null || items.Count == 0) + return new(); + var item = items.FirstOrDefault(x => x.DocumentLabel == label); + + if (item == null || item.MediaId == 0) + return new(); + + return new EmployeeDocumentItemViewModel() + { + DocumentItemLabel = label, + Id = item.id, + StatusString = item.DocumentStatus.ToString().ToLower(), + Status = item.DocumentStatus, + PicturePath = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Path ?? "", + RejectionMessage = item.RejectionReason + }; + } + + + private static EmployeeDocumentItemViewModel GetByLabelAndLoadMedia(List items, + List medias, DocumentItemLabel label) + { + if (items == null || items.Count == 0) + return new(); + var item = items.FirstOrDefault(x => x.DocumentItemLabel == label); + + if (item == null || item.MediaId == 0) + return new(); + + item.PicturePath = medias.FirstOrDefault(x => x.Id == item.MediaId)?.Path ?? ""; + return item; + + } + + #endregion + } +} diff --git a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs index 195899f1..561b0829 100644 --- a/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs +++ b/CompanyManagment.EFCore/Repository/LeftWorkRepository.cs @@ -196,7 +196,14 @@ public class LeftWorkRepository : RepositoryBase, ILeftWorkRepos }; } - public List GetLeftPersonelByWorkshopId(List workshopIds) + public List GetEmployeeIdsByWorkshopIdActiveInDates(long workshopId, DateTime start, DateTime end) + { + return _context.LeftWorkList + .Where(x => x.WorkshopId == workshopId && x.LeftWorkDate >= start && x.StartWorkDate.AddDays(-1) <= end) + .GroupBy(x => x.EmployeeId).Select(x => x.Key).ToList(); + } + + public List GetLeftPersonelByWorkshopId(List workshopIds) { return _context.LeftWorkList.Select(x => new LeftWorkViewModel() { diff --git a/PersonalContractingParty.Config/PersonalBootstrapper.cs b/PersonalContractingParty.Config/PersonalBootstrapper.cs index 37d7b6e9..f9ef3bfc 100644 --- a/PersonalContractingParty.Config/PersonalBootstrapper.cs +++ b/PersonalContractingParty.Config/PersonalBootstrapper.cs @@ -191,6 +191,11 @@ using Company.Domain.EmployeeBankInformationAgg; using Company.Domain.RollCallAgg.DomainService; using CompanyManagment.App.Contracts.Bank; using CompanyManagment.App.Contracts.EmployeeBankInformation; +using Company.Domain.EmployeeDocumentItemAgg; +using Company.Domain.EmployeeDocumentsAdminSelectionAgg; +using Company.Domain.EmployeeDocumentsAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.EmployeeDocumentsAdminSelection; namespace PersonalContractingParty.Config; @@ -403,6 +408,13 @@ public class PersonalBootstrapper services.AddTransient(); #endregion #region Pooya + + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); services.AddTransient(); diff --git a/ServiceHost/Areas/Admin/Pages/Shared/_AdminLayout.cshtml b/ServiceHost/Areas/Admin/Pages/Shared/_AdminLayout.cshtml index ffa67e78..73d4abe9 100644 --- a/ServiceHost/Areas/Admin/Pages/Shared/_AdminLayout.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Shared/_AdminLayout.cshtml @@ -380,6 +380,7 @@ diff --git a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml index 5eea31bb..83cf0976 100644 --- a/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Shared/_Menu.cshtml @@ -1,36 +1,28 @@ -@using System.Reflection.Metadata -@using AccountManagement.Application.Contracts.Task -@using AccountManagement.Application.Contracts.Ticket -@using AccountManagement.Domain.TicketAccessAccountAgg +@using AccountManagement.Domain.TicketAccessAccountAgg @using Microsoft.AspNetCore.Mvc.TagHelpers -@*@using _0_Framework.Infrastructure*@ @inject _0_Framework.Application.IAuthHelper AuthHelper; @inject ITicketAccessAccountRepository TicketAccessAccount; -@inject ITicketApplication TicketApplication; -@inject ITaskApplication TaskApplication; @{ - .showCount span { - background-color: #dd2a2a; - width: 28px; - height: 28px; - display: flex; - align-items: center; - justify-content: center; - border-radius: 40px; - color: #fff; - font-weight: 600; - padding: 2px 0 0 0; - } - - var currentAccout = AuthHelper.CurrentAccountInfo(); - int taskCount = TaskApplication.RequestedAndOverdueTasksCount(currentAccout.Id); - int ticketCount = TicketApplication.GetAdminTicketsCount(); }
-
- @taskCount +
+ +
+ +
@@ -362,8 +357,11 @@ مدیریت تیکت
-
- @ticketCount +
+ +
+ +
@@ -417,19 +415,35 @@
  • - + +
    +
    + +
    + +
    +
    +
  • - + +
    +
    + +
    + +
    +
  • diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml new file mode 100644 index 00000000..9241d804 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml @@ -0,0 +1,97 @@ +@page +@model ServiceHost.Areas.AdminNew.Pages.Company.Checker.IndexModel + +@{ + string clientVersion = _0_Framework.Application.Version.StyleVersion; + ViewData["Title"] = " - " + "بررسی توسط ناظر"; +} + +@section Styles { + + +} + +
    +
    +
    +
    + +
    +

    بررسی توسط ناظر

    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + +@section Script { + + + +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml.cs new file mode 100644 index 00000000..975a0509 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/Checker/Index.cshtml.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using WorkFlow.Application.Contracts.AdminWorkFlow; + +namespace ServiceHost.Areas.AdminNew.Pages.Company.Checker +{ + public class IndexModel : PageModel + { + private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; + + public int UploadDocumentCheckerCount; + + public IndexModel(IAdminWorkFlowApplication adminWorkFlowApplication) + { + _adminWorkFlowApplication = adminWorkFlowApplication; + } + + public void OnGet() + { + UploadDocumentCheckerCount = _adminWorkFlowApplication.GetWorkFlowCountForChecker(); + } + } +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml new file mode 100644 index 00000000..684507df --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml @@ -0,0 +1,204 @@ +@page +@model ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments.EmployeeListModel + +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + Layout = "Shared/_Layout"; + ViewData["title"] = " - لیست کل پرسنل"; + int index = 1; +} + + + + + + + + + + + +
    +
    +
    +
    + +
    +

    اطلاعات مدارک پرسنل

    + @*
    @Model.WorkshopFullname
    *@ +
    @Model.WorkshopFullName
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + + +
    +
    + +
    +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    +
    ردیف
    +
    نام و نام خانوادگی
    +
    عکس پرسنلی
    +
    کارت ملی
    +
    کارت پایان خدمت
    +
    شناسنامه
    +
    عملیات
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml.cs new file mode 100644 index 00000000..392ce32d --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/EmployeeList.cshtml.cs @@ -0,0 +1,174 @@ +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.Error; +using CompanyManagment.App.Contracts.Workshop; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Security.Claims; +using _0_Framework.Application; +using CompanyManagment.App.Contracts.Employee; +using Company.Domain.EmployeeAgg; + +namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocuments +{ + public class EmployeeListModel : PageModel + { + private readonly IPasswordHasher _passwordHasher; + private readonly IAuthHelper _authHelper; + private readonly IWorkshopApplication _workshopApplication; + private readonly IWebHostEnvironment _webHostEnvironment; + private readonly IEmployeeApplication _employeeApplication; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + public long WorkshopId { get; set; } + public string WorkshopFullName; + + public EmployeeListModel(IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IEmployeeApplication employeeApplication, IAuthHelper authHelper, IPasswordHasher passwordHasher, IWebHostEnvironment webHostEnvironment) + { + _workshopApplication = workshopApplication; + _employeeDocumentsApplication = employeeDocumentsApplication; + _employeeApplication = employeeApplication; + _authHelper = authHelper; + _passwordHasher = passwordHasher; + _webHostEnvironment = webHostEnvironment; + } + + public IActionResult OnGet(long workshopId) + { + + if (workshopId <= 0) + return BadRequest(); + + WorkshopId = workshopId; + var workshopInfo = _workshopApplication.GetWorkshopInfo(workshopId); + WorkshopFullName = workshopInfo.WorkshopFullName; + return Page(); + } + + public IActionResult OnGetEmployeeDocumentsAjax(long workshopId,string employeeName, int pageIndex, string searchMode = "") + { + if (workshopId > 0) + { + EmployeeDocumentSearchMode mode; + switch (searchMode.ToLower()) + { + case "all": + mode = EmployeeDocumentSearchMode.All; + break; + case "active": + mode = EmployeeDocumentSearchMode.ActiveEmployees; + break; + case "deactive": + mode = EmployeeDocumentSearchMode.DeactiveEmployees; + break; + default: + mode = EmployeeDocumentSearchMode.All; + break; + } + + List result = _employeeDocumentsApplication.SearchForAdmin(new SearchEmployeeDocuments() + { + WorkshopId = workshopId, + PageIndex = pageIndex, + EmployeeName = employeeName + }, mode); + + return new JsonResult(new + { + IsSuccedded = true, + data = result, + pageIndex = result.Count() + }); + } + else + { + return new JsonResult(new + { + IsSuccedded = false, + message = "داده ای یافت نشد!", + }); + } + } + + + + public IActionResult OnGetCreateUploadDocument(long workshopId,long employeeId) + { + if (workshopId <= 0) + { + var resultError = new ErrorViewModel() + { + Message = "کارگاه شما یافت نشد" + }; + return Partial("../Error/_ErrorModal", resultError); + } + + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(employeeId, workshopId); + + return Partial("ModalUploadDocument", employeeDocument); + } + + public IActionResult OnPostCreateUploadDocument(AddEmployeeDocumentItem command) + { + var result = _employeeDocumentsApplication.AddEmployeeDocumentItemForAdmin(command); + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(command.EmployeeId, command.WorkshopId); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + imageSrc = employeeDocument + }); + } + + public IActionResult OnPostRemoveEmployeeDocumentByLabel(long workshopId,long employeeId, DocumentItemLabel label) + { + var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdminTemp(workshopId, employeeId, label); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message + }); + } + public IActionResult OnPostRemoveClientEmployeeDocumentItemsByLabels(long workshopId, long employeeId, List labels) + { + var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdmin(workshopId, employeeId, labels); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message + }); + } + public IActionResult OnPostCancelOperation(long workshopId, long employeeId) + { + var result = _employeeDocumentsApplication.DeleteUnsubmittedItems(workshopId, employeeId); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } + + public IActionResult OnPostSaveSubmit(SubmitEmployeeDocuments cmd) + { + + var result = _employeeDocumentsApplication.SubmitDocumentItemsByAdmin(cmd); + + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + }); + } + + public IActionResult OnGetShowPicture(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + return NotFound(); + + + if (!System.IO.File.Exists(filePath)) + return NotFound(); + + var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); + return PhysicalFile(filePath, contentType); + } + } +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml new file mode 100644 index 00000000..55c90c98 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocuments/ModalUploadDocument.cshtml @@ -0,0 +1,457 @@ +@using System.Reflection +@using _0_Framework.Application +@using CompanyManagment.App.Contracts.EmployeeDocuments +@using Microsoft.AspNetCore.Mvc.TagHelpers +@model CompanyManagment.App.Contracts.EmployeeDocuments.EmployeeDocumentsViewModel + +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + +} + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/DetailsPersonnelModal.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/DetailsPersonnelModal.cshtml new file mode 100644 index 00000000..9ce51824 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/DetailsPersonnelModal.cshtml @@ -0,0 +1,431 @@ +@model CompanyManagment.App.Contracts.EmployeeDocuments.EmployeeDocumentsViewModel +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + + +} + + +
    + + +
    +
    +
    + + + + + +
    +
    +
    برسی مدارک @Model.EmployeeFullName
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    + @if (Model.Gender != "زن") + { +
    +
    +
    +
    +
    + } + else + { +
    +
    +
    +
    + } +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + مشخصات پرسنل +
    +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    +
    + +
    +
    + + @* here changes to slecet options*@ + +
    +
    +
    + + +
    + +
    +
    در صورت عدم تایید برای پرسنل توضیحات بگذارید.
    +
    + + + + + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    +@* + *@ + + + +
    + + + + + + + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/EmployeesList.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/EmployeesList.cshtml new file mode 100644 index 00000000..9da297a5 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/EmployeesList.cshtml @@ -0,0 +1,200 @@ +@page +@model ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocumentsManagement.EmployeesListModel +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + Layout = "Shared/_Layout"; + ViewData["title"] = " - لیست کل پرسنل"; + int index = 1; +} + + + + + + + + + +
    +
    +
    +
    + +
    +

    اطلاعات مدارک پرسنل

    +
    @Model.WorkshopFullname
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + + +
    +
    + +
    +
    + +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    +
    ردیف
    +
    نام کارفرما
    +
    نام کارگاه
    +
    نام پرسنل
    +
    درحال برسی
    +
    +
    +
    عملیات
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/EmployeesList.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/EmployeesList.cshtml.cs new file mode 100644 index 00000000..24b9c18d --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/EmployeesList.cshtml.cs @@ -0,0 +1,206 @@ +using _0_Framework.Application; +using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.Workshop; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Security.Claims; +using CompanyManagment.Application; + +namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocumentsManagement +{ + public class EmployeesListModel : PageModel + { + private readonly IWorkshopApplication _workshopApplication; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + private readonly IEmployeeApplication _employeeApplication; + private readonly IAuthHelper _authHelper; + public long WorkshopId; + public string WorkshopFullname; + private readonly IPasswordHasher _passwordHasher; + + public EmployeesListModel(IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, + IEmployeeApplication employeeApplication, IAuthHelper authHelper) + { + _workshopApplication = workshopApplication; + _employeeDocumentsApplication = employeeDocumentsApplication; + _employeeApplication = employeeApplication; + _authHelper = authHelper; + } + + public void OnGet(long workshopId) + { + var workshop = _workshopApplication.GetWorkshopInfo(workshopId); + WorkshopId = workshopId; + WorkshopFullname = workshop.WorkshopFullName; + } + + public IActionResult OnGetDetailsPersonnelModal(long workshopId,long employeeId) + { + var details = _employeeDocumentsApplication.GetDetailsForChecker(employeeId, workshopId); + return Partial("DetailsPersonnelModal",details); + } + + public IActionResult OnGetEmployeeDocumentsAjax(long workshopId, string employeeName, int pageIndex, bool confirmedOnly=false) + { + if (workshopId > 0) + { + + var employeeItems = + _employeeDocumentsApplication.GetByWorkshopIdWithItemsForChecker(workshopId, confirmedOnly); + + + + //List result = _employeeDocumentsApplication.Search(new SearchEmployeeDocuments() + //{ + // WorkshopId = workshopId, + // PageIndex = pageIndex, + // EmployeeName = employeeName + //}, mode); + + //List test = + //[ + // new EmployeeDocumentsViewModel() + // { + // EmployeeFullName = "محمد تستی", + // EmployeeId = 1, + // Gender = "مرد", + // Id = 1 + // }, + // new EmployeeDocumentsViewModel() + // { + // EmployeeFullName = "شهناز تستی", + // EmployeeId = 2, + // Gender = "زن", + // Id = 2 + // }, + // new EmployeeDocumentsViewModel() + // { + // EmployeeFullName = "رضا تستی", + // EmployeeId = 3, + // Gender = "مرد", + // Id = 3 + // }, + // new EmployeeDocumentsViewModel() + // { + // EmployeeFullName = "امیر تستی", + // EmployeeId = 4, + // Gender = "مرد", + // Id = 4 + // }, + // new EmployeeDocumentsViewModel() + // { + // EmployeeFullName = "2شهناز تستی", + // EmployeeId = 5, + // Gender = "زن", + // Id = 5 + // }, + // new EmployeeDocumentsViewModel() + // { + // EmployeeFullName = "شهناز تستی3", + // EmployeeId = 6, + // Gender = "زن", + // Id = 6 + // }, + // new EmployeeDocumentsViewModel() + // { + // EmployeeFullName = "4شهناز تستی", + // EmployeeId = 7, + // Gender = "مرد", + // Id = 7 + // } + + //]; + + + + return new JsonResult(new + { + IsSuccedded = true, + data = employeeItems, + //pageIndex = test.Count() + }); + } + else + { + return new JsonResult(new + { + IsSuccedded = false, + message = "داده ای یافت نشد!", + }); + } + } + public IActionResult OnGetEmployeeDocument(long workshopId, long employeeId) + { + var result = _employeeDocumentsApplication.GetDetailsForChecker(workshopId, employeeId); + return new JsonResult(new + { + result = result + }); + } + // public IActionResult OnPostConfirm(long documentItemId) + // { + // var command = new ConfirmDocumentItem() { EmployeeDocumentItemId = documentItemId}; + // var result = _employeeDocumentsApplication.ConfirmDocumentItem(command); + // return new JsonResult(new + // { + //success = result.IsSuccedded, + // message = result.Message + // }); + // } + + public IActionResult OnGetEmployeeInfo(long employeeId) + { + EditEmployee employees = _employeeApplication.GetDetails(employeeId); + return new JsonResult(new + { + result = employees + }); + } + + //public IActionResult OnPostReject(long documentItemId, string message) + //{ + // var command = new RejectDocumentItem() { EmployeeDocumentItemId = documentItemId, Message = message }; + // var result = _employeeDocumentsApplication.RejectDocumentItem(command); return new JsonResult(new + // { + // success = result.IsSuccedded, + // message = result.Message + // }); + //} + public IActionResult OnPostSubmitCheckerOperation(long workshopId,long employeeId,List operations) + { + var command = new CheckerDocumentsOperation() + { + EmployeeId = employeeId, + WorkshopId = workshopId, + Operations = operations + }; + var result = _employeeDocumentsApplication.SubmitCheckerOperation(command); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } + public IActionResult OnGetShowPicture(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + return NotFound(); + + if (!System.IO.File.Exists(filePath)) + return NotFound(); + + var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); + return PhysicalFile(filePath, contentType); + } + + public IActionResult OnPostRemoveEmployeeDocumentByLabel(long workshopId, long employeeId, DocumentItemLabel label) + { + var result = _employeeDocumentsApplication.DeleteEmployeeMultipleUnsubmittedDocumentsByLabel(workshopId, employeeId, label); + return new JsonResult(new + { + message = result.Message + }); + } + } +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/Index.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/Index.cshtml new file mode 100644 index 00000000..fc107881 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/Index.cshtml @@ -0,0 +1,228 @@ +@page +@model ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocumentsManagement.IndexModel +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + Layout = "Shared/_Layout"; + ViewData["title"] = " - لیست کل پرسنل"; + int index = 1; +} + + + + + + + + + + + +
    +
    +
    +
    + +
    +

    برسی اطلاعات مدارک پرسنل

    +
    انتخاب کارگاه ها
    +
    +
    + +
    +
    +
    + + +@*
    +
    +
    + + + +
    +
    +
    *@ + + + +@*
    +
    + +
    +
    *@ + +
    + + +@*
    +
    + +
    +
    *@ + + +
    +
    +
    +
    + +
    +
    ردیف
    +
    نام کارگاه
    +
    نام کارفرما
    +
    مدارک در انتظار
    +
    عملیات
    +
    + + @*
    +
    *@ +
    +
    +
    + +
    +
    +
    +
    +
    + + + + + + +@* *@ + + + + + + + + + + + + diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/Index.cshtml.cs new file mode 100644 index 00000000..7fca8ee7 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/EmployeesDocumentsManagement/Index.cshtml.cs @@ -0,0 +1,149 @@ +using _0_Framework.Application; +using CompanyManagment.App.Contracts.Employee; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.Error; +using CompanyManagment.App.Contracts.Workshop; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Security.Claims; + +namespace ServiceHost.Areas.AdminNew.Pages.Company.EmployeesDocumentsManagement +{ + public class IndexModel : PageModel + { + private readonly IWorkshopApplication _workshopApplication; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + private readonly IEmployeeApplication _employeeApplication; + private readonly IAuthHelper _authHelper; + public long WorkshopId; + public string WorkshopFullname; + private readonly IPasswordHasher _passwordHasher; + + public IndexModel(IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IEmployeeApplication employeeApplication, IAuthHelper authHelper, IPasswordHasher passwordHasher) + { + _workshopApplication = workshopApplication; + _employeeDocumentsApplication = employeeDocumentsApplication; + _employeeApplication = employeeApplication; + _authHelper = authHelper; + _passwordHasher = passwordHasher; + } + + public IActionResult OnGetDetailsPersonnelModal() + { + return Partial("DetailsPersonnelModal"); + } + public IActionResult OnGetListWorkshops() + { + var workshopsWithUploadedDocuments = _employeeDocumentsApplication.GetWorkshopsWithUploadedDocumentsForChecker(); + + // List test = + // [ + // new WorkshopViewModel() + // { + // WorkshopFullName = "پلاسکو فروشی گلستان", + // Id = 177 + // }, + // new WorkshopViewModel() + // { + // WorkshopFullName = "کباب مهدی", + // Id = 170 + // }, + // new WorkshopViewModel() + // { + // WorkshopFullName = "Test3" + // }, + // new WorkshopViewModel() + // { + // WorkshopFullName = "Test4" + // }, + // new WorkshopViewModel() + // { + // WorkshopFullName = "Test5" + // }, + // new WorkshopViewModel() + // { + // WorkshopFullName = "Test6" + // } + //]; + if (workshopsWithUploadedDocuments.Count > 0) + { + return new JsonResult(new + { + IsSuccedded = true, + result = workshopsWithUploadedDocuments + }); + } + else + { + return new JsonResult(new + { + IsSuccedded = false, + message = "داده ای یافت نشد!", + }); + } + } + + public IActionResult OnGetCreateUploadDocument(long workshopId, long employeeId) + { + if (workshopId <= 0) + { + var resultError = new ErrorViewModel() + { + Message = "کارگاه شما یافت نشد" + }; + return Partial("../Error/_ErrorModal", resultError); + } + + var employeeDocuments = _employeeDocumentsApplication.GetDetailsForAdmin(employeeId, workshopId); + + + return Partial("ModalUploadDocument", employeeDocuments); + } + + public IActionResult OnPostCreateUploadDocument(AddEmployeeDocumentItem command) + { + if (command.WorkshopId <= 0) + return new JsonResult(new + { + IsSuccedded = false, + message = "کارگاه ای یافت نشد", + }); + + command.WorkshopId = command.WorkshopId; + + + var result = _employeeDocumentsApplication.AddEmployeeDocumentItemForAdmin(command); + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(command.EmployeeId, command.WorkshopId); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + imageSrc = employeeDocument + }); + } + + public IActionResult OnGetShowPicture(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + return NotFound(); + + + + if (!System.IO.File.Exists(filePath)) + return NotFound(); + + + var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); + return PhysicalFile(filePath, contentType); + } + + public IActionResult OnPostRemoveEmployeeDocumentByLabel(long workshopId, long employeeId, DocumentItemLabel label) + { + var result = _employeeDocumentsApplication.DeleteEmployeeMultipleUnsubmittedDocumentsByLabel(workshopId, employeeId, label); + return new JsonResult(new + { + message = result.Message + }); + } + } +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml new file mode 100644 index 00000000..0c1338e0 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml @@ -0,0 +1,132 @@ +@page +@model ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow.EmployeesDocumentsModel + +@{ + string clientVersion = _0_Framework.Application.Version.StyleVersion; + Layout = "Shared/_Layout"; + ViewData["title"] = " - بارگذاری مدارک توسط کارفرما"; + int index = 1; +} + +@section Styles { + + + + + + + + + +} + +
    +
    +
    +
    + +
    +

    بارگذاری مدارک توسط کارفرما

    +
    +
    + +
    +
    +
    + + +
    + +
    + +
    +
    +
    +
    +
    نام نقش
    +
    +
    +
    ردیف
    +
    نام کابران
    +
    عکس پرسنلی
    +
    کارت ملی
    +
    کارت پایان خدمت
    +
    شناسنامه
    +
    عملیات
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    + +
    +
    +
    + @for (int j = 0; j < 30; j++) + { +
    + } +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    + + + + +@section Script { + + + + +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml.cs new file mode 100644 index 00000000..f747bfe4 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/EmployeesDocuments.cshtml.cs @@ -0,0 +1,135 @@ +using _0_Framework.Application; +using Company.Domain.WorkshopAccountAgg; +using CompanyManagment.App.Contracts.EmployeeDocuments; +using CompanyManagment.App.Contracts.Error; +using CompanyManagment.App.Contracts.Workshop; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using WorkFlow.Application.Contracts.AdminWorkFlow; + +namespace ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow +{ + [Authorize] + public class EmployeesDocumentsModel : PageModel + { + private readonly IWorkshopApplication _workshopApplication; + private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication; + private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; + private readonly IWorkshopAccountRepository _workshopAccountRepository; + private readonly IAuthHelper _authHelper; + public int EmployeeDocumentsAwaitingSubmitCount; + + public EmployeesDocumentsModel(IAdminWorkFlowApplication adminWorkFlowApplication, IWorkshopApplication workshopApplication, IEmployeeDocumentsApplication employeeDocumentsApplication, IWorkshopAccountRepository workshopAccountRepository, IAuthHelper authHelper) + { + _adminWorkFlowApplication = adminWorkFlowApplication; + _workshopApplication = workshopApplication; + _employeeDocumentsApplication = employeeDocumentsApplication; + _workshopAccountRepository = workshopAccountRepository; + _authHelper = authHelper; + } + + public void OnGet() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); + EmployeeDocumentsAwaitingSubmitCount = _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops).EmployeeDocumentsAwaitingSubmit; + } + + public IActionResult OnGetWorkshopsWithDocumentsAwaitingUploadAjax() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops= _workshopAccountRepository.GetList(accountId).Select(x=>x.WorkshopId).ToList(); + var resultData = _adminWorkFlowApplication.GetWorkshopsWithDocumentsAwaitingUploadForAdmin(accountWorkshops); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + public IActionResult OnGetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId) + { + var resultData = _employeeDocumentsApplication.GetByWorkshopIdWithItemsForAdminWorkFlow(workshopId); + + return new JsonResult(new + { + success = true, + data = resultData + }); + } + + public IActionResult OnGetCreateUploadDocument(long workshopId, long employeeId) + { + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(employeeId, workshopId); + return Partial("_ModalEmployeeDocuments/ModalUploadDocument", employeeDocument); + } + + public IActionResult OnPostCreateUploadDocument(AddEmployeeDocumentItem command) + { + var result = _employeeDocumentsApplication.AddEmployeeDocumentItemForClient(command); + var employeeDocument = _employeeDocumentsApplication.GetDetailsForAdmin(command.EmployeeId, command.WorkshopId); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + imageSrc = employeeDocument + }); + } + + public IActionResult OnPostRemoveEmployeeDocumentByLabel(long workshopId, long employeeId, DocumentItemLabel label) + { + var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdminTemp(workshopId, employeeId, label); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message + }); + } + public IActionResult OnPostRemoveClientEmployeeDocumentItemsByLabels(long workshopId, long employeeId, List labels) + { + var result = _employeeDocumentsApplication.RemoveClientDocumentItemsByAdmin(workshopId, employeeId, labels); + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message + }); + } + + public IActionResult OnPostSaveSubmit(SubmitEmployeeDocuments cmd) + { + + var result = _employeeDocumentsApplication.SubmitDocumentItemsByAdminInWorkFlow(cmd); + + return new JsonResult(new + { + isSuccedded = result.IsSuccedded, + message = result.Message, + }); + } + + public IActionResult OnGetShowPicture(string filePath) + { + if (string.IsNullOrEmpty(filePath)) + return NotFound(); + + + if (!System.IO.File.Exists(filePath)) + return NotFound(); + + var contentType = Tools.GetContentTypeImage(Path.GetExtension(filePath)); + return PhysicalFile(filePath, contentType); + } + + public IActionResult OnPostCancelOperation(long workshopId, long employeeId) + { + var result = _employeeDocumentsApplication.DeleteUnsubmittedItems(workshopId, employeeId); + return new JsonResult(new + { + success = result.IsSuccedded, + message = result.Message + }); + } + } +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml new file mode 100644 index 00000000..06d0ee71 --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml @@ -0,0 +1,163 @@ +@page +@model ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow.IndexModel +@{ +} + + +@{ + string clientVersion = _0_Framework.Application.Version.StyleVersion; + ViewData["Title"] = " - " + "کارگاه"; +} + +@section Styles { + + +} + +
    +
    +
    +
    + +
    +

    کارپوشه

    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + + +@section Script { + + + +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs new file mode 100644 index 00000000..d93657aa --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/Index.cshtml.cs @@ -0,0 +1,35 @@ +using _0_Framework.Application; +using Company.Domain.WorkshopAccountAgg; +using CompanyManagment.App.Contracts.RollCallService; +using CompanyManagment.App.Contracts.Workshop; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.Configuration.UserSecrets; +using Query.AdminReports.Handlers; +using WorkFlow.Application.Contracts.AdminWorkFlow; +using WorkFlow.Application.Contracts.WorkFlow; + +namespace ServiceHost.Areas.AdminNew.Pages.Company.WorkFlow +{ + public class IndexModel : PageModel + { + private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; + private readonly IAuthHelper _authHelper; + private readonly IWorkshopAccountRepository _workshopAccountRepository; + public int EmployeeDocumentsAwaitingSubmitCount; + + public IndexModel(IAdminWorkFlowApplication adminWorkFlowApplication, IAuthHelper authHelper, IWorkshopAccountRepository workshopAccountRepository) + { + _adminWorkFlowApplication = adminWorkFlowApplication; + _authHelper = authHelper; + _workshopAccountRepository = workshopAccountRepository; + } + + public void OnGet() + { + var accountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(accountId).Select(x => x.WorkshopId).ToList(); + EmployeeDocumentsAwaitingSubmitCount = _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops).EmployeeDocumentsAwaitingSubmit; + } + } +} diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml new file mode 100644 index 00000000..eb76765f --- /dev/null +++ b/ServiceHost/Areas/AdminNew/Pages/Company/WorkFlow/_ModalEmployeeDocuments/ModalUploadDocument.cshtml @@ -0,0 +1,464 @@ +@using System.Reflection +@using _0_Framework.Application +@using CompanyManagment.App.Contracts.EmployeeDocuments +@using Microsoft.AspNetCore.Mvc.TagHelpers +@model CompanyManagment.App.Contracts.EmployeeDocuments.EmployeeDocumentsViewModel + +@{ + string adminVersion = _0_Framework.Application.Version.AdminVersion; + + +} + +
    + + +
    + + + + + + \ No newline at end of file diff --git a/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs index 8381cd10..f8f1445f 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Index.cshtml.cs @@ -1,19 +1,33 @@ using _0_Framework.Application; +using AccountManagement.Application.Contracts.Task; +using AccountManagement.Application.Contracts.Ticket; using backService; +using Company.Domain.WorkshopAccountAgg; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; +using WorkFlow.Application.Contracts.AdminWorkFlow; namespace ServiceHost.Areas.AdminNew.Pages { public class IndexModel : PageModel { private readonly IConfiguration _configuration; - public List DbBackupList { get; set; } + private readonly IAuthHelper _authHelper; + private readonly IWorkshopAccountRepository _workshopAccountRepository; + private readonly IAdminWorkFlowApplication _adminWorkFlowApplication; + private readonly ITicketApplication _ticketApplication; + private readonly ITaskApplication _taskApplication; + public List DbBackupList { get; set; } public List InsuranceBackupList { get; set; } - public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration) + public IndexModel(IWebHostEnvironment webHostEnvironment, IConfiguration configuration, IAuthHelper authHelper, IWorkshopAccountRepository workshopAccountRepository, IAdminWorkFlowApplication adminWorkFlowApplication, ITicketApplication ticketApplication, ITaskApplication taskApplication) { - _configuration = configuration; + _configuration = configuration; + _authHelper = authHelper; + _workshopAccountRepository = workshopAccountRepository; + _adminWorkFlowApplication = adminWorkFlowApplication; + _ticketApplication = ticketApplication; + _taskApplication = taskApplication; } public void OnGet() { @@ -49,5 +63,52 @@ namespace ServiceHost.Areas.AdminNew.Pages byte[] fileContent = System.IO.File.ReadAllBytes(path); return File(fileContent, "application/zip", fileName); } - } + + public async Task OnGetLayoutCountTask() + { + var currentAccountId = _authHelper.CurrentAccountId(); + int taskCount = _taskApplication.RequestedAndOverdueTasksCount(currentAccountId); + + return new JsonResult(new + { + success = true, + data = taskCount + }); + } + + public async Task OnGetLayoutCountTicket() + { + int ticketCount = _ticketApplication.GetAdminTicketsCount(); + + return new JsonResult(new + { + success = true, + data = ticketCount + }); + } + + public IActionResult OnGetLayoutCountWorkFlow() + { + var currentAccountId = _authHelper.CurrentAccountId(); + var accountWorkshops = _workshopAccountRepository.GetList(currentAccountId).Select(x => x.WorkshopId).ToList(); + int workFlowCount = _adminWorkFlowApplication.GetWorkFlowCountsForAdmin(accountWorkshops).EmployeeDocumentsAwaitingSubmit; + + return new JsonResult(new + { + success = true, + data = workFlowCount + }); + } + + public IActionResult OnGetLayoutCountChecker() + { + int checkerCount = _adminWorkFlowApplication.GetWorkFlowCountForChecker(); + + return new JsonResult(new + { + success = true, + data = checkerCount, + }); + } + } } diff --git a/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml b/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml index 94b88e25..04afe628 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Shared/_Layout.cshtml @@ -22,6 +22,7 @@ + @@ -72,7 +73,7 @@ $("#ModalContent").html(""); $("#printSection").html(""); }); - + var antiForgeryTokenLayout = $('@Html.AntiForgeryToken()').val(); var url = window.location.href.split('?')[0]; var url2 = window.location.href.split('#')[0]; @@ -328,6 +329,145 @@ } }); }); + + _RefreshTaskCountMenu(); + function _RefreshTaskCountMenu() { + $.ajax({ + async: true, + dataType: 'json', + url: '/AdminNew?handler=LayoutCountTask', + headers: { "RequestVerificationToken": antiForgeryTokenLayout }, + type: 'GET', + success: function (response) { + if (response.success) { + if (response.data === 0) { + $('#_taskCountSection').hide(); + $('#_taskCount').hide(); + $('#spinnerTask').hide(); + } else { + $('#_taskCountSection').show(); + $('#spinnerTask').hide(); + $('#_taskCount').show(); + $('#_taskCount').text(response.data); + } + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); + } + + _RefreshTicketCountMenu(); + function _RefreshTicketCountMenu() { + $.ajax({ + async: true, + dataType: 'json', + url: '/AdminNew?handler=LayoutCountTicket', + headers: { "RequestVerificationToken": antiForgeryTokenLayout }, + type: 'GET', + success: function (response) { + if (response.success) { + if (response.data === 0) { + $('#_ticketCountSection').hide(); + $('#spinnerTicket').hide(); + $('#_ticketCount').hide(); + } else { + $('#_ticketCountSection').show(); + $('#spinnerTicket').hide(); + $('#_ticketCount').show(); + $('#_ticketCount').text(response.data); + } + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); + } + + _RefreshWorkFlowCountMenu(); + function _RefreshWorkFlowCountMenu() { + $.ajax({ + async: true, + dataType: 'json', + url: '/AdminNew?handler=LayoutCountWorkFlow', + headers: { "RequestVerificationToken": antiForgeryTokenLayout }, + type: 'GET', + success: function (response) { + if (response.success) { + if (response.data === 0) { + $('#_workFlowCountSection').hide(); + $('#spinnerWorkFlow').hide(); + $('#_workFlowCount').hide(); + } else { + $('#_workFlowCountSection').show(); + $('#spinnerWorkFlow').hide(); + $('#_workFlowCount').show(); + $('#_workFlowCount').text(response.data); + } + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); + } + + _RefreshCheckerCountMenu(); + function _RefreshCheckerCountMenu() { + $.ajax({ + //async: true, + dataType: 'json', + url: '/AdminNew?handler=LayoutCountChecker', + headers: { "RequestVerificationToken": antiForgeryTokenLayout }, + type: 'GET', + success: function (response) { + console.log(response); + + if (response.success) { + if (response.data === 0) { + $('#_checkerCountSection').hide(); + $('#_checkerCount').hide(); + $('#spinnerChecker').hide(); + } else { + $('#_checkerCountSection').show(); + $('#spinnerChecker').hide(); + $('#_checkerCount').show(); + $('#_checkerCount').text(response.data); + } + } + }, + error: function (xhr, status, error) { + console.error(xhr.responseText); + } + }); + } + + // Override the global fetch function to handle errors + $.ajaxSetup({ + error: function (jqXHR, textStatus, errorThrown) { + if (jqXHR.status === 500) { + try { + const errorData = jqXHR.responseJSON; + $('.alert-msg').show(); + $('.alert-msg p').text(errorData.message || "خطای سمت سرور"); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + } catch (e) { + $('.alert-msg').show(); + $('.alert-msg p').text("خطای سمت سرور"); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + console.error("Error parsing response:", e); + } + } + } + }); @RenderSection("Script", false) diff --git a/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml b/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml index 8059d0a3..3e407686 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Shared/_Menu.cshtml @@ -1,20 +1,8 @@ - -@using AccountManagement.Application.Contracts.Task -@using AccountManagement.Application.Contracts.Ticket -@using AccountManagement.Application.Contracts.TicketAccessAccount - +@using AccountManagement.Domain.TicketAccessAccountAgg @using Microsoft.AspNetCore.Mvc.TagHelpers - +@inject ITicketAccessAccountRepository TicketAccessAccount; @inject _0_Framework.Application.IAuthHelper AuthHelper; -@inject ITicketAccessAccountApplication TicketAccessAccount; -@inject ITicketApplication TicketApplication; -@inject ITaskApplication TaskApplication; - @{ - var currentAccout = AuthHelper.CurrentAccountInfo(); - int taskCount = TaskApplication.RequestedAndOverdueTasksCount(currentAccout.Id); - int ticketCount = TicketApplication.GetAdminTicketsCount(); - } @@ -522,8 +510,11 @@ مدیریت وظایف
    -
    - @taskCount +
    + +
    + +
    @@ -566,8 +557,11 @@ مدیریت تیکت
    -
    - @ticketCount +
    + +
    + +
    @@ -630,14 +624,30 @@ کارپوشه
    +
    +
    + +
    + +
    +
    +
  • - + +
    +
    + +
    + +
    +
  • diff --git a/ServiceHost/Areas/Client/Pages/Company/Employees/Index.cshtml b/ServiceHost/Areas/Client/Pages/Company/Employees/Index.cshtml index 6e20e329..4ab78f95 100644 --- a/ServiceHost/Areas/Client/Pages/Company/Employees/Index.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/Employees/Index.cshtml @@ -156,7 +156,7 @@
    -
    +
    diff --git a/ServiceHost/ServiceHost.csproj b/ServiceHost/ServiceHost.csproj index 6102c223..16c57834 100644 --- a/ServiceHost/ServiceHost.csproj +++ b/ServiceHost/ServiceHost.csproj @@ -96,7 +96,13 @@ + + + + + + @@ -139,6 +145,9 @@ + + + @@ -392,6 +401,11 @@ + + + + + @@ -433,6 +447,12 @@ + + + + + + @@ -708,6 +728,12 @@ + + + + + + diff --git a/ServiceHost/Storage/EmployeeDocuments/SubmittedByAdmin/170/42416/EmployeePicture-1403-11-29-773852181989-thumbnail.jpg b/ServiceHost/Storage/EmployeeDocuments/SubmittedByAdmin/170/42416/EmployeePicture-1403-11-29-773852181989-thumbnail.jpg new file mode 100644 index 00000000..f0183075 Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/SubmittedByAdmin/170/42416/EmployeePicture-1403-11-29-773852181989-thumbnail.jpg differ diff --git a/ServiceHost/Storage/EmployeeDocuments/SubmittedByAdmin/170/42416/EmployeePicture-1403-11-29-773852181989.jpg b/ServiceHost/Storage/EmployeeDocuments/SubmittedByAdmin/170/42416/EmployeePicture-1403-11-29-773852181989.jpg new file mode 100644 index 00000000..145a2f8c Binary files /dev/null and b/ServiceHost/Storage/EmployeeDocuments/SubmittedByAdmin/170/42416/EmployeePicture-1403-11-29-773852181989.jpg differ diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/EmployeeList.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/EmployeeList.css new file mode 100644 index 00000000..8ccd9125 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/EmployeeList.css @@ -0,0 +1,240 @@ + +.errored { + animation: shake 300ms; + color: #eb3434 !important; + background-color: #fef2f2 !important; + border: 1px solid #eb3434 !important; + border-radius: 7px; +} + +.goToTop { + position: fixed; + bottom: -10px; + margin-right: 100px; + z-index: 100; + color: #fff; + background-color: #25acacd6; + display: none; +} + + .goToTop:hover { + color: #fff; + background-color: #2ca4a4; + } + +.width1 { + width: 5% !important; +} + +.width2 { + width: 20% !important; +} + +.width3 { + width: 10% !important; +} + +.width4 { + width: 15% !important; +} + +.width5 { + width: 15% !important; +} + +.width6 { + width: 20% !important; +} + +.width7 { + width: 10% !important; + text-align: end; +} + +.documentFileBox { + width: 40px; + height: 25px; + border-radius: 4px; + background-color: #D9D9D9; + margin: auto 3px; + overflow: hidden; +} + +.highlighted-border { + border: 1px solid #6CD7CE; +} + +.uploadedHolder { + border: 1px solid #6CD7CE; +} + + +.documentFileBoxImg { + width: 30px; + height: 30px; + border-radius: 4px; + background-color: #D9D9D9; + margin: auto 3px; + overflow: hidden; +} + +.preview-image { + object-fit: cover; + object-position: center; + width: 40px; + height: 25px; +} + +.btn-uploadingPD { + border: 1px solid transparent; + /*width: 60%;*/ + font-size: 12px; + height: 30px; + border-radius: 5px; + padding: 3px 4px; + color: #146D94; + margin: auto 0 auto 1px; + background-color: rgba(52, 209, 209, 0.20); + transition: ease .2s; +} + + .btn-uploadingPD:hover { + color: #083347; + background-color: rgba(52, 209, 209, 0.40); + } + +.btn-pd-more { + background: #B6F2E1; + border: 1px solid #059669; + border-radius: 7px; + position: relative; + overflow: hidden; + color: #059669; + text-align: right; + font-size: 11px; + padding: 3px; + font-style: normal; + font-weight: 400; + line-height: normal; + white-space: nowrap; +} + + .btn-pd-more:hover { + background: #a3d7c9; + } + +.btn-uploadingPD-mobile { + background-color: #B9EBEE; + color: #1992C6; + width: 100%; + padding: 6px; + border-radius: 5px; + border: 1px solid #7ddadf; +} + + .btn-uploadingPD-mobile:hover { + background-color: #91dfe3; + } + +.withdraw { + background-color: rgb(177 195 195) !important; +} + +.btnTabPD { + background-color: #b0e5e5; + padding: 6px 9px; + width: 130px; + border-radius: 7px; + border: 1px solid #b3b3b3; + color: #9d9d9d; + font-size: 11px; + margin: auto 3px auto 3px; +} + + .btnTabPD:first-child { + margin: auto 0 auto 3px; + } + + .btnTabPD.active { + background-color: #34dfdf; + color: #3b3b3b; + pointer-events: none; + } + + .btnTabPD:hover { + background-color: #34dfdf; + } + +@media (max-width: 1366px) { + .Rtable .Rtable-row .Rtable-cell { + font-size: 12px; + } + + .Rtable .Rtable-row .Rtable-cell .Rtable-cell--content { + font-size: 11px; + } + + .btn-uploadingPD { + font-size: 10px; + } +} + +@media (max-width: 767px) { + .goToTop { + position: fixed; + bottom: 54px; + margin-right: 39%; + z-index: 100; + color: #fff; + background-color: #25acac70; + } + + .wrapper { + margin: 0 0 60px 0; + } + + .Rtable .Rtable-row:nth-child(even), .table-workshop .Rtable .Rtable-row:nth-child(4n+2), .table-personals .Rtable .Rtable-row:nth-child(4n+2) { + border-radius: 10px; + background-color: #ECFFFF; + transition: all .3s ease; + border: 1px solid #eee; + } + + .Rtable .Rtable-row:nth-child(odd), .table-workshop .Rtable .Rtable-row:nth-child(4n+4), .table-personals .Rtable .Rtable-row:nth-child(4n+4) { + border-radius: 10px; + background-color: #ECFFFF; + transition: all .3s ease; + border: 1px solid #eee; + } + + .Rtable--collapse .Rtable-row { + outline: none; + border: 1px solid #D2D2D2; + } + + .Rtable .Rtable-row .Rtable-cell { + padding: 0; + } + + .width2 { + width: 50% !important; + } + + .width7 { + width: 30% !important; + justify-content: end; + display: flex; + } + + .txtMonilePD { + color: #727272; + font-weight: 600; + font-size: 10px; + margin: 3px 4px; + } + + .btnTabPD { + font-size: 10px; + padding: 5px 6px; + } +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalUploadDocument.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalUploadDocument.css new file mode 100644 index 00000000..2d045fbc --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/css/ModalUploadDocument.css @@ -0,0 +1,338 @@ +.errored { + animation: shake 300ms; + color: #eb3434 !important; + background-color: #fef2f2 !important; + border: 1px solid #eb3434 !important; +} + +.uploaderSign { + position: absolute; + bottom: -1px; + right: 0; + width: 100%; + height: 100%; + border-radius: 6px; +} + + .uploaderSign.admin { + background: linear-gradient(360deg, rgba(63, 63, 63, 0.76) 0%, rgba(29, 83, 133, 0) 100%); + } + + .uploaderSign.client { + background: linear-gradient(360deg, rgba(52, 146, 235, 0.76) 0%, rgba(29, 83, 133, 0) 100%); + } + + .uploaderSign span { + color: #fff; + position: absolute; + bottom: 0; + right: 50%; + transform: translate(50%, -1px); + font-weight: 900; + font-size: 12px; + } + +.reasonReject { + color: #2d2d2d; +} + +.w90 { + width: 90%; +} + +.pdTitle { + width: 100%; +} + +.pdHeaderTitle1 { + font-size: 15px; + font-weight: 600; +} + +.pdHeaderTitle2 { + font-size: 12px; + font-weight: 500; +} + +/*.pdBox.justUploaded { + border: 1px solid #84cc16; +}*/ + +.pdBoxGrid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-template-rows: repeat(4, minmax(0, 1fr)); + grid-auto-flow: column; + gap: 9px; +} + +.btn-cancel2 { + font-size: 14px; + font-weight: 500; + background-color: #454D5C; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + + .btn-cancel2:hover { + opacity: .7; + } + +.pdBox { + background-color: #F8F8F8; + border-radius: 15px; + border: 1px solid #E7E7E7; + width: 100%; + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px; + overflow: hidden; +} + + .pdBox.complete { + /* background-color: #D0FFF7; + border: 1px solid #2BBABA;*/ + background-color: #ECFCCB; + border: 1px solid #84CC16; + } + + .pdBox.discomplete { + background-color: #FFD9D9; + border: 1px solid #FF5D5D; + } + + .pdBox.pending { + /* background-color: #FCE7C9; + border: 1px solid #FDBA74;*/ + background-color: #F8F8F8; + border: 1px solid #E7E7E7; + } + + + + +.pdImageBox { + background-color: #E6E6E6; + border-radius: 6px; + border: 1px solid #D3D3D3; + width: 100px; + height: 60px; + text-align: center; + position: relative; + display: flex; + justify-content: center; + align-items: center; +} + + .pdImageBox .completeSign { + position: absolute; + top: -10px; + right: -10px; + } + + .pdImageBox .discompleteSign { + position: absolute; + top: -10px; + right: -10px; + } + + .pdImageBox .pendingSign { + position: absolute; + top: -10px; + right: -10px; + } + + .pdImageBox img { + object-fit: cover; + object-position: center; + border-radius: 6px; + width: 100px; + height: 60px; + } + + + +.pdTitle span { + color: #FF5E5E; + font-weight: 500; + font-size: 16px; +} + +.resultMessage { + text-align: center; + width: 70px; + font-size: 12px; + font-weight: 800; + display: flex; + align-items: center; + justify-content: center; +} + + .resultMessage div { + border-radius: 50px; + padding: 3px 0; + color: #fff; + width: 60px; + } + + .resultMessage div.pendingMessage { + background-color: #FDBA74; + position: relative; + top: 20px; + } + + .resultMessage div.confirmedMessage { + background-color: #84CC16; + position: relative; + top: 20px; + } + + .resultMessage div.rejectMessage { + background-color: #FF7272; + position: relative; + top: 20px; + } + +.pdTitle2 { + font-weight: 400; + font-size: 13px; + max-width: 80%; + word-wrap: break-word; + height: 40px; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + +.btnUploadingPD { + background-color: #2BBABA; + color: #ffffff; + font-size: 12px; + padding: 5px 12px; + border-radius: 4px; + transition: all .3s ease-in; + white-space: nowrap; + width: 80px; +} + + .btnUploadingPD:hover { + background-color: #248E8E; + } + +.btnDeletingPD { + background-color: #c76161; + color: #ffffff; + font-size: 12px; + padding: 5px 12px; + border-radius: 4px; + transition: all .3s ease-in; + white-space: nowrap; + width: 80px; +} + + .btnDeletingPD:hover { + background-color: #a54e4e; + } + +.btnCreateNew { + font-size: 14px; + font-weight: 500; + background-color: #84CC16; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + + .btnCreateNew:hover { + background-color: #5f9213; + } + +.btnCreateNew, +.btn-cancel2 { + width: auto !important; +} + + +@media (max-width: 992px) { + .pdBoxGrid { + grid-template-columns: repeat(1, minmax(0, 1fr)); + grid-template-rows: none; + grid-auto-flow: unset; + } +} + +@media (max-width: 768px) { + .modal-body { + height: 75vh; + } + + /* .uploaderSign { + position: absolute; + top: 42px; + right: 82px; + border: 1px solid red; + width: 15px; + height: 15px; + line-height: 14px; + border-radius: 50%; + color: black !important; + background-color: white; + }*/ + + .pdBox { + padding: 9px; + } + + .pdImageBox { + width: 70px; + height: 40px; + } + + .pdImageBox img { + width: 70px; + height: 40px; + } + + .btnUploadingPD, + .btnDeletingPD { + font-size: 10px; + padding: 4px 9px; + width: 60px; + } + + .btnCreateNew, + .btn-cancel2 { + font-size: 12px !important; + padding: 10px 0 !important; + width: 100% !important; + } +} + + +@media (max-width: 576px) { + .pdTitle { + font-size: 12px; + } + + .pdTitle2 { + font-weight: 300; + word-wrap: break-word; + font-size: 10px; + height: 32px; + } + + .resultMessage div.rejectMessage { + top: 15px; + } + + .resultMessage { + width: 50px; + font-size: 9px; + font-weight: 900; + } +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/EmployeeList.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/EmployeeList.js new file mode 100644 index 00000000..1630fd64 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/EmployeeList.js @@ -0,0 +1,382 @@ +var pageIndexJs = 0; +var pageIndex = 0; +var mode = 'active'; +var searchName = ''; + +$(document).ready(function () { + loadPersonnelDocuments(mode, searchName); + + $(document).on('click', '.btnTabPD', function () { + mode = $(this).data('mode'); + $('.btnTabPD').removeClass('active'); + $(this).addClass('active'); + $('.btn-clear-filter').addClass('disable'); + pageIndexJs = 0; + pageIndex = 0; + $('#personnelDocumentsAjax').html(''); + $('.employeeName').val(''); + loadPersonnelDocuments(mode, searchName = ''); + }); + + checkImage(); +}); + +$(document).on('click', ".openAction", function () { + if (window.matchMedia('(max-width: 767px)').matches) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + +$(document).on('click', '.btn-uploadingPD, .btn-uploadingPD-mobile', function () { + var id = $(this).attr('id').split('_')[1]; + openPersonnelDocsUploadModal(id); +}); + +$(document).on('click', '.btn-search-click, .btn-search-click-mobile', function () { + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.btn-clear-filter').removeClass('disable'); + searchName = $('.employeeName').val().trim(); + if (searchName == "") { + $('.btn-clear-filter').addClass('disable'); + } + $('#searchModal').modal('hide'); + loadPersonnelDocuments(mode, searchName); +}); +$(document).on('click', '.btn-clear-filter', function () { + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.btn-clear-filter').addClass('disable'); + $('.employeeName').val(''); + $('#searchModal').modal('hide'); + loadPersonnelDocuments(mode, searchName = ''); +}); + + +// When typing in the desktop search +$('.d-none.d-md-block .employeeName').on('input', function () { + var desktopInput = $(this).val(); + $('#searchModal .employeeName').val(desktopInput); +}); + +// When typing in the mobile search +$('#searchModal .employeeName').on('input', function () { + var mobileInput = $(this).val(); + $('.d-none.d-md-block .employeeName').val(mobileInput); +}); + +$('.goToTop').on('click',function () { + $('html, body').animate({ scrollTop: 0 }, 360); + return false; +}); + +$(window).scroll(function () { + if ($(window).scrollTop() + $(window).height() > $(document).height() - 600) { + loadPersonnelDocuments(mode, searchName); + } + + if ($(this).scrollTop() > 100) { + $('.goToTop').show().fadeIn(); + } else { + $('.goToTop').fadeOut().hide(); + } +}); + +function loadPersonnelDocuments(mode, searchName) { + + var b = pageIndexJs % 30; + var html = ''; + + if (b === 0) { + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: employeeDocumentsAjaxLoadData, + data: { workshopId: workshopId, searchMode: mode, employeeName: searchName, 'pageIndex': pageIndex }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + + var personnelDocumentsData = response.data; + if (response.isSuccedded) { + personnelDocumentsData.forEach(function (item) { + var n = pageIndexJs + 1; + html += `
    +
    +
    +
    + + ${n} +
    ${item.employeeId}
    +
    +
    +
    +
    +
    +
    `; + if (item.employeePicture.picturePath && (item.employeePicture.statusString !== "unsubmitted" && item.employeePicture.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    ${item.employeeFullName}
    +
    +
    +
    +
    +
    `; + + if (item.employeePicture.picturePath && (item.employeePicture.statusString !== "unsubmitted" && item.employeePicture.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    +
    +
    +
    `; + if (item.nationalCardFront.picturePath && (item.nationalCardFront.statusString !== "unsubmitted" && item.nationalCardFront.statusString !== "rejected")) { + html += `
    `; + } else { + html += `
    `; + } + + if (item.nationalCardRear.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    +
    +
    +
    `; + if (item.militaryServiceCard.picturePath && (item.militaryServiceCard.statusString !== "unsubmitted" && item.militaryServiceCard.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    +
    +
    +
    `; + + if (item.idCardPage1.picturePath && (item.idCardPage1.statusString !== "unsubmitted" && item.idCardPage1.statusString !== "rejected")) { + html += `
    `; + } else { + html += `
    `; + } + if (item.idCardPage2.picturePath && (item.idCardPage2.statusString !== "unsubmitted" && item.idCardPage2.statusString !== "rejected")) { + html += `
    `; + } else { + html += `
    `; + } + if (item.idCardPage3.picturePath && (item.idCardPage3.statusString !== "unsubmitted" && item.idCardPage3.statusString !== "rejected")) { + html += `
    `; + } else { + html += `
    `; + } + if (item.idCardPage4.picturePath && (item.idCardPage4.statusString !== "unsubmitted" && item.idCardPage4.statusString !== "rejected")) { + html += `
    `; + } else { + html += `
    `; + } + + html += `
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    `; + if (item.employeePicture.picturePath && (item.employeePicture.statusString !== "unsubmitted" && item.employeePicture.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    عکس پرسنلی
    +
    +
    +
    +
    +
    `; + if (item.nationalCardFront.picturePath && (item.nationalCardFront.statusString !== "unsubmitted" && item.nationalCardFront.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت ملی رو
    +
    +
    +
    +
    +
    `; + if (item.nationalCardRear.picturePath && (item.nationalCardRear.statusString !== "unsubmitted" && item.nationalCardRear.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت ملی پشت
    +
    +
    +
    +
    +
    `; + if (item.militaryServiceCard.picturePath && (item.militaryServiceCard.statusString !== "unsubmitted" && item.militaryServiceCard.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت پایان خدمت
    +
    +
    +
    +
    +
    `; + if (item.idCardPage1.picturePath && (item.idCardPage1.statusString !== "unsubmitted" && item.idCardPage1.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    شناسنامه صفحه اول
    +
    +
    +
    +
    +
    `; + if (item.idCardPage2.picturePath && (item.idCardPage2.statusString !== "unsubmitted" && item.idCardPage2.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    شناسنامه صفحه دوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage3.picturePath && (item.idCardPage3.statusString !== "unsubmitted" && item.idCardPage3.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    شناسنامه صفحه سوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage4.picturePath && (item.idCardPage4.statusString !== "unsubmitted" && item.idCardPage4.statusString !== "rejected")) { + html += ``; + } else { + html += ``; + } + html += `
    +
    شناسنامه صفحه چهارم
    +
    +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    `; + + pageIndexJs++; + + }); + + pageIndexJs = pageIndex + response.pageIndex; + pageIndex = pageIndexJs; + $('#personnelDocumentsAjax').append(html); + } else { + html += `
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    `; + $('#personnelDocumentsAjax').append(html); + } + + checkImage(); + + }, + failure: function (response) { + console.log(response); + } + }); + } +} + + +function openPersonnelDocsUploadModal(id) { + var goTo = `#showmodal=/AdminNew/Company/EmployeesDocuments/EmployeeList?workshopId=${workshopId}&employeeId=${id}&handler=CreateUploadDocument`; + window.location.href = goTo; +} + +function checkImage() { + $('.documentFileBox').each(function () { + if ($(this).find('img.uploaded').length > 0) { + // Add the highlighted-border class to the documentFileBox + $(this).addClass('highlighted-border'); + } + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalUploadDocument.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalUploadDocument.js new file mode 100644 index 00000000..26f3ab3d --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocument/js/ModalUploadDocument.js @@ -0,0 +1,517 @@ +var employeePicture; +var nationalCardFront; +var nationalCardRear; +var militaryServiceCard; +var idCardPage1; +var idCardPage2; +var idCardPage3; +var idCardPage4; +var uploadFileCount = UploadedCount; + +var pendingMessage = `
    بررسی
    `; +var pendingIcon = ` + + + + + `; +var confirmMessage = `
    تایید
    `; +var confirmIcon = ` + + + `; +var rejectMessage = `
    رد شده
    `; +var rejectIcon = ` + + + + `; + + +$(document).ready(function () { + var employeeId = $("#employeeIdForList").val(); + + //$('.btnDeletingPD').each(function () { + // if ($(this).hasClass('Unsubmitted')) { // Remove the extra class selector '.btnDeletingPD' + // $(this).closest('.pdBox').addClass('justUploaded'); // Add 'justUploaded' to the closest parent .pdBox + // } + //}); + + + $(".btnDeletingPD ").each(function () { + if ($(this).hasClass("SubmittedByAdmin") || $(this).hasClass("Rejected") || $(this).hasClass("Confirmed")) { + $(this).addClass("disable"); + } else { + return; + } + }); + $(document).off('click', '.btnUploadingPD').on('click', '.btnUploadingPD', function (event) { + event.preventDefault(); + const index = $(this).data('index'); + $('input[type="file"][data-index="' + index + '"]').click(); + }); + + $('.pdBox').each(function () { + if ($(".isTrue").hasClass("isTrue") && $(".Unsubmitted").hasClass("Unsubmitted") || $(".SubmittedByClient").hasClass("SubmittedByClient")) { + $(".btnCreateNew").prop("disabled", false); + $(".btnCreateNew ").removeClass("disable"); + } else { + $(".btnCreateNew ").addClass("disable"); + } + }); + + $('.pdBox').each(function () { + // Check if there's a button with the 'submitted' class inside the pdBox + if ($(this).find('button.SubmittedByAdmin').length > 0) { + $(this).addClass('pending'); + $(this).find(".pdImageBox .sign").addClass("pendingSign").html(pendingIcon); + $(this).find(".btnUploadingPD").addClass("disable"); + $(this).find(".resultMessage").html(pendingMessage); + } + if ($(this).find('button.Confirmed').length > 0) { + $(this).addClass('complete'); + $(this).find(".pdImageBox .sign").addClass("completeSign").html(confirmIcon); + $(this).find(".resultMessage").html(confirmMessage); + } + if ($(this).find('button.Rejected').length > 0) { + $(this).addClass('discomplete'); + $(this).find(".pdImageBox .sign").addClass("discompleteSign").html(rejectIcon); + $(this).find(".resultMessage").html(rejectMessage); + } + }); + + $(document).off('change', '.file-input').on('change', '.file-input', function (e) { + e.preventDefault(); + + const fileInputFile = this.files[0]; + const indexFileValue = $(this).data('index'); + const validExtensions = ['jpg', 'jpeg', 'png']; + const validPdfExtensions = ['pdf']; + + const label = $(`#label_${indexFileValue}`).val(); + + if (fileInputFile) { + const fileName = fileInputFile.name.toLowerCase(); + const extension = fileName.split('.').pop(); + + if (validExtensions.includes(extension)) { + if (fileInputFile.size > 5000000) { + showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + $(this).val(''); + return; + } + uploadFile(fileInputFile, indexFileValue, label); + } else if (validPdfExtensions.includes(extension)) { + + var fileReader = new FileReader(); + + fileReader.onload = function () { + var typedarray = new Uint8Array(this.result); + pdfjsLib.getDocument(typedarray).promise.then(function (pdf) { + totalPageCount = pdf.numPages; + + if (totalPageCount > 1) { + showAlertMessage('.alert-msg', 'آپلود مجاز نیست! تعداد صفحات نباید بیشتر از ۱ باشد.', 3500); + return; + } + + pdf.getPage(1).then(function (page) { // فقط صفحه اول پردازش می‌شود + var scale = 2.0; + var viewport = page.getViewport({ scale: scale }); + + var canvas = document.createElement("canvas"); + canvas.className = "page"; + canvas.title = "Page 1"; + canvas.height = viewport.height; + canvas.width = viewport.width; + + var context = canvas.getContext("2d"); + + page.render({ + canvasContext: context, + viewport: viewport + }) + .promise.then(function () { + uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + }) + .catch(function (error) { + showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + }); + }).catch(function (error) { + showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); + }); + + }).catch(function (error) { + showAlertMessage('.alert-msg', 'خطا در بارگذاری فایل PDF!', 3500); + }); + }; + + fileReader.readAsArrayBuffer(fileInputFile); + + } else { + showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + } + } + }); + + $(document).off('click', '.btnDeletingPD').on('click', '.btnDeletingPD', function (event) { + event.preventDefault(); + const indexId = $(this).data('index'); + + swal.fire({ + title: "اخطار", + text: "آیا میخواهید تصویر موجود را حذف کنید؟", + icon: "warning", + showCancelButton: true, + confirmButtonText: "بله", + cancelButtonText: "خیر", + confirmButtonColor: '#84cc16', + reverseButtons: true + }).then((result) => { + if (result.isConfirmed) { + removeEmployeeDocumentByLabel(indexId, employeeId); + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + const img = pdBox.find('.preview-image'); + img.attr('src', '/assetsclient/images/pd-image.png'); + $(this).addClass('disable'); + } else { + $(this).removeClass('disable'); + } + }); + + }); + + $(".exitModal").click(function () { + if (uploadFileCount > 0) { + swal.fire({ + title: "اخطار", + text: "در صورت انصراف عملیات ثبت نخواهد شد!", + icon: "warning", + showCancelButton: true, + confirmButtonText: "بله", + cancelButtonText: "خیر", + confirmButtonColor: '#84cc16', + reverseButtons: true + }).then((result) => { + if (result.isConfirmed) { + cancelOperation(); + } + }); + } else { + $('#MainModal').modal('hide'); + } + }); +}); + +function cancelOperation() { + $.ajax({ + url: cancelOperationUrl, + method: 'POST', + data: { workshopId: workshopId, employeeId: employeeId }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + if (response.success) { + $('#MainModal').modal('hide'); + } else { + showAlertMessage('.alert-success-msg', response.message, 3500); + } + }, + error: function (response) { + showAlertMessage('.alert-msg', response.message, 3500); + } + }); +} + +function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { + canvas.toBlob(function (blob) { + if (!blob) { + showAlertMessage('.alert-msg', 'مشکلی در تبدیل تصویر رخ داده است!', 3500); + return; + } + + let file = new File([blob], fileName, { type: 'image/png' }); + + uploadFile(file, indexFileValue, label); + + }, "image/png"); +} + +var indexCount = 0; +var activeUploads = 0; +function uploadFile(file, indexId, label) { + const formData = new FormData(); + formData.append('command.EmployeeId', employeeId); + formData.append('command.WorkshopId', workshopId); + formData.append('command.Label', label); + formData.append('command.PictureFile', file); + + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + const spinner = pdBox.find('.spinner-loading-progress'); + + const percentageText = pdBox.find('.percentageText'); + + spinner.show(); + activeUploads++; + $('#createUploadingFiles').prop('disabled', true).addClass('disable'); + + const xhr = new XMLHttpRequest(); + xhr.open('POST', saveUploadFileModalAjax, true); + xhr.setRequestHeader('RequestVerificationToken', antiForgeryToken); + + const uploadStartTime = new Date().getTime(); + let simulatedProgress = 0; + let actualProgress = 0; + let isUploadComplete = false; + + // Simulate progress every 20ms, gradually increasing the bar until the actual progress is reached + const progressInterval = setInterval(function () { + if (simulatedProgress < actualProgress && !isUploadComplete) { + simulatedProgress += 1; // Gradually increase simulated progress + spinner.css('width', `${simulatedProgress}%`); + percentageText.text(`${simulatedProgress}%`); + } + + if (simulatedProgress >= 100) { + clearInterval(progressInterval); // Stop once the progress hits 100% + } + }, 30); // Increases by 1% every 20ms, making it smooth + + // Actual upload progress listener + xhr.upload.addEventListener('progress', function (e) { + if (e.lengthComputable) { + actualProgress = Math.round((e.loaded / e.total) * 100); + + // If the actual progress is slow, allow the simulated progress to match it naturally + if (actualProgress >= simulatedProgress) { + simulatedProgress = actualProgress; + spinner.css('width', `${simulatedProgress}%`); + percentageText.text(`${simulatedProgress}%`); + } + } + }); + + // On upload completion + xhr.onload = function () { + spinner.css('transition', 'all 2s ease-in'); + const uploadEndTime = new Date().getTime(); + const timeDiff = uploadEndTime - uploadStartTime; + const minUploadTime = 2500; // Minimum of 2 seconds for the whole process + + const response = JSON.parse(xhr.responseText); + isUploadComplete = true; // Mark the upload as complete + const delayTime = Math.max(minUploadTime - timeDiff, 0); + + setTimeout(function () { + clearInterval(progressInterval); // Clear the interval when done + simulatedProgress = 100; + spinner.css('width', '100%'); + percentageText.text('100%'); + + var id2 = $("#employeeIdForList").val(); + + if (xhr.status === 200 && response.isSuccedded) { + indexCount++; + const reader = new FileReader(); + reader.onload = function (e) { + + uploadFileCount = uploadFileCount + 1; + + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + const img = pdBox.find('.preview-image'); + img.attr('src', e.target.result); + + //employeePicture = $('#EmployeePicture').attr('src'); + //nationalCardFront = $('#NationalCardFront').attr('src'); + //nationalCardRear = $('#NationalCardRear').attr('src'); + //militaryServiceCard = $('#MilitaryServiceCard').attr('src'); + //idCardPage1 = $('#IdCardPage1').attr('src'); + //idCardPage2 = $('#IdCardPage2').attr('src'); + //idCardPage3 = $('#IdCardPage3').attr('src'); + //idCardPage4 = $('#IdCardPage4').attr('src'); + //console.log(idCardPage2); + + // updatePreviewImage(indexId, id2, e.target.result); + + }; + + if (pdBox.hasClass("complete") || pdBox.hasClass("discomplete")) { + + pdBox.removeClass("discomplete complete"); + pdBox.find(".sign").removeClass("discompleteSign completeSign"); + pdBox.find(".sign").empty(); + pdBox.find(".btnDeletingPD").removeClass("Rejected Confirmed"); + pdBox.find("confirmedMessage ").remove(); + pdBox.find(".resultMessage").empty(); + } + + pdBox.find('.btnDeletingPD').removeClass('disable').addClass("Unsubmitted"); + + reader.readAsDataURL(file); + } else { + showAlertMessage('.alert-msg', response.message || 'Error uploading file', 3500); + $('input[type="file"][data-index="' + indexId + '"]').val(''); + } + spinner.css('width', '0%'); // Reset the progress bar + spinner.hide(); + handleActiveUploads(); + }, delayTime); // Ensure a minimum of 2 seconds for the full process + }; + + // Handle upload error + xhr.onerror = function () { + clearInterval(progressInterval); // Stop progress on error + showAlertMessage('.alert-msg', 'مشکلی در آپلود فایل به وجود آمد.', 3500); + $('input[type="file"][data-index="' + indexId + '"]').val(''); + spinner.css('width', '0%'); + spinner.hide(); + handleActiveUploads(); + }; + + xhr.send(formData); +} + +function handleActiveUploads() { + activeUploads--; + if (activeUploads === 0) { + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + } +} + +function showAlertMessage(selector, message, timeout) { + $(selector).show(); + $(selector + ' p').text(message); + setTimeout(function () { + $(selector).hide(); + $(selector + ' p').text(''); + }, timeout); +} + +function removeEmployeeDocumentByLabel(indexId, employeeId) { + const label = $(`#label_${indexId}`).val(); + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + + $.ajax({ + url: deleteFileAjaxUrl, + method: 'POST', + data: { label: label, employeeId: employeeId, workshopId: workshopId }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + if (response.isSuccedded) { + uploadFileCount = uploadFileCount - 1; + + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت حذف شد.', 3500); + /* $(`#label_${indexId}`).val('');*/ + pdBox.find('.btnDeletingPD').removeClass("Unsubmitted"); + pdBox.find('.uploaderSign').hide(); + updatePreviewImage(Number(indexId), Number(employeeId), "/assetsclient/images/pd-image.png"); + + + } else { + showAlertMessage('.alert-success-msg', response.message, 3500); + } + }, + error: function (response) { + showAlertMessage('.alert-msg', response.message, 3500); + } + }); +} + +function updatePreviewImage(indexId, id2, result) { + switch (indexId) { + case 0: + $(`#employeePicture_${id2}.preview-image`).attr('src', result); + break; + case 1: + $(`#nationalCardFront_${id2}.preview-image`).attr('src', result); + break; + case 2: + $(`#nationalCardRear_${id2}.preview-image`).attr('src', result); + break; + case 3: + $(`#militaryServiceCard_${id2}.preview-image`).attr('src', result); + break; + case 4: + $(`#idCardPage1_${id2}.preview-image`).attr('src', result); + break; + case 5: + $(`#idCardPage2_${id2}.preview-image`).attr('src', result); + break; + case 6: + $(`#idCardPage3_${id2}.preview-image`).attr('src', result); + break; + case 7: + $(`#idCardPage4_${id2}.preview-image`).attr('src', result); + break; + default: + console.warn('Unexpected indexId:', indexId); + } +} + +function saveSubmit(id) { + var loading = $(".spinner-loading"); + + loading.show(); + + var data = { + 'cmd.EmployeeDocumentsId': id + } + $.ajax({ + url: saveSubmitAjax, + method: 'POST', + data: data, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + loading.hide(); + + if (response.isSuccedded) { + + var id2 = $("#employeeIdForList").val(); + $(".pdBox").each(function () { + var indexId = $(this).find('.btnUploadingPD').data('index'); + var imgSrc = $(this).find('.preview-image').attr("src"); + updatePreviewImage(indexId, id2, imgSrc); + }); + + _RefreshWorkFlowCountMenu(); + + $('#MainModal').modal('hide'); + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت ارسال شد.', 3500); + } else { + showAlertMessage('.alert-msg', response.message, 3500); + } + }, + error: function () { + loading.hide(); + showAlertMessage('.alert-msg', 'مشکلی در ارسال تصویر به وجود آمد.', 3500); + } + }); + + +} + +function cancelOP() { + + $.ajax({ + url: saveSubmitAjax, + method: 'POST', + data: { employeeId: employeeId, }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + loading.hide(); + $('#MainModal').modal('hide'); + + if (response.isSuccedded) { + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت ارسال شد.', 3500); + + } else { + showAlertMessage('.alert-msg', response.message, 3500); + } + }, + error: function () { + loading.hide(); + showAlertMessage('.alert-msg', 'مشکلی در ارسال تصویر به وجود آمد.', 3500); + } + }); + + +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/DetailsPersonelModal.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/DetailsPersonelModal.css new file mode 100644 index 00000000..f5347639 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/DetailsPersonelModal.css @@ -0,0 +1,1255 @@ +.errored { + animation: shake 300ms; + color: #eb3434 !important; + background-color: #fef2f2 !important; + border: 1px solid #eb3434 !important; +} + +.operationDesc { + width: 70%; +} +.operationRejectAndAccept { + width: 30% +} + +.actionHolder { + display: flex; +} + +.selectTitleDiv { + position: absolute; + z-index: 7; + border-radius: 10px; + min-height: 20px; + max-height: 190px; + overflow: hidden scroll; + width: 64%; + top: 34px; + left: -0.8px; + background-color: rgb(244 244 244); + display: block; + border: 1px solid #DADADA; +} + +.selectTitleDiv ul { + list-style-type: none; + padding: 0 5px; + margin: 5px 0; +} + +.form-select:disabled { + background-color: white; +} + +.buttonsActionsParent { + width: 70%; + display: flex; + gap: 15px; + justify-content: center; +} + +.selectTitleDiv ul li { + display: block; + text-align: right; + color: #797979; + font-size: 12px; + font-weight: 500; + padding: 4px 3px; + transition: all ease-in-out .3s; + cursor: pointer; + width: 100%; + border-radius: 6px; +} + +.selectTitleDiv ul li:hover { + background-color: #41e3e3; + color: #ffffff; +} + +.sliderImg { + background-color: gray; + object-fit: cover; + height: 323px; +} + +.form-select { + border-color: white !important; + outline: none !important; + box-shadow: none !important; +} + +.buttonsActionsParent { + width: 50%; + display: flex; + gap: 10px; +} + +#message.invalid { + border: 2px solid red; +} + +.exitModal { + width: 40%; + padding: .5rem .5rem; + background-color: #454D5C; + color: white; + border-radius: 6px; +} + +.operationBtn { + width: 40%; + padding: .5rem .5rem; + background-color: #84CC16; + color: white; + border-radius: 6px; +} + +.exitModal:hover { + background-color: #454d5ce0; +} + +.pdHeaderTitle1 { + font-size: 15px; + font-weight: 600; +} + +.pdHeaderTitle2 { + font-size: 12px; + font-weight: 500; +} + +.pdBoxGrid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-template-rows: repeat(4, minmax(0, 1fr)); + grid-auto-flow: column; + gap: 9px; +} +.closePartition { + display: none; +} + +.titleForm2 { + background-color: #23A8A8; + padding: 5px; + width: 198px; + color: #ffffff; + font-weight: 600; + text-align: center; + white-space: nowrap; +} + +.pdBox { + background-color: #F8F8F8; + border-radius: 15px; + border: 1px solid #E7E7E7; + width: 100%; + position: relative; + display: inline-flex; + align-items: center; + justify-content: space-between; + padding: 12px; + overflow: hidden; +} + +.pdBox.confirmed { + background-color: #D0FFF7; + border: 1px solid #2BBABA; +} + +.pdBox.reject { + background-color: #FFD9D9; + border: 1px solid #FF5D5D; +} + +.pdBox.pending { + background-color: #FDCD9D; + border: 2px solid #FDBA74; +} + +.confirmed { + border: 1px solid #A3E635; +} + +.reject { + border: 2px solid #F87171; +} + +.pending { + border: 2px solid #FDBA74; +} + +.pdImageBox { + background-color: #E6E6E6; + border-radius: 6px; + border: 1px solid #D3D3D3; + width: 100px; + height: 60px; + text-align: center; + position: relative; + display: inline-flex; + justify-content: center; + align-items: center; +} + +.pdImageBox .pendingSign { + position: absolute; + top: -10px; + right: -10px; +} + +.pdImageBox .completeSign { + position: absolute; + top: -10px; + right: -10px; +} + +.pdImageBox .discompleteSign { + position: absolute; + top: -10px; + right: -10px; +} +.btn-cancel2 { + font-size: 14px; + font-weight: 500; + background-color: #454D5C; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} +.btn-cancel2:hover { + opacity: .7 +} + +.pdImageBox img { + object-fit: cover; + object-position: center; + border-radius: 6px; + width: 100px; + height: 60px; +} + +.pdTitle { + color: #000000; + font-weight: 500; + font-size: 16px; +} + +.pdTitle span { + color: #FF5E5E; + font-weight: 500; + font-size: 16px; +} + +.pdTitle2 { + color: #000000; + font-weight: 400; + font-size: 13px; + width: 90%; +} + +.btnUploadingPD { + background-color: #2BBABA; + color: #ffffff; + font-size: 12px; + padding: 5px 12px; + border-radius: 4px; + transition: all .3s ease-in; + white-space: nowrap; + width: 80px; +} + +.btnUploadingPD:hover { + background-color: #248E8E; +} + +.btnDeletingPD { + background-color: #c76161; + color: #ffffff; + font-size: 12px; + padding: 5px 12px; + border-radius: 4px; + transition: all .3s ease-in; + white-space: nowrap; + width: 80px; +} + +.btnDeletingPD:hover { + background-color: #a54e4e; +} + +.btnCreateNew { + font-size: 14px; + font-weight: 500; + background-color: #84CC16; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + +.btnCreateNew:hover { + background-color: #5f9213; +} + +.btnCreateNew, +.btn-cancel { + width: auto !important; + border-radius: 8px; + padding: 10px 70px; + display: block; +} + +.modal-footer { + justify-content: center !important; +} + +/*lightbox css*/ +.lightboxpreview { + transition: all .3s linear; + padding-top: 60%; + cursor: pointer; + background-size: cover; +} + +.lightbox-content { + max-height: 75vh; + height: 75vh; + width: 100%; + max-width: 1000px; +} + +.lightbox-close { + cursor: pointer; + margin-left: auto; + position: absolute; + right: -30px; + top: -30px; + color: white; + font-size: 2rem; + font-weight: 700; + line-height: 1; +} + +.modal_inner_image { + min-height: 400px; + z-index: 1000; +} + +.modal-content { + width: 100%; +} + + +.modalscale { + transform: scale(0); + opacity: 0; +} + + + +.lightbox-container, .lightbox-btn, .lightbox-image-wrapper, .lightbox-enabled { + transition: all .4s ease-in-out; +} + +.lightbox_img_wrap { + padding-top: 65%; + position: relative; + overflow: hidden; +} + +.lightbox-enabled { + object-fit: contain; + cursor: pointer; + height: 317px; + width: 100%; +} + +.lightbox-container { + width: 100vw; + height: 100vh; + position: fixed; + top: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(0,0,0,.6) !important; + z-index: 9999; + opacity: 0; + pointer-events: none; +} + + .lightbox-container.active { + opacity: 1; + pointer-events: all; + } + +.lightbox-image-wrapper { + display: flex; + transform: scale(0); + align-items: center; + justify-content: center; + max-width: 90vw; + max-height: 90vh; + position: relative; +} + +.lightbox-container.active .lightbox-image-wrapper { + transform: scale(1); +} + +.lightbox-btn, #close { + color: white; + z-index: 9999999; + cursor: pointer; + position: absolute; + font-size: 50px; +} + + .lightbox-btn:focus { + outline: none; + } + +.left { + left: 50px; +} + +.right { + right: 50px; +} + +#close { + top: 50px; + right: 50px; +} + +.lightbox-image { + width: 100%; + -webkit-box-shadow: 5px 5px 20px 2px rgba(0,0,0,0.19); + box-shadow: 5px 5px 20px 2px rgba(0,0,0,0.19); + max-height: 95vh; + object-fit: cover; +} + +@keyframes slideleft { + 33% { + transform: translateX(-300px); + opacity: 0; + } + + 66% { + transform: translateX(300px); + opacity: 0; + } +} + + +.slideleft { + animation-name: slideleft; + animation-duration: .5s; + animation-timing-function: ease; +} + +@keyframes slideright { + 33% { + transform: translateX(300px); + opacity: 0; + } + + 66% { + transform: translateX(-300px); + opacity: 0; + } +} + + +.slideright { + animation-name: slideright; + animation-duration: .5s; + animation-timing-function: ease; +} + + + +/*lightbox css*/ + + + + +@media (max-width: 1366px) { + .pdTitle { + font-size: 15px; + } + + .pdTitle2 { + font-size: 12px; + /*width: 290px;*/ + } +} + +@media (max-width: 992px) { + .pdBoxGrid { + grid-template-columns: repeat(1, minmax(0, 1fr)); + grid-template-rows: none; + grid-auto-flow: unset; + } + + .buttonsActionsParent { + width: 70%; + display: flex; + gap: 10px; + } + .exitModal { + width: 50%; + padding: .5rem 3rem; + } + + .operationBtn { + width: 50%; + padding: .5rem 3rem; + } +} + +@media (max-width: 768px) { + .modal-body { + height: 75vh; + } + + .pdTitle { + font-size: 14px; + } + + .pdTitle2 { + width: auto; + } + + .pdBox + { + padding: 9px; + } + + .pdImageBox { + width: 70px; + height: 40px; + } + + .pdImageBox img { + width: 70px; + height: 40px; + } + + .btnUploadingPD, + .btnDeletingPD { + font-size: 10px; + padding: 4px 9px; + width: 60px; + } + + .btnCreateNew, + .btn-cancel { + font-size: 12px !important; + padding: 10px 0 !important; + width: 100% !important; + } + + .buttonsActionsParent { + width: 100%; + display: flex; + gap: 10px; + } + + .exitModal { + width: 33.3%; + padding: .5rem 3rem; + background-color: #454D5C; + color: white; + border-radius: 6px; + } + + .operationBtn { + width: 33.3%; + padding: .5rem 3rem; + background-color: #84CC16; + color: white; + border-radius: 6px; + white-space: nowrap; + } +} + + +@media (max-width: 548px) { + .pdTitle { font-size: 12px; } +} + + + .operationBtn { + width: 33.3%; + padding: .4rem 2rem; + background-color: #84CC16; + color: white; + border-radius: 6px; + } +} + + +.slective-slide { + width: 10px; + height: 10px; + border-radius: 50%; + background-color: silver; + transition: background-color 0.5s ease-in-out; +} + + .arrow { + background-color: #38D1D1; + color: white; + border-radius: 50%; + padding: .5rem; + font-weight: 700; + cursor: pointer; + } + + .arrow:hover { background-color: #35d4d4; } + + .mg-btn { + background-color: #C0F9F9; + font-size: small; + width: 100%; + padding: .6rem .4rem; + border-radius: 4px; + } + + .mg-btn:hover { background-color: #b7ecec; } + + .mg-btn.active:hover { background-color: #38D1D1; } + + + + .active { + background-color: #38D1D1; + color: white; + } + + .carousel-item.active { background-color: gray !important; } + + + .desc { + height: 73px; + border: 1px solid #2BBABA; + border-radius: 6px; + padding: 0 5px; + } + + .actions.accept { + background-color: #84CC16; + border: none; + padding: 4px 0; + width: 100%; + } + + .actions.accept:hover { background-color: #78ba14; } + + .actions.reject { + background-color: #EF4444; + border: none; + padding: 4px 0; + width: 100%; + } + + .actions.reject:hover { background-color: #c73a3a; } + + .actions { + border-radius: 4px; + color: white; + } + + .titleForm { + background-color: #23A8A8; + padding: 5px; + width: 180px; + color: #ffffff; + font-weight: 600; + text-align: center; + white-space: nowrap; + } + + .titleForm2 { + background-color: #23A8A8; + padding: 5px; + width: 191px; + color: #ffffff; + font-weight: 600; + text-align: center; + white-space: nowrap; + } + + .form-group { + border-radius: 8px; + overflow: hidden; + border: 1px solid #199494; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + } + + .form-control { border-color: transparent !important; } + + .form-control:focus { + box-shadow: none !important; + border-color: transparent !important; + } + + .mg-btn2s { + position: absolute; + left: 8px; + top: 8px; + } + + .mg-btn2s2 { + position: absolute; + left: -10px; + top: 8px; + } + + .details { + font-size: 13px; + line-height: 27px; + font-weight: 700; + margin-bottom: 10px; + } + + .slective-slide.active-select { + width: 25px; + border-radius: 20px; + background-color: #38D1D1; + transition: background-color 0.5s ease-in-out; + } + + .navbar-details-menu { + display: flex; + justify-content: space-between; + align-items: center; + white-space: nowrap; + gap: 8px; + padding: 5px 10px; + overflow: auto; + } + + .form-check-input { + outline: 1px solid #23A8A8 !important; + border: 1px solid white; + } + + .form-check-input:checked[type=radio] { --bs-form-check-bg-image: none !important; } + + + .signHolder { + position: relative; + border-radius: 6px; + width: 100%; + } + + .sign { + position: absolute; + z-index: 2; + top: -10px; + right: -8px; + } + + .form-control { border-radius: 0 !important; } + + + + .form-check-input[type="radio"], .form-check-input[type="checkbox"] { + padding: 0 !important; + width: 20px; + height: 20px; + margin: 0 !important; + } + +.sliderImg { + border: 1px solid #736f6f; + border-radius: 12px; +} + + + @media (max-width: 992px) { + .titleForm2 { width: 100%; } + + #militaryStatus { + text-align: center; + padding-right: 35px; + } + + .sliderImg { + object-fit: cover; + height: 170px; + } + + #carouselExampleIndicators { + height: 100%; + display: flex; + margin: 0 !important; + } + + .modal-fullscreen1 { + max-width: none !important; + height: 100% !important; + margin: 0 !important; + } + + .form-group { display: block !important; } + + .titleForm { width: 100%; } + + .titleForm2 { width: 100%; } + + .lightbox-enabled { + object-fit: contain; + height: 170px; + width: 280px !important; + } + + .lightbox-container .active { background-color: rgba(0, 0, 0, .6); } + + .mg-btn2s { + position: absolute; + left: 50%; + transform: translateX(-50%); + top: 45px; + justify-content: center; + } + + .mg-btn2s2 { + justify-content: center; + transform: translateX(-50%); + position: absolute; + left: 50%; + top: 45px; + } + + .buttonsActions { margin: 0 !important; } + + .buttonsActionsParent { + width: 100%; + display: flex; + gap: 15px; + justify-content: center; + } + + .navbar-details-menu { + padding: 5px 10px; + margin-bottom: 0 !important; + } + + .titleForm, .titleForm2, .form-control { padding: 0 !important; } + + .form-control { + border-color: transparent !important; + text-align: center; + } + + .table-contracts .form-check-input:focus, .form-control:focus { outline: none !important; } + + .form-check { align-items: center; } + + .mg-btn2s { top: 28px !important; } + + .mg-btn2s2 { top: 28px !important; } + + .form-check-input[type="radio"], .form-check-input[type="checkbox"] { + width: 15px; + height: 15px; + } + + .detailTitle { white-space: nowrap; } + + .mg-btn { padding: .4rem .5rem; } + + .leftside { padding: 0 22px; } + + .rightside { margin: 6px 0; } + + .modal-footer { justify-content: center !important; } + + + @media (max-width: 766px) { + #carouselExampleIndicators { + height: 100%; + display: flex; + margin: 0 !important; + } + + .operationDesc { width: 100%; } + + .actionHolder { + display: block; + padding: 0 10px; + } + + #closePartition { + position: absolute; + top: 86%; + right: 1.3%; + width: 97.3%; + height: 30px; + background-color: #454D5C; + color: white; + border-radius: 6px; + } + + .desc { + height: 130px; + border: 1px solid #2BBABA; + border-radius: 6px; + padding: 0 5px; + margin-top: 27px; + width: 100%; + } + + #reject { + position: absolute; + width: 47%; + top: 70%; + left: 9px; + } + + #confirm { + position: absolute; + width: 47%; + top: 70%; + right: 9px; + } + + .operationRejectAndAcceptHolder { display: block; } + + .operationRejectAndAccept { display: block; } + + .operationReject { display: block; } + + .operationAccept { display: block; } + + .sliderImg { + object-fit: cover; + height: 170px !important; + } + + .responsiveInMobile { + display: none; + position: fixed; + top: 50%; + right: 50%; + transform: translate(50%, -50%); + z-index: 1240; + width: 85%; + height: 235px; + border-radius: 8px; + background-color: #FFFFFF; + } + + #overlayModalUpload { + display: none; + background-color: rgba(0, 0, 0, .6); + z-index: 3; + position: fixed; + height: 100%; + width: 100%; + top: 0; + right: 0; + } + + .tozihat { display: none; } + + .closePartition { + position: absolute; + top: 1px; + right: 3px; + display: block !important; + } + + + .lightbox-enabled { + object-fit: contain; + height: 170px; + width: 280px !important; + } + + .mg-btn2s { + position: absolute; + left: 50%; + transform: translateX(-50%); + top: 45px; + justify-content: center; + } + + .lightbox-container .active { background-color: rgba(0, 0, 0, .6); } + + .mg-btn2s2 { + justify-content: center; + transform: translateX(-50%); + position: absolute; + left: 50%; + top: 45px; + } + + + .mg-btn2s { top: 28px !important; } + + .mg-btn2s2 { + top: 28px !important; + width: 100% !important; + } + + .form-check-input[type="radio"], .form-check-input[type="checkbox"] { + width: 12px; + height: 12px; + } + + .form-group { height: 60px !important; } + + .buttonsActionsParent { margin-top: 4px; } + + /* Hide scrollbar for Chrome, Safari and Opera */ + .navbar-details-menu::-webkit-scrollbar { display: none; } + + /* Hide scrollbar for IE, Edge and Firefox */ + + .navbar-details-menu { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + } + + .details { margin-bottom: 5px; } + + .mg-btn { padding: .2rem .3rem; } + + .headerModal { height: 28px; } + + .headerModal svg { + width: 30px; + height: 30px; + } + + .detailTitle { font-size: 13px; } + + .form-group { height: 58px !important; } + + .modal-fullscreen1 { + max-width: none !important; + height: 100% !important; + margin: 0 !important; + } + + .form-control { + margin: 5px 0 !important; + border-radius: 5px; + text-align: center; + } + + .rightside { margin-bottom: 6px; } + + .leftside { padding: 0 22px; } + + .modal-footer { justify-content: center !important; } + } + + @media (max-width: 576px) { + #carouselExampleIndicators { + height: 100%; + display: flex; + margin: 0 !important; + } + + .actionHolder { + display: block; + padding: 0 10px; + } + + .operationDesc { width: 100%; } + + #closePartition { + position: absolute; + top: 86%; + right: 2%; + width: 96%; + height: 30px; + background-color: #454D5C; + color: white; + border-radius: 6px; + } + + .desc { + height: 130px; + border: 1px solid #2BBABA; + border-radius: 6px; + padding: 0 5px; + margin-top: 27px; + width: 100%; + } + + #reject { + position: absolute; + width: 47%; + top: 70%; + left: 9px; + } + + #confirm { + position: absolute; + width: 47%; + top: 70%; + right: 9px; + } + + .operationRejectAndAcceptHolder { display: block; } + + .operationRejectAndAccept { display: block; } + + .operationReject { display: block; } + + .operationAccept { display: block; } + + .sliderImg { + object-fit: cover; + height: 170px !important; + } + + .responsiveInMobile { + display: none; + position: fixed; + top: 50%; + right: 50%; + transform: translate(50%, -50%); + z-index: 1240; + width: 85%; + height: 235px; + border-radius: 8px; + background-color: #FFFFFF; + } + + #overlayModalUpload { + display: none; + background-color: rgba(0, 0, 0, .6); + z-index: 3; + position: fixed; + height: 100%; + width: 100%; + top: 0; + right: 0; + } + + .tozihat { display: none; } + + .closePartition { + position: absolute; + top: 1px; + right: 3px; + display: block !important; + } + + + .lightbox-enabled { + object-fit: contain; + height: 170px; + width: 280px !important; + } + + .mg-btn2s { + position: absolute; + left: 50%; + transform: translateX(-50%); + top: 45px; + justify-content: center; + } + + .lightbox-container .active { background-color: rgba(0, 0, 0, .6); } + + .mg-btn2s2 { + justify-content: center; + transform: translateX(-50%); + position: absolute; + left: 50%; + top: 45px; + } + + + .mg-btn2s { top: 28px !important; } + + .mg-btn2s2 { + top: 28px !important; + width: 100% !important; + } + + .form-check-input[type="radio"], .form-check-input[type="checkbox"] { + width: 12px; + height: 12px; + } + + .form-group { height: 60px !important; } + + .buttonsActionsParent { + width: 100%; + display: flex; + gap: 5px; + margin-top: 4px; + } + + .exitModal { + width: 33%; + padding: .4rem 1rem; + background-color: #454D5C; + color: white; + border-radius: 6px; + } + + .operationBtn { + width: 33%; + padding: .4rem 1rem; + background-color: #84CC16; + color: white; + border-radius: 6px; + } + + /* Hide scrollbar for Chrome, Safari and Opera */ + .navbar-details-menu::-webkit-scrollbar { display: none; } + + /* Hide scrollbar for IE, Edge and Firefox */ + + .navbar-details-menu { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + } + + .details { margin-bottom: 5px; } + + .mg-btn { padding: .2rem .3rem; } + + .headerModal { height: 28px; } + + .headerModal svg { + width: 30px; + height: 30px; + } + + .detailTitle { font-size: 13px; } + + .form-group { height: 58px !important; } + + .modal-fullscreen1 { + max-width: none !important; + height: 100% !important; + margin: 0 !important; + } + + .form-control { + margin: 5px 0 !important; + border-radius: 5px; + text-align: center; + } + + .rightside { margin-bottom: 6px; } + + .leftside { padding: 0 22px; } + + .modal-footer { justify-content: center !important; } + } + } +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/EmployeesList.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/EmployeesList.css new file mode 100644 index 00000000..2c1798b2 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/EmployeesList.css @@ -0,0 +1,292 @@ + +.errored { + animation: shake 300ms; + color: #eb3434 !important; + background-color: #fef2f2 !important; + border: 1px solid #eb3434 !important; + border-radius: 7px; +} + +.checkSvg { + right: -8px; + top: -10px; +} + +.goToTop { + position: fixed; + bottom: -10px; + margin-right: 100px; + z-index: 100; + color: #fff; + background-color: #25acacd6; + display: none; +} + +.goToTop:hover { + color: #fff; + background-color: #2ca4a4; +} + +.width1 { + width: 5% !important; +} + +.width2 { + width: 20% !important; +} + +.width3 { + width: 25% !important; +} + +.width4 { + width: 18% !important; +} + +.width5 { + width: 6% !important; +} + +.width6 { + width: 0% !important; +} + +.width7 { + width: 0% !important; +} +.width8 { + width: 10% !important; + text-align: end; +} + +.documentFileBox { + width: 40px; + height: 25px; + border-radius: 4px; + background-color: #D9D9D9; + margin: auto 3px; + overflow: hidden; +} + +.documentFileBoxImg { + width: 30px; + height: 30px; + border-radius: 4px; + background-color: #D9D9D9; + margin: auto 3px; + overflow: hidden; +} + +.submittedbyadmin { + border: 1px solid #FDBA74; +} + +.preview-image { + object-fit: cover; + object-position: center; + width: 40px; + height: 25px; +} + +.btn-uploadingPD { + border: 1px solid transparent; + /*width: 60%;*/ + font-size: 12px; + height: 30px; + border-radius: 5px; + padding: 3px 4px; + color: #146D94; + margin: auto 0 auto 1px; + background-color: rgba(52, 209, 209, 0.20); + transition: ease .2s; +} + +.btn-uploadingPD:hover { + color: #083347; + background-color: rgba(52, 209, 209, 0.40); +} + +.btn-pd-more { + background: #B6F2E1; + border: 1px solid #059669; + border-radius: 7px; + position: relative; + overflow: hidden; + color: #059669; + text-align: right; + font-size: 11px; + padding: 3px; + font-style: normal; + font-weight: 400; + line-height: normal; + white-space: nowrap; +} + + .btn-pd-more:hover { + background: #a3d7c9; + } + +.btn-uploadingPD-mobile { + background-color: #B9EBEE; + color: #1992C6; + width: 100%; + padding: 6px; + border-radius: 5px; + border: 1px solid #7ddadf; +} + +.btn-uploadingPD-mobile:hover { + background-color: #91dfe3; +} + +.withdraw { + background-color: rgb(177 195 195) !important; +} + +.btnTabPD { + background-color: #b0e5e5; + padding: 6px 9px; + width: 130px; + border-radius: 7px; + border: 1px solid #b3b3b3; + color: #9d9d9d; + font-size: 11px; + margin: auto 3px auto 3px; +} + +.btnTabPD:first-child { + margin: auto 0 auto 3px; +} + +.btnTabPD.active { + background-color: #34dfdf; + color: #3b3b3b; + pointer-events: none; +} + +.btnTabPD:hover { + background-color: #34dfdf; +} + +.images { + word-wrap: normal; + white-space: nowrap !important; +} + +.operation-image { + width: 100%; + height: 80px; + background-position: center; + object-fit: contain; +} + +.imageHolder { + text-align: center; + padding: 0 !important; + border-radius: 8px; + background-color: gray; +} + + +@media (max-width: 1366px) { + .Rtable .Rtable-row .Rtable-cell { + font-size: 12px; + } + + .Rtable .Rtable-row .Rtable-cell .Rtable-cell--content { + font-size: 11px; + } + + .btn-uploadingPD { + font-size: 10px; + } + .images { + justify-content: center !important; + } + +} + +@media (max-width: 767px) { + .goToTop { + position: fixed; + bottom: 54px; + margin-right: 39%; + z-index: 100; + color: #fff; + background-color: #25acac70; + } + .images { + justify-content: center !important; + } + .wrapper { + margin: 0 0 60px 0; + } + + .Rtable .Rtable-row:nth-child(even), .table-workshop .Rtable .Rtable-row:nth-child(4n+2), .table-personals .Rtable .Rtable-row:nth-child(4n+2) { + border-radius: 10px; + background-color: #ECFFFF; + transition: all .3s ease; + border: 1px solid #eee; + } + + .Rtable .Rtable-row:nth-child(odd), .table-workshop .Rtable .Rtable-row:nth-child(4n+4), .table-personals .Rtable .Rtable-row:nth-child(4n+4) { + border-radius: 10px; + background-color: #ECFFFF; + transition: all .3s ease; + border: 1px solid #eee; + } + + .Rtable--collapse .Rtable-row { + outline: none; + border: 1px solid #D2D2D2; + } + + .Rtable .Rtable-row .Rtable-cell { + padding: 0; + } + + .width2 { + width: 50% !important; + } + + .width7 { + width: 30% !important; + justify-content: end; + display: flex; + } + + .txtMonilePD { + color: #727272; + font-weight: 600; + font-size: 10px; + margin: 3px 4px; + } + + .btnTabPD { + font-size: 10px; + padding: 5px 6px; + } +} + +@media(max-width:992px) { + .operation-image { + width: 120px; + } +} + + +@media(max-width:567px) { + .width8 { + text-align: start !important; + } + .width4 { + width: 45% !important; + } + .images { + justify-content: center !important; + } + + .operation-image { + width: 120px; + } +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/Index.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/Index.css new file mode 100644 index 00000000..1f918210 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/Index.css @@ -0,0 +1,232 @@ + +.errored { + animation: shake 300ms; + color: #eb3434 !important; + background-color: #fef2f2 !important; + border: 1px solid #eb3434 !important; + border-radius: 7px; +} + +.goToTop { + position: fixed; + bottom: -10px; + margin-right: 100px; + z-index: 100; + color: #fff; + background-color: #25acacd6; + display: none; +} + +.goToTop:hover { + color: #fff; + background-color: #2ca4a4; +} + +.width1 { + width: 5% !important; +} + +.width2 { + width: 40% !important; +} + +.width3 { + width: 30% !important; +} + +.width4 { + width: 15% !important; +} + +.width5 { + width: 15% !important; +} + +.width6 { + width: 20% !important; +} + +.width7 { + width: 10% !important; + text-align: end; +} + +.documentFileBox { + width: 40px; + height: 25px; + border-radius: 4px; + background-color: #D9D9D9; + margin: auto 3px; + overflow: hidden; +} + +.documentFileBoxImg { + width: 30px; + height: 30px; + border-radius: 4px; + background-color: #D9D9D9; + margin: auto 3px; + overflow: hidden; +} + +.preview-image { + object-fit: cover; + object-position: center; + width: 40px; + height: 25px; +} + +.btn-uploadingPD { + border: 1px solid transparent; + /*width: 60%;*/ + font-size: 12px; + height: 30px; + border-radius: 5px; + padding: 3px 4px; + color: #146D94; + margin: auto 0 auto 1px; + background-color: rgba(52, 209, 209, 0.20); + transition: ease .2s; +} + +.btn-uploadingPD:hover { + color: #083347; + background-color: rgba(52, 209, 209, 0.40); +} + +.btn-pd-more { + background: #B6F2E1; + border: 1px solid #059669; + border-radius: 7px; + position: relative; + overflow: hidden; + color: #059669; + text-align: right; + font-size: 11px; + padding: 3px; + font-style: normal; + font-weight: 400; + line-height: normal; + white-space: nowrap; +} + + .btn-pd-more:hover { + background: #a3d7c9; + } + +.btn-uploadingPD-mobile { + background-color: #B9EBEE; + color: #1992C6; + width: 100%; + padding: 6px; + border-radius: 5px; + border: 1px solid #7ddadf; +} + +.btn-uploadingPD-mobile:hover { + background-color: #91dfe3; +} + +.withdraw { + background-color: rgb(177 195 195) !important; +} + +.btnTabPD { + background-color: #b0e5e5; + padding: 6px 9px; + width: 130px; + border-radius: 7px; + border: 1px solid #b3b3b3; + color: #9d9d9d; + font-size: 11px; + margin: auto 3px auto 3px; +} + +.btnTabPD:first-child { + margin: auto 0 auto 3px; +} + +.btnTabPD.active { + background-color: #34dfdf; + color: #3b3b3b; + pointer-events: none; +} + +.btnTabPD:hover { + background-color: #34dfdf; +} + +@media (max-width: 1366px) { + .Rtable .Rtable-row .Rtable-cell { + font-size: 12px; + } + + .Rtable .Rtable-row .Rtable-cell .Rtable-cell--content { + font-size: 11px; + } + + .btn-uploadingPD { + font-size: 10px; + } + +} + +@media (max-width: 767px) { + .goToTop { + position: fixed; + bottom: 54px; + margin-right: 39%; + z-index: 100; + color: #fff; + background-color: #25acac70; + } + + .wrapper { + margin: 0 0 60px 0; + } + + .Rtable .Rtable-row:nth-child(even), .table-workshop .Rtable .Rtable-row:nth-child(4n+2), .table-personals .Rtable .Rtable-row:nth-child(4n+2) { + border-radius: 10px; + background-color: #ECFFFF; + transition: all .3s ease; + border: 1px solid #eee; + } + + .Rtable .Rtable-row:nth-child(odd), .table-workshop .Rtable .Rtable-row:nth-child(4n+4), .table-personals .Rtable .Rtable-row:nth-child(4n+4) { + border-radius: 10px; + background-color: #ECFFFF; + transition: all .3s ease; + border: 1px solid #eee; + } + + .Rtable--collapse .Rtable-row { + outline: none; + border: 1px solid #D2D2D2; + } + + .Rtable .Rtable-row .Rtable-cell { + padding: 0; + } + + .width2 { + width: 15% !important; + } + + .width7 { + width: 30% !important; + justify-content: end; + display: flex; + } + + .txtMonilePD { + color: #727272; + font-weight: 600; + font-size: 10px; + margin: 3px 4px; + } + + .btnTabPD { + font-size: 10px; + padding: 5px 6px; + } +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/table-style.css b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/table-style.css new file mode 100644 index 00000000..3413cab0 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/css/table-style.css @@ -0,0 +1,590 @@ + + +/* List & Table */ +.list-box { + border-radius: 10px; + /* padding: 4px; */ + padding: 2px 6px; +} +/* End List & Table */ + + +.ellipsed { + display: block; + width: 100%; + text-overflow: ellipsis; + overflow-x: clip; + white-space: nowrap; + text-align:start +} + +/*********************************** Start Apply Table styles ***********************************/ +.wrapper { + width: 100%; + /* max-width: 1000px; */ + /* margin: 1em auto; */ + /* padding: 1em; */ + /* text-align: right; */ + /* font-family: 'IranYekanEXBold' !important; */ +} + +.is-striped { + background-color: rgba(233, 200, 147, 0.2); +} + +.date-cell { + width: 20%; +} + +.topic-cell { + width: 41%; +} + +.access-link-cell { + width: 13%; +} + +.replay-link-cell { + width: 13%; +} + +.pdf-cell { + width: 13%; +} + +.Rtable { + display: flex; + flex-wrap: wrap; + /* margin: 0 0 3em 0; */ + padding: 0; + /* box-shadow: 0 0 40px rgba(0, 0, 0, 0.2); */ +} + +.Rtable .Rtable-row { + width: 100%; + display: flex; + /* border: 2px solid white; */ + padding: 0.1em 0.4em; + /* margin: 5px 2px auto; */ + margin: 2px auto; +} + +.Rtable .Rtable-row .Rtable-cell { + box-sizing: border-box; + flex-grow: 1; + padding: 0.2em; + /* این هایدن برای همتراز بودن خوبه، ولی موقع رسپانسیو مقدار همتراز نامیزان میشود */ + /* overflow: hidden; */ + list-style: none; + text-align: right; + font-size: 12px; + /* این قسمت برای همتراز کردن ستون های جدول است */ + width: 100%; +} + + +.Rtable .Rtable-row:nth-child(even) { + border-radius: 10px; + background-color: #ECFFFF; +} + +.Rtable .Rtable-row:nth-child(odd) { + border-radius: 10px; + background-color: #DDF4F4; +} + +.Rtable .Rtable-row:nth-child(even), +.table-workshop .Rtable .Rtable-row:nth-child(4n+2), +.table-personals .Rtable .Rtable-row:nth-child(4n+2) { + border-radius: 10px; + background-color: #ECFFFF; + transition: all .3s ease; + border: 1px solid #eee; +} + +.Rtable .Rtable-row:nth-child(even):hover, +.table-workshop .Rtable .Rtable-row:nth-child(4n+2):hover, +.table-personals .Rtable .Rtable-row:nth-child(4n+2):hover { + background-color: #C9F0F0; + /*transform: scale(1.006);*/ +} + +.Rtable .Rtable-row:nth-child(odd), +.table-workshop .Rtable .Rtable-row:nth-child(4n+4), +.table-personals .Rtable .Rtable-row:nth-child(4n+4) { + border-radius: 10px; + background-color: #DDF4F4; + transition: all .3s ease; + border: 1px solid #eee; +} + +.Rtable .Rtable-row:nth-child(odd):hover, +.table-workshop .Rtable .Rtable-row:nth-child(4n+4):hover, +.table-personals .Rtable .Rtable-row:nth-child(4n+4):hover { + background-color: #C9F0F0; + /*transform: scale(1.006);*/ +} + + +.Rtable .Rtable-row:first-child { + background: linear-gradient(180deg, #41D1D1 0%, #2CD0D0 100%); + border: none !important; + /* padding: auto 1px; */ +} + +.Rtable .Rtable-row:first-child:hover { + transform: none !important; + border: none !important; +} + +.Rtable .Rtable-row .Rtable-cell.column-heading { + color: white; + /* padding: 1em 0.5em; */ + margin: 0.4em 0; +} + +/* TH */ +.Rtable .Rtable-row .Rtable-cell.column-heading:last-child { + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; +} + +.Rtable .Rtable-row .Rtable-cell.column-heading:first-child { + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; +} + +.Rtable .Rtable-row .Rtable-cell .Rtable-cell--heading { + display: none; +} + +.Rtable .Rtable-row .Rtable-cell .Rtable-cell--content { + font-size: 12px; + /* padding: 0 0.5em; */ + text-align: right; + color: #0B5959; + /* white-space: nowrap; */ +} + +.Rtable .Rtable-row .Rtable-cell .Rtable-cell--content .webinar-date { + font-weight: 700; +} + +.Rtable .Rtable-row .Rtable-cell .Rtable-cell--content > span { + border-radius: 5px; + background: rgba(87, 227, 227, 0.25); + width: 32px; + height: 32px; + display: inline-block; + padding: 6px; +} + + +.no-flexbox .Rtable { + display: block; +} + +.no-flexbox .Rtable.Rtable-cell { + width: 100%; +} +/*********************************** END Apply Table styles ***********************************/ + + + + + + + + + + +/*********************************** Start Table Contract List ***********************************/ +.table-contracts .Rtable .Rtable-row .column-heading > span { + border-radius: 5px; + /* background: rgba(87, 227, 227, 0.25); */ + width: 60px; + /* height: 32px; */ + padding: 0 10px; +} + + .table-contracts .Rtable .Rtable-row .column-heading > span input { + margin: 0 0 0 5px; + } + +.table-contracts .Rtable .Rtable-row .Rtable-cell .Rtable-cell--content > span { + border-radius: 5px; + background: rgba(87, 227, 227, 0.25); + width: 60px; + height: 32px; + display: inline-block; + padding: 0 10px; + font-weight: 600; +} + + +.table-contracts .Rtable .Rtable-row .Rtable-cell .column-heading > span { + border-radius: 5px; + background: rgba(87, 227, 227, 0.25); + width: 60px; + height: 32px; + display: inline-block; + padding: 6px; + font-weight: 400; +} + +.table-contracts .form-check-input { + padding: 8px !important; + border: 0 !important; + outline: 1px solid #1dc9a0; +} + + .table-contracts .form-check-input:checked[type="checkbox"] { + padding: 8px !important; + /* outline: none; */ + outline: 1px solid #1dc9a0; + } + + .table-contracts .form-check-input:checked { + background-color: #1dc9a0; + padding: 8px !important; + outline: 1px solid #1dc9a0; + } + + .table-contracts .form-check-input.checkAll:checked { + background-color: #128888; + padding: 8px !important; + outline: 1px solid #1dc9a0; + } + + .table-contracts .form-check-input:focus, .form-control:focus { + border-color: #1dc9a0; + outline: 0; + box-shadow: none; + outline: 1px solid #1dc9a0; + } + +.table-contracts .select-all { + border-radius: 7px; + padding: 6px 8px; + background-color: #3AD1D1; +} + + .table-contracts .select-all input:checked[type="checkbox"] + label { + color: #ffffff; + } + + .table-contracts .select-all label { + color: #ffffff; + margin: 0 3px; + } + + + + + .table-contracts .contract-list .Rtable--collapse .Rtable-row--head { + display: flex; + } + + .table-contracts .contract-list .width1 { + width: 10%; + } + + .table-contracts .contract-list .width2 { + width: 10%; + } + + .table-contracts .contract-list .width3 { + width: 10%; + } + + .table-contracts .contract-list .width4 { + width: 20%; + } + + .table-contracts .contract-list .width5 { + width: 10%; + } + .table-contracts .contract-list .width6 { + width: 10%; + } + .table-contracts .contract-list .width7 { + width: 20%; + display: flex; + justify-content: center; + } + + .table-contracts .contract-list .width8 { + width: 10%; + display: flex; + justify-content: end; + } + +/*********************************** End Table Contract List ***********************************/ + + + + + + +/*********************************** Start Table Checkout List ***********************************/ +.table-contracts .checkout-list .Rtable--collapse .Rtable-row--head { + display: flex; +} + +.table-contracts .checkout-list .width1 { + width: 10%; +} + +.table-contracts .checkout-list .width2 { + width: 10%; +} + +.table-contracts .checkout-list .width3 { + width: 5%; +} + +.table-contracts .checkout-list .width4 { + width: 5%; +} + +.table-contracts .checkout-list .width5 { + width: 10%; +} + +.table-contracts .checkout-list .width6 { + width: 20%; +} + +.table-contracts .checkout-list .width7 { + width: 10%; +} + +.table-contracts .checkout-list .width8 { + width: 10%; +} + +.table-contracts .checkout-list .width9 { + width: 10%; + display: flex; + justify-content: center; +} + +.table-contracts .checkout-list .width10 { + width: 10%; + display: flex; + justify-content: end; +} +/*********************************** End Table Checkout List ***********************************/ + + + + +/* ********************************************** Start Table Personal List ********************************************** */ +.personalListModal .personal-list .Rtable--collapse .Rtable-row { + padding: 4px 5px; + outline: none; + margin: 0.1em 0; +} + +.personalListModal .personal-list .withdraw { + background-color: rgb(177 195 195); +} + +.personalListModal .personal-list .Rtable--collapse .Rtable-row--head { + display: flex; +} + +.personalListModal .personal-list .width1 { + width: 10%; +} + +.personalListModal .personal-list .width2 { + width: 15%; +} + +.personalListModal .personal-list .width3 { + width: 20%; +} + +.personalListModal .personal-list .width4 { + width: 15%; + display: flex; + justify-content: center; +} + +.personalListModal .personal-list .width5 { + width: 15%; + display: flex; + justify-content: center; +} +.personalListModal .personal-list .width6 { + width: 25%; + display: flex; + justify-content: end; +} + +.personalListModal .personal-list .Rtable--collapse .Rtable-row .Rtable-cell:last-child .Rtable-cell--content { + text-align: center; +} +/* ********************************************** End Table Personal List ********************************************** */ + + + + +/* ********************************************** Start Table Personal Info List ********************************************** */ +.personalListModal .personal-info-list .Rtable--collapse .Rtable-row { + padding: 4px 5px; + outline: none; + margin: 0.1em 0 4px 0; +} + +.personalListModal .personal-info-list .withdraw { + background-color: rgb(177 195 195); +} + +.personalListModal .personal-info-list .Rtable--collapse .Rtable-row--head { + display: flex; +} + +.personal-info-list .Rtable .Rtable-row .Rtable-cell { + font-size: 12px; + font-weight: 600; +} + +.personalListModal .personal-info-list .width1 { + width: 2.50%; +} + +.personalListModal .personal-info-list .width2 { + width: 10%; +} + +.personalListModal .personal-info-list .width3 { + width: 5%; + text-align: center; +} + +.personalListModal .personal-info-list .width4 { + width: 5%; + text-align: center; +} + +.personalListModal .personal-info-list .width5 { + width: 6.25%; + text-align: center; +} + +.personalListModal .personal-info-list .width6 { + width: 6.25%; + text-align: center; +} + +.personalListModal .personal-info-list .width7 { + width: 6.25%; + text-align: center; +} + +.personalListModal .personal-info-list .width8 { + width: 5.25%; +} + +.personalListModal .personal-info-list .width9 { + width: 5.25%; + text-align: center; +} + +.personalListModal .personal-info-list .width10 { + width: 4.25%; + text-align: center; +} + +.personalListModal .personal-info-list .width11 { + width: 4.25%; + text-align: center; +} + +.personalListModal .personal-info-list .width12 { + width: 10%; + text-align: center; +} + +.personalListModal .personal-info-list .width13 { + width: 7.25%; + text-align: center; +} + +.personalListModal .personal-info-list .width14 { + width: 10%; + text-align: center; +} + +.personalListModal .personal-info-list .width15 { + width: 6.25%; + text-align:center; +} + +.personalListModal .personal-info-list .width16 { + width: 2.1%; +} + +.personalListModal .personal-info-list .Rtable--collapse .Rtable-row .Rtable-cell:last-child .Rtable-cell--content { + justify-content: end; +} + +.Rtable .Rtable-row .Rtable-cell.column-heading:last-child { + justify-content: end; +} + +@media (max-width: 767px) { + .Rtable--collapse .Rtable-row .Rtable-cell { + border-bottom: none !important; + } +} +/* ********************************************** End Table Personal Info List ********************************************** */ + + + + + /* ********************************************** Start Table Workshop List ********************************************** */ + .table-workshop .Rtable--collapse .Rtable-row { + padding: 1px 6px; + outline: none; + margin: 5px 0px 0; + } + + .table-workshop .workshop-list .Rtable--collapse .Rtable-row--head { + /*display: flex;*/ + } + + .table-workshop .workshop-list .width1 { + width: 5%; + } + + .table-workshop .workshop-list .width2 { + width: 20%; + } + + .table-workshop .workshop-list .width3 { + width: 20%; + } + + .table-workshop .workshop-list .width4 { + width: 35%; + } + + .table-workshop .workshop-list .width5 { + width: 10%; + } + + .table-workshop .workshop-list .width6 { + width: 10%; + display: flex; + justify-content: end; + } + + .table-workshop .workshop-list .Rtable--collapse .Rtable-row .Rtable-cell:last-child .Rtable-cell--content { + /*text-align: center;*/ + } + /* ********************************************** End Table Workshop List ********************************************** */ + + diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/DetailsPersonnelModal.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/DetailsPersonnelModal.js new file mode 100644 index 00000000..8a73d2fc --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/DetailsPersonnelModal.js @@ -0,0 +1,500 @@ +var operations = []; +var svgPending = + ` + + + + + `; + +var svgReject = + ` + + + + + `; +var svgConfirmed = + ` + + + `; + + +$(document).ready(function () { + checkSubmit(); + + + $("#militaryStatus").prop("disabled", true); + $("#operationBtn").click(function() { + if (window.matchMedia("(max-width: 767px)").matches) { + + $(".responsiveInMobile").css({ + "display": "block", + "transition": "opacity 0.5s" + }); + $("#overlayModalUpload").css({ + "display": "block", + "transition": "opacity 0.5s" + }); + + $("#confirm , #reject").click(function() { + setTimeout(function() { + $(".responsiveInMobile").css({ "display": "none"}); + $("#overlayModalUpload").css({ "display": "none"}); + },300); + }); + + + // New changes... + $('#overlayModalUpload, .closePartition').click(function () { + $(".responsiveInMobile").css({ + "display": "none", + "opacity": "0" + }); + $("#overlayModalUpload").css({ + "display": "none", + "opacity": "0" + }); + }); + + // Set the opacity back to 1 after a short delay + setTimeout(function () { + $(".responsiveInMobile").css("opacity", "1"); + $("#overlayModalUpload").css("opacity", "1"); + }, 10); + } + + }); + + //giving class to sign holders and adjust classes + $('.signHolder').each(function() { + const buttonClass = $(this).find('button').attr('class'); + const spanElement = $(this).find('span.sign'); + if (buttonClass.includes('submittedbyadmin')) { + $(this).addClass('pending'); + spanElement.html(svgPending); + } else if (buttonClass.includes('rejected')) { + $(this).addClass('reject'); + spanElement.html(svgReject); + } else if (buttonClass.includes('pending')) { + $(this).addClass('pending'); + spanElement.html(svgPending); + } else if (buttonClass.includes('confirmed')) { + $(this).addClass('confirmed'); + spanElement.html(svgConfirmed); + } + }); + + // Ensure the first carousel item is active by default + if (!$('.carousel-item').hasClass('active')) { + $('.carousel-item').first().addClass('active'); + } + + // Ensure the first mg-btn (for "عکس پرسنلی") is active by default + $('.mg-btn').first().addClass('active'); + + var currentSlide = $('.carousel-item.active').data('slide-index') || 0; + var totalSlides = $('.carousel-item').length; + + // Function to update slide, buttons, and selective slides + function updateSlide() { + // Move carousel to the current slide + $('#carouselExampleIndicators').carousel(currentSlide); + + // Update active button + $('.mg-btn').removeClass('active'); + $('.mg-btn[data-slide-index="' + currentSlide + '"]').addClass('active'); + + // Update selective slides for right-to-left + $('.slective-slide').removeClass('active-select'); + $('.slective-slide[data-slide-index="' + currentSlide + '"]').addClass('active-select'); + } + + // Initial update + updateSlide(); + + // Event listener for button clicks + $('.mg-btn').click(function () { + currentSlide = $(this).data('slide-index'); + updateSlide(); + }); + + // Event listener for next and previous arrows + $('.right-arrow, .left-arrow').click(function () { + var direction = $(this).hasClass('right-arrow') ? -1 : 1; // Adjust direction for right-to-left slider + currentSlide = (currentSlide + direction + totalSlides) % totalSlides; + updateSlide(); + }); + + // Event listener for carousel item change + $('#carouselExampleIndicators').on('slid.bs.carousel', function () { + currentSlide = $('.carousel-item.active').data('slide-index'); + updateSlide(); + }); + + $(".exitModal").click(function () { + + if (operations.length > 0) { + swal({ + title: "در صورت انصراف عملیات ثبت نخواهد شد!", + text: "", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "بله", + cancelButtonText: "خیر", + closeOnConfirm: true, + closeOnCancel: true + }, function (isConfirm) { + if (isConfirm) { + $('#MainModal').modal('hide'); + + } + }); + } else { + $('#MainModal').modal('hide'); + } + }); + + + + function toggleOperationTab() { + let enable = false; + $(".mg-btn.active").each(function () { + if ($(this).hasClass("submittedbyadmin")) { + enable = true; + } + }); + if (enable) { + $(".operaion-tab").removeClass("disable"); + + } else { + $(".operaion-tab").addClass("disable"); + } + } + + // Initial check + toggleOperationTab(); + + // Check when .mg-btn classes change + $('.mg-btn').on('classChange', function () { + toggleOperationTab(); + }); + + // Trigger classChange event when class is added or removed + (function () { + var originalAddClassMethod = $.fn.addClass; + var originalRemoveClassMethod = $.fn.removeClass; + + $.fn.addClass = function () { + var result = originalAddClassMethod.apply(this, arguments); + $(this).trigger('classChange'); + return result; + }; + + $.fn.removeClass = function () { + var result = originalRemoveClassMethod.apply(this, arguments); + $(this).trigger('classChange'); + return result; + }; + })(); + + // Check images and update alt attribute + $('img').each(function () { + if ($(this).attr('src') === "/AdminNew/Company/EmployeesDocumentsManagement/EmployeesList?handler=ShowPicture") { + $(this).attr('alt', 'عکسی آپلود نشده'); + $(this).css("color", "black"); + } + }); + + + + + + + // Lightbox Gallery + + // query selectors + const lightboxEnabled = document.querySelectorAll('.lightbox-enabled'); + const lightboxArray = Array.from(lightboxEnabled); + const lastImage = lightboxArray.length - 1; + const lightboxContainer = document.querySelector('.lightbox-container'); + const lightboxImage = document.querySelector('.lightbox-image'); + const lightboxBtns = document.querySelectorAll('.lightbox-btn'); + const lightboxBtnRight = document.querySelector('#right'); + const lightboxBtnLeft = document.querySelector('#left'); + let activeImage; + // Functions + const showLightBox = () => { lightboxContainer.classList.add('active') } + + const hideLightBox = () => { lightboxContainer.classList.remove('active') } + + const setActiveImage = (image) => { + lightboxImage.src = image.dataset.imgsrc; + activeImage = lightboxArray.indexOf(image); + } + + const transitionSlidesLeft = () => { + lightboxBtnLeft.focus(); + $('.lightbox-image').addClass('slideright'); + setTimeout(function () { + activeImage === 0 ? setActiveImage(lightboxArray[lastImage]) : setActiveImage(lightboxArray[activeImage - 1]); + }, 250); + + + setTimeout(function () { + $('.lightbox-image').removeClass('slideright'); + }, 500); + } + + const transitionSlidesRight = () => { + lightboxBtnRight.focus(); + $('.lightbox-image').addClass('slideleft'); + setTimeout(function () { + activeImage === lastImage ? setActiveImage(lightboxArray[0]) : setActiveImage(lightboxArray[activeImage + 1]); + }, 250); + setTimeout(function () { + $('.lightbox-image').removeClass('slideleft'); + }, 500); + } + + const transitionSlideHandler = (moveItem) => { + moveItem.includes('left') ? transitionSlidesLeft() : transitionSlidesRight(); + } + + // Event Listeners + lightboxEnabled.forEach(image => { + image.addEventListener('click', + (e) => { + showLightBox(); + setActiveImage(image); + }); + }); + lightboxContainer.addEventListener('click', () => { hideLightBox() }); + lightboxBtns.forEach(btn => { + btn.addEventListener('click', + (e) => { + e.stopPropagation(); + transitionSlideHandler(e.currentTarget.id); + }); + }); + + lightboxImage.addEventListener('click', + (e) => { + e.stopPropagation(); + + }); + +}); + + +function checkFields() { + if ($(".mg-btn").hadClass("active")) { + var index = $(this).data("slide-index"); + var inputValue = $("#label_" + index).val(); + + $("#confirm").click(function () { + $(this).removeClass('submittedbyadmin').addClass("confirmed"); + $(this).closest('.signHolder').removeClass("pending").addClass("confirmed"); + $(this).siblings("span.sign").html(svgConfirmed); + //تایید توضیحات نمیخواد + //inputValue = $("#message").val(); + inputValue=$() + }); + + $("#reject").click(function () { + $(this).removeClass('submittedbyadmin').addClass("reject"); + $(this).closest('.signHolder').removeClass("pending").addClass("rejected"); + $(this).siblings("span.sign").html(svgReject); + inputValue = $("#message").val(); + }); + }; +} + +function rejectAjax() { + //var carouselDocumentItemId = $('.carousel-item.active').data('document-id'); + var carouselDocumentItemId = $('.mg-btn.active').data('document-btn-id'); + var messageData = $("#message").val(); + + if (messageData === "") { + $('.alert-msg').show(); + $('.alert-msg p').text('فیلد توضیحات را پر نمایید'); + $('.select-alert').addClass('errored'); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + $('.select-alert').removeClass('errored'); + }, 3500); + return; + } + + let commandData = { + EmployeeDocumentItemId: carouselDocumentItemId, + IsConfirmed: false, + Message: messageData + }; + operations.push(commandData); + $("#message").val(""); + checkSubmit(); + + + + showAlertMessage('.alert-success-msg', 'تصویر موجود رد شد.', 3500); + $(".mg-btn.active").removeClass('submittedbyadmin').addClass("reject"); + $(".mg-btn.active").closest('.signHolder').removeClass("pending").addClass("rejected"); + + $(".mg-btn.active").siblings("span.sign").html(svgReject); +} + +function confirmAjax() { + //var carouselDocumentItemId = $('.carousel-item.active').data('document-id'); + var carouselDocumentItemId = $('.mg-btn.active').data('document-btn-id'); + var messageData = $("#message").val(); + + let commandData = { + EmployeeDocumentItemId: carouselDocumentItemId, + IsConfirmed: true, + Message: messageData + }; + operations.push(commandData); + $("#message").val(""); + checkSubmit(); + + + showAlertMessage('.alert-success-msg', 'تصویر موجود تایید شد.', 3500); + $(".mg-btn.active").removeClass('submittedbyadmin').addClass("confirmed"); + $(".mg-btn.active").closest('.signHolder').removeClass("pending").addClass("confirmed"); + + $(".mg-btn.active").siblings("span.sign").html(svgConfirmed); +} + + +//function rejectAjax() { +// var document_ItemId = $('.carousel-item.active').data('document-id'); +// var messageData = $("#message").val(); + + +// if (messageData === "") { +// $('.alert-msg').show(); +// $('.alert-msg p').text('فیلد توضیحات را پر نمایید'); +// $('.select-alert').addClass('errored'); +// setTimeout(function () { +// $('.alert-msg').hide(); +// $('.alert-msg p').text(''); +// $('.select-alert').removeClass('errored'); +// }, 3500); +// return; +// } + + + +// $.ajax({ +// async: false, +// dataType: 'json', +// type: 'POST', +// url: rejectUrl, +// headers: { "RequestVerificationToken": antiForgeryToken }, +// data: { documentItemId: Number(document_ItemId), message: messageData }, +// success: function (response) { + +// if (response.success) { +// showAlertMessage('.alert-success-msg', 'تصویر موجود رد شد.', 3500); +// $(".mg-btn.active").removeClass('submittedbyadmin').addClass("reject"); +// $(".mg-btn.active").closest('.signHolder').removeClass("pending").addClass("rejected"); + +// $(".mg-btn.active").siblings("span.sign").html(svgReject); +// } else { +// showAlertMessage('.alert-msg', 'مشکلی پیش آمد.', 3500); +// } + +// $("#message").val(""); + +// }, +// error: function (err) { +// console.log(err); +// showAlertMessage('.alert-msg', 'مشکلی پیش آمد.', 3500); + +// } + +// }); +//} +//function confirmAjax() { +// var documentItemId2 = $('.carousel-item.active').data('document-id'); +// $.ajax({ +// async: false, +// dataType: 'json', +// type: 'POST', +// url: confirmUrl, +// headers: { "RequestVerificationToken": antiForgeryToken }, +// data: { documentItemId: Number(documentItemId2)}, +// success: function (response) { + +// if (response.success) { +// showAlertMessage('.alert-success-msg', 'تصویر موجود تایید شد.', 3500); +// $(".mg-btn.active").removeClass('submittedbyadmin').addClass("confirmed"); +// $(".mg-btn.active").closest('.signHolder').removeClass("pending").addClass("confirmed"); + +// $(".mg-btn.active").siblings("span.sign").html(svgConfirmed); +// } else { +// showAlertMessage('.alert-msg', 'مشکلی پیش آمد.', 3500); +// } + + +// }, +// error: function (err) { +// console.log(err); +// showAlertMessage('.alert-msg', 'مشکلی پیش آمد.', 3500); + +// } +// }); + +//} + + +function submitOP() { + $.ajax({ + async: false, + type: 'POST', + url: submitAll, + headers: { "RequestVerificationToken": antiForgeryToken }, + data: { operations, employeeId: employeeId, workshopId: workshopId }, + success: function (response) { + if (response.success) { + showAlertMessage('.alert-success-msg', response.message, 3500); + _RefreshCheckerCountMenu(); + $('#personnelDocumentsAjax').html(''); + pageIndexJs = 0; + loadPersonnelDocuments(mode, searchName); + $('#MainModal').modal('hide'); + + } else { + showAlertMessage('.alert-msg', response.message, 3500); + } + }, + error: function (err) { + console.log(err); + showAlertMessage('.alert-msg', err.message, 3500); + + } + + }); +} + +function showAlertMessage(selector, message, timeout) { + $(selector).show(); + $(selector + ' p').text(message); + setTimeout(function () { + $(selector).hide(); + $(selector + ' p').text(''); + }, timeout); +} + +function checkSubmit() { + if (operations.length > 0) { + $("#submitOP").removeClass("disable"); + } else { + $("#submitOP").addClass("disable"); + + } +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/EmployeesList.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/EmployeesList.js new file mode 100644 index 00000000..99884448 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/EmployeesList.js @@ -0,0 +1,289 @@ +var pageIndexJs = 0; +var mode = false; +var searchName = ''; + +var svgPending = + ` + + + + + `; + +var svgReject = + `\r\n \r\n `; +var svgConfirmed = + ` + + + `; +var borderSubmitted = "#FFD700"; // Example color for submitted +var borderRejected = "#FF4500"; // Example color for rejected +var borderConfirmed = "#32CD32"; // Example color for confirmed + +$(document).ready(function () { + loadPersonnelDocuments(mode, searchName); + + $(document).on('click', '.btnTabPD', function () { + //mode = $(this).data('mode'); + $('.btnTabPD').removeClass('active'); + $(this).addClass('active'); + $('.btn-clear-filter').addClass('disable'); + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.employeeName').val(''); + loadPersonnelDocuments(mode, searchName = ''); + }); + + $('img').each(function () { + if ($(this).attr('src') === "/AdminNew/Company/EmployeesDocumentsManagement/EmployeesList?handler=ShowPicture&filePath=") { + $(this).attr('src', '/assetsclient/images/pd-image.png'); + } + }); + + // Define your SVGs + //var svgSubmitted = ``; + //var svgRejected = ``; + //var svgConfirmed = ``; + + // Loop through each span with the class 'checkSvg' + $(".checkSvg").each(function () { + var status = $(this).data("status"); + var parent = $(this).closest(".imageHolder"); + + if (status === "submittedbyadmin") { + $(this).html(svgPending); + parent.css("border", `1px solid ${borderSubmitted}`); + } else if (status === "rejected") { + $(this).html(svgReject); + parent.css("border", `1px solid ${borderRejected}`); + } else if (status === "confirmed") { + $(this).html(svgConfirmed); + parent.css("border", `1px solid ${borderConfirmed}`); + } + }); + + + $('#taeed').on('click', function () { + mode = true; + console.log('Mode is set to:', mode); + }); + + // Event listner for the 'all' button + $('#all').on('click', function () { + mode = false; + console.log('Mode is set to:', mode); + }); +}); + +$(document).on('click', ".openAction", function () { + let clickedButton = $(event.target).closest(".btn-pd-more"); + if (clickedButton.length === 0) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + + +$(document).on('click', '.btn-uploadingPD, .btn-uploadingPD-mobile', function () { + var id = $(this).attr('id').split('_')[1]; + openPersonnelDocsUploadModal(id); +}); + +$(document).on('click', '.btn-search-click, .btn-search-click-mobile', function () { + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.btn-clear-filter').removeClass('disable'); + searchName = $('.employeeName').val().trim(); + if (searchName == "") { + $('.btn-clear-filter').addClass('disable'); + } + $('#searchModal').modal('hide'); + loadPersonnelDocuments(mode, searchName); +}); +$(document).on('click', '.btn-clear-filter', function () { + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.btn-clear-filter').addClass('disable'); + $('.employeeName').val(''); + $('#searchModal').modal('hide'); + loadPersonnelDocuments(mode, searchName = ''); +}); + + +// When typing in the desktop search +$('.d-none.d-md-block .employeeName').on('input', function () { + var desktopInput = $(this).val(); + $('#searchModal .employeeName').val(desktopInput); +}); + +// When typing in the mobile search +$('#searchModal .employeeName').on('input', function () { + var mobileInput = $(this).val(); + $('.d-none.d-md-block .employeeName').val(mobileInput); +}); + +$('.goToTop').on('click',function () { + $('html, body').animate({ scrollTop: 0 }, 360); + return false; +}); + +//$(window).scroll(function () { +// if ($(window).scrollTop() + $(window).height() > $(document).height() - 600) { +// loadPersonnelDocuments(mode, searchName); +// } + +// if ($(this).scrollTop() > 100) { +// $('.goToTop').show().fadeIn(); +// } else { +// $('.goToTop').fadeOut().hide(); +// } +//}); + + +function loadPersonnelDocuments(mode, searchName) { + var html = ''; + + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: employeeDocumentsAjaxLoadData, + data: { workshopId: workshopId, confirmedOnly:mode, employeeName: searchName ,'pageIndex': pageIndexJs }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var personnelDocumentsData = response.data; + + if (response.isSuccedded) { + personnelDocumentsData.forEach(function (item) { + //foreach (var item in @Model.Employees.PersonnelInfoViewModels) + var n = pageIndexJs + 1; + + pageIndexJs++; + html += `
    +
    +
    +
    + + ${n} +
    test
    +
    +
    +
    +
    + ${item.employerFullName} +
    +
    + ${item.workshopName} +
    +
    +
    ${item.employeeFullName}
    +
    +
    + ${item.submittedItemsCount} +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + عکس پرسنل +
    +
    + + عکس کارت ملی رو +
    +
    + + عکس کارت ملی پشت +
    +
    + + عکس کارت پایان خدمت +
    +
    + + عکس شناسنامه صفحه1 +
    +
    + + عکس شناسنامه صفحه2 +
    +
    + + عکس شناسنامه صفحه3 +
    +
    + + عکس شناسنامه صفحه4 +
    +
    +
    +
    +
    +
    `; + }); + + pageIndexJs += response.pageIndex; + $('#personnelDocumentsAjax').append(html); + } else { + html += `
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    `; + $('#personnelDocumentsAjax').append(html); + } + + + }, + failure: function (response) { + console.log(response); + } + }); +} + +function openPersonnelDocsUploadModal(id) { + var goTo = `#showmodal=/AdminNew/Company/EmployeesDocumentsManagement/EmployeesList?workshopId=${workshopId}&employeeId=${id}&handler=DetailsPersonnelModal`; + window.location.href = goTo; +} + +function updateIndexesRows() { + let index = 1; + + $(`.Rtable-cell--content .table-number`).each(function () { + $(this).text(index++); + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/Index.js b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/Index.js new file mode 100644 index 00000000..327a4615 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/EmployeesDocumentsManagement/js/Index.js @@ -0,0 +1,474 @@ +var pageIndexJs = 0; +var mode = 'all'; +var searchName = ''; + +$(document).ready(function () { + loadWorkshopList(); + /*loadPersonnelDocuments(mode, searchName);*/ + + $(document).on('click', '.btnTabPD', function () { + mode = $(this).data('mode'); + $('.btnTabPD').removeClass('active'); + $(this).addClass('active'); + $('.btn-clear-filter').addClass('disable'); + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.employeeName').val(''); + loadPersonnelDocuments(mode, searchName = ''); + }); + +}); + +$(document).on('click', ".openAction", function () { + if (window.matchMedia('(max-width: 767px)').matches) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + +//$(document).on('click', '.btn-uploadingPD ,#openModal, .btn-uploadingPD-mobile', function () { +// var id = $(this).attr('id').split('_')[1]; +// openPersonnelDocsUploadModal(id); +//}); + +$(document).on('click', '.btn-search-click, .btn-search-click-mobile', function () { + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.btn-clear-filter').removeClass('disable'); + searchName = $('.employeeName').val().trim(); + if (searchName == "") { + $('.btn-clear-filter').addClass('disable'); + } + $('#searchModal').modal('hide'); + loadPersonnelDocuments(mode, searchName); +}); +$(document).on('click', '.btn-clear-filter', function () { + pageIndexJs = 0; + $('#personnelDocumentsAjax').html(''); + $('.btn-clear-filter').addClass('disable'); + $('.employeeName').val(''); + $('#searchModal').modal('hide'); + loadPersonnelDocuments(mode, searchName = ''); +}); + + +// When typing in the desktop search +$('.d-none.d-md-block .employeeName').on('input', function () { + var desktopInput = $(this).val(); + $('#searchModal .employeeName').val(desktopInput); +}); + +// When typing in the mobile search +$('#searchModal .employeeName').on('input', function () { + var mobileInput = $(this).val(); + $('.d-none.d-md-block .employeeName').val(mobileInput); +}); + +$('.goToTop').on('click',function () { + $('html, body').animate({ scrollTop: 0 }, 360); + return false; +}); + +$(window).scroll(function () { + if ($(window).scrollTop() + $(window).height() > $(document).height() - 600) { + loadPersonnelDocuments(mode, searchName); + } + + if ($(this).scrollTop() > 100) { + $('.goToTop').show().fadeIn(); + } else { + $('.goToTop').fadeOut().hide(); + } +}); + +//function loadPersonnelDocuments(mode, searchName) { + +// var b = pageIndexJs % 30; +// var html = ''; +// var index = 1; + +// if (b === 0) { +// $.ajax({ +// async: false, +// contentType: 'charset=utf-8', +// dataType: 'json', +// type: 'GET', +// url: employeeDocumentsAjaxLoadData, +// data: { workshopId: workshopId, searchMode: mode, employeeName: searchName ,'pageIndex': pageIndexJs }, +// headers: { "RequestVerificationToken": antiForgeryToken }, +// success: function (response) { +// console.log(response); +// var personnelDocumentsData = response.data; +// if (response.isSuccedded) { +// personnelDocumentsData.forEach(function (item) { +// //foreach (var item in @Model.Employees.PersonnelInfoViewModels) +// var n = pageIndexJs + 1; +// html += `
    +//
    +//
    +//
    +// +// ${n} +//
    ${item.employeeId}
    +//
    +//
    +//
    +//
    +//
    +//
    `; +// var employeePicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.employeePicturePath}`; +// if (item.employeePicturePath) { +// html += ``; +// } else { +// html += ``; +// } +// html += `
    +//
    ${item.employeeFullName}
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.employeePicturePath) { +// html += ``; +// } else { +// html += ``; +// } +// html += `
    +//
    +//
    +//
    +//
    `; +// var nationalCardFrontPicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.nationalCardFrontPicturePath}`; +// var nationalCardRearPicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.nationalCardRearPicturePath}`; +// if (item.nationalCardFrontPicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } + +// if (item.nationalCardRearPicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// html += `
    +//
    +//
    +//
    +//
    `; +// var militaryServiceCardPicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.militaryServiceCardPicturePath}`; +// if (item.militaryServiceCardPicturePath) { +// html += ``; +// } else { +// html += ``; +// } +// html += `
    +//
    +//
    +//
    +//
    `; +// var idCardPage1PicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.idCardPage1PicturePath}`; +// var idCardPage2PicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.idCardPage2PicturePath}`; +// var idCardPage3PicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.idCardPage3PicturePath}`; +// var idCardPage4PicturePath = `/AdminNew/Company/EmployeesDocuments/EmployeeList?handler=ShowPicture&filePath=${item.idCardPage4PicturePath}`; +// if (item.idCardPage1PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// if (item.idCardPage2PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// if (item.idCardPage3PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// if (item.idCardPage4PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } + +// html += `
    +//
    + +//
    +//
    +// +//
    +//
    + +//
    +//
    +// +//
    +//
    +//
    + +//
    +//
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.employeePicturePath) { +// html += ``; +// } else { +// html += ``; +// } +// html += `
    +//
    عکس پرسنلی
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.nationalCardFrontPicturePath) { +// html += ``; +// } else { +// html += ``; +// } +// html += `
    +//
    کارت ملی رو
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.nationalCardRearPicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// html += `
    +//
    کارت ملی پشت
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.militaryServiceCardPicturePath) { +// html += ``; +// } else { +// html += ``; +// } +// html += `
    +//
    کارت پایان خدمت
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.idCardPage1PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// html += `
    +//
    شناسنامه صفحه اول
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.idCardPage2PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// html += `
    +//
    شناسنامه صفحه دوم
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.idCardPage3PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// html += `
    +//
    شناسنامه صفحه سوم
    +//
    +//
    +//
    +//
    +//
    `; +// if (item.idCardPage4PicturePath) { +// html += `
    `; +// } else { +// html += `
    `; +// } +// html += `
    +//
    شناسنامه صفحه چهارم
    +//
    +//
    + + +//
    +//
    +// +//
    +//
    +//
    +//
    +//
    +//
    `; + +// pageIndexJs++; + +// }); + +// pageIndexJs = response.pageIndex; +// $('#personnelDocumentsAjax').append(html); +// } else { +// html += `
    +//
    +// +//
    اطلاعاتی وجود ندارد.
    +//
    +//
    `; +// $('#personnelDocumentsAjax').append(html); +// } + + +// }, +// failure: function (response) { +// console.log(response); +// } +// }); +// } +//} + +function loadWorkshopList() { + + let html2 = ''; + let n = 1; + + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: workshopDocumentAjaxURL, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + console.log(response); + + var { result } = response; + if (response.isSuccedded) { + result.forEach(function (item) { + + html2 = ` +
    + `; + + $('#workshopsDocumentsAjax').append(html2); + n++; + }); + + + + + } else { + html2 += `
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    `; + $('#workshopsDocumentsAjax').append(html2); + } + + }, + failure: function (response) { + console.log(response); + } + }); +} + +function showDetailsPersonnelModal() { + AjaxUrlContentModal(DetailsPersonnelModalURL); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocuments.css b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocuments.css new file mode 100644 index 00000000..544a23d4 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocuments.css @@ -0,0 +1,635 @@ +#navbar-animmenu { + width: 20%; + padding: 0 0; + position: relative; +} + + #navbar-animmenu ul { + background: #CAF5F5; + padding: 0; + margin: 0; + height: 700px; + } + + #navbar-animmenu ul li a i { + margin-left: 10px; + } + + #navbar-animmenu ul li span { + background-color: #dd2a2a; + width: 26px; + display: flex; + height: 26px; + align-items: center; + justify-content: center; + border-radius: 24px; + margin: 0 0 0 12px; + color: #fff; + font-size: 14px; + font-weight: 700; + } + + #navbar-animmenu li { + list-style-type: none; + z-index: 4; + position: relative; + cursor: pointer; + } + + #navbar-animmenu ul li a { + color: #484848; + text-decoration: none; + font-size: 15px; + line-height: 60px; + display: block; + padding: 0px 30px 0 20px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + position: relative; + } + + #navbar-animmenu > ul > li.active > a { + color: #000000; + background-color: transparent; + transition: all 0.7s; + } + +.countNumber { + margin: 0 0 0 12px; + font-size: 12px; + background-color: #dd2a2a; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 40px; + color: #fff; + font-weight: 600; + padding: 2px 0 0 0; +} + +/* Vertical selector styling */ +.verti-selector { + display: inline-block; + position: absolute; + width: 97%; + left: 0px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + background-color: #fff; + border-radius: 0 50px 50px 0; + /* border-top-right-radius: 15px; + border-bottom-right-radius: 15px;*/ + height: 45px; + z-index: 3; +} + + .verti-selector .top, + .verti-selector .bottom { + position: absolute; + width: 25px; + height: 25px; + background-color: #fff; + } + + .verti-selector .top { + bottom: -25px; + left: 0; + } + + .verti-selector .bottom { + top: -25px; + left: 0; + } + + .verti-selector .top:before, + .verti-selector .bottom:before { + content: ''; + position: absolute; + width: 50px; + height: 50px; + border-radius: 50%; + background-color: #CAF5F5; + } + + .verti-selector .top.last-role::before { + background-color: #f5f5f5; + } + + .verti-selector .top:before { + top: 0; + right: -25px; + } + + .verti-selector .bottom:before { + bottom: 0; + right: -25px; + } + +#accountList { + width: 80%; + background-color: #ffffff; + height: 700px; + overflow-y: scroll; + overflow-x: hidden; +} + +.createRoleBox { + width: 100%; + background-color: #ffffff; + z-index: 6; + display: block !important; + position: relative; + padding: 11px 6px; + border-bottom: 2px solid transparent; + border-image: linear-gradient(to left, #B1B1B1, #FFFFFF); + border-image-slice: 1; +} + +.sweet-alert button { + font-family: 'IRANYekanX'; +} + +.btn-create { + background: #84CC16; + border-radius: 7px; + padding: 4px 10px; + font-size: 13px; + color: #ffffff; + text-align: center; + color: #FFF; + text-align: center; + font-size: 11px; + font-style: normal; + font-weight: 400; +} + + .btn-create:hover { + background: #71b112; + } + +#hideCircle { + transition: border-radius 0.5s ease; + height: 80px; + background-color: #f5f5f5; + pointer-events: none; +} + +.isActiveTxt { + background-color: #ECFCCB; + border: 1px solid #B3EB52; + border-radius: 50px; + padding: 3px 9px; + color: #0B5959; + font-size: 11px; + width: 70px; + text-align: center; +} + +.btn-edit-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: rgba(52, 209, 209, 0.20); + box-shadow: 0; + transition: ease .2s; +} + + .btn-edit-role:hover { + color: #ffffff; + /* background-color: #009EE2; */ + background-color: rgba(52, 209, 209, 0.40); + } + +.btn-delete-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; +} + + .btn-delete-role:hover { + background-color: rgba(209, 50, 50, 0.25); + } + +.btn-info { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: #B4DBFD; + box-shadow: 0; + transition: ease .2s; +} + + .btn-info:hover { + background-color: #a2c8e9 + } + + .btn-info svg { + color: #3B82F6; + } + +.close-btn-search { + position: absolute; + top: 50%; + left: 4px; + transform: translateY(-50%); + color: #fff; + background-color: #f87171; + width: 26px; + height: 26px; + display: flex; + align-items: center; + justify-content: center; +} + +.Rtable--collapse .Rtable-row { + flex-wrap: nowrap; + padding: 1px; +} + + .Rtable--collapse .Rtable-row.SubAccountRowMobile { + flex-wrap: nowrap; + padding: 1px; + outline: 1px solid #dddddd; + } + +.roleTitle { + font-size: 12px; + font-weight: 500; +} + +.roleName { + font-size: 16px; + font-weight: 700; +} + + +/********************************** Sub Account Table **********************************/ +.rightHeaderMenu { + width: 20%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.leftHeaderMenu { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.subAccountHeaderList { +} + + +.roleSubaccountListMobile .width1 { + width: 10% !important; +} + +.roleSubaccountListMobile .width2 { + width: 10% !important; +} + +.roleSubaccountListMobile .width3 { + width: 10% !important; +} + +.roleSubaccountListMobile .width4 { + width: 20% !important; +} + +.roleSubaccountListMobile .width5 { + width: 20% !important; +} + +.roleSubaccountListMobile .width6 { + width: 20% !important; +} + +.roleSubaccountListMobile .width7 { + width: 10% !important; +} + +.bgSubRow { + outline: transparent !important; + background-color: #CEF4F4 !important; +} +/********************************** Sub Account Table **********************************/ + +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 24px; +} + + /* Hide default HTML checkbox */ + .switch input { + opacity: 0; + width: 0; + height: 0; + } + +/* The slider */ +.sliderEUP { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: 0.4s; + border-radius: 24px; +} + + /* Rounded slider */ + .sliderEUP:before { + position: absolute; + content: ""; + height: 20px; + width: 20px; + left: 2px; + bottom: 2px; + background-color: white; + transition: 0.4s; + border-radius: 50%; + } + +/* Checked state */ +input:checked + .sliderEUP { + background-color: #2FBFBF; +} + + /* Move the slider to the right when checked */ + input:checked + .sliderEUP:before { + transform: translateX(16px); + } + +/* Disable state */ +.disable + .sliderEUP { + background-color: #ccc; + cursor: not-allowed; +} + +.disable + .sliderEUP:before { + background-color: #999; +} + + + + + +.leftHeaderMenu .Rtable-cell.width1 { + width: 7% +} + +.leftHeaderMenu .Rtable-cell.width2 { + width: 13% +} + +.leftHeaderMenu .Rtable-cell.width3 { + width: 10% +} + +.leftHeaderMenu .Rtable-cell.width4 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width5 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width6 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width7 { + width: 10% +} + +.Rtable .workflow-list .width1 { + width: 7% +} + +.Rtable .workflow-list .width2 { + width: 13% +} + +.Rtable .workflow-list .width3 { + width: 10% +} + +.Rtable .workflow-list .width4 { + width: 20% +} + +.Rtable .workflow-list .width5 { + width: 20% +} + +.Rtable .workflow-list .width6 { + width: 20% +} + +.Rtable .workflow-list .width7 { + width: 10% +} + +.btn-workflow-absent { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-rollcall-edit { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + background-color: #ffffff; + background-color: rgba(52, 209, 209, 0.20); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-leave { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #d97706; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(217, 119, 6, 0.18); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-accept { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #65a30d; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(101, 163, 13, 0.15); + transition: ease .2s; + width: 55px; +} + +.operations-btns-main { + padding: 15px; + width: 97%; + margin: 0 auto 10px; + display: none; + border-radius: 0px 0px 8px 8px; + background: #F1F5F9; + box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.03) inset; +} + +.number-of-count { + background-color: #caf5f5; + margin: 0 10px 0 0; + border-radius: 5px; + display: inline-block; + padding: 0 5px; + color: #368686; + font-weight: 700; +} + +.toggle { + cursor: pointer; + font-size: 12px; +} + + .toggle svg { + stroke: #ffffff; + transition: transform 0.3s ease; + } + + .toggle.open svg { + transform: rotate(-90deg); + } + +@media (max-width: 1366px) { + #navbar-animmenu ul li a { + font-size: 13px; + font-weight: 700; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + + #accountList { + height: 440px; + } + + #navbar-animmenu ul { + height: 440px; + } +} + +@media (max-width: 767px) { + .Rtable--collapse .Rtable-row { + outline: 1.8px solid #ddd !important; + } + + .Rtable .workflow-list .width1 { + width: 5% !important; + } + + .Rtable .workflow-list .width2 { + width: 50% !important; + } + + .Rtable .workflow-list .width4 { + width: 20% !important; + } + + .Rtable--collapse .Rtable-row .Rtable-cell .Rtable-cell--content { + text-align: right; + } + + .btn-workflow-accept, + .btn-workflow-leave, + .btn-workflow-absent, + .btn-workflow-rollcall-edit { + width: 100%; + margin: 1px 0; + } + + .employee-name { + font-weight: 800; + } + + + + + + + + /* responsive Mobile */ + #navbar-animmenu { + width: 100%; + } + + #navbar-animmenu ul { + display: flex; + height: auto; + overflow: scroll; + } + + .verti-selector { + display: none + } + + #navbar-animmenu li.active { + background-color: #fff; + width: 100%; + } + + #accountList { + width: 100%; + height: auto; + } +} + +.preview-image { + width: 50px; + height: 35px; + border-radius: 8px; + object-fit: cover; +} + +.txtMonilePD { + display: none +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocumentsChecker.css b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocumentsChecker.css new file mode 100644 index 00000000..4fb15d79 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesDocumentsChecker.css @@ -0,0 +1,634 @@ +#navbar-animmenu { + width: 20%; + padding: 0 0; + position: relative; +} + + #navbar-animmenu ul { + background: #CAF5F5; + padding: 0; + margin: 0; + height: 700px; + } + + #navbar-animmenu ul li a i { + margin-left: 10px; + } + + #navbar-animmenu ul li span { + background-color: #dd2a2a; + width: 26px; + display: flex; + height: 26px; + align-items: center; + justify-content: center; + border-radius: 24px; + margin: 0 0 0 12px; + color: #fff; + font-size: 14px; + font-weight: 700; + } + + #navbar-animmenu li { + list-style-type: none; + z-index: 4; + position: relative; + cursor: pointer; + } + + #navbar-animmenu ul li a { + color: #484848; + text-decoration: none; + font-size: 15px; + line-height: 60px; + display: block; + padding: 0px 30px 0 20px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + position: relative; + } + + #navbar-animmenu > ul > li.active > a { + color: #000000; + background-color: transparent; + transition: all 0.7s; + } + +.countNumber { + margin: 0 0 0 12px; + font-size: 12px; + background-color: #dd2a2a; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 40px; + color: #fff; + font-weight: 600; + padding: 2px 0 0 0; +} + +/* Vertical selector styling */ +.verti-selector { + display: inline-block; + position: absolute; + width: 97%; + left: 0px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + background-color: #fff; + border-radius: 0 50px 50px 0; + /* border-top-right-radius: 15px; + border-bottom-right-radius: 15px;*/ + height: 45px; + z-index: 3; +} + + .verti-selector .top, + .verti-selector .bottom { + position: absolute; + width: 25px; + height: 25px; + background-color: #fff; + } + + .verti-selector .top { + bottom: -25px; + left: 0; + } + + .verti-selector .bottom { + top: -25px; + left: 0; + } + + .verti-selector .top:before, + .verti-selector .bottom:before { + content: ''; + position: absolute; + width: 50px; + height: 50px; + border-radius: 50%; + background-color: #CAF5F5; + } + + .verti-selector .top.last-role::before { + background-color: #f5f5f5; + } + + .verti-selector .top:before { + top: 0; + right: -25px; + } + + .verti-selector .bottom:before { + bottom: 0; + right: -25px; + } + +#accountList { + width: 80%; + background-color: #ffffff; + height: 700px; + overflow-y: scroll; + overflow-x: hidden; +} + +.createRoleBox { + width: 100%; + background-color: #ffffff; + z-index: 6; + display: block !important; + position: relative; + padding: 11px 6px; + border-bottom: 2px solid transparent; + border-image: linear-gradient(to left, #B1B1B1, #FFFFFF); + border-image-slice: 1; +} + +.sweet-alert button { + font-family: 'IRANYekanX'; +} + +.btn-create { + background: #84CC16; + border-radius: 7px; + padding: 4px 10px; + font-size: 13px; + color: #ffffff; + text-align: center; + color: #FFF; + text-align: center; + font-size: 11px; + font-style: normal; + font-weight: 400; +} + + .btn-create:hover { + background: #71b112; + } + +#hideCircle { + transition: border-radius 0.5s ease; + height: 80px; + background-color: #f5f5f5; + pointer-events: none; +} + +.isActiveTxt { + background-color: #ECFCCB; + border: 1px solid #B3EB52; + border-radius: 50px; + padding: 3px 9px; + color: #0B5959; + font-size: 11px; + width: 70px; + text-align: center; +} + +.btn-edit-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: rgba(52, 209, 209, 0.20); + box-shadow: 0; + transition: ease .2s; +} + + .btn-edit-role:hover { + color: #ffffff; + /* background-color: #009EE2; */ + background-color: rgba(52, 209, 209, 0.40); + } + +.btn-delete-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; +} + + .btn-delete-role:hover { + background-color: rgba(209, 50, 50, 0.25); + } + +.btn-info { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: #B4DBFD; + box-shadow: 0; + transition: ease .2s; +} + + .btn-info:hover { + background-color: #a2c8e9 + } + + .btn-info svg { + color: #3B82F6; + } + +.close-btn-search { + position: absolute; + top: 50%; + left: 4px; + transform: translateY(-50%); + color: #fff; + background-color: #f87171; + width: 26px; + height: 26px; + display: flex; + align-items: center; + justify-content: center; +} + +.Rtable--collapse .Rtable-row { + flex-wrap: nowrap; + padding: 1px; +} + + .Rtable--collapse .Rtable-row.SubAccountRowMobile { + flex-wrap: nowrap; + padding: 1px; + outline: 1px solid #dddddd; + } + +.roleTitle { + font-size: 12px; + font-weight: 500; +} + +.roleName { + font-size: 16px; + font-weight: 700; +} + + +/********************************** Sub Account Table **********************************/ +.rightHeaderMenu { + width: 20%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.leftHeaderMenu { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.subAccountHeaderList { +} + + +.roleSubaccountListMobile .width1 { + width: 10% !important; +} + +.roleSubaccountListMobile .width2 { + width: 10% !important; +} + +.roleSubaccountListMobile .width3 { + width: 10% !important; +} + +.roleSubaccountListMobile .width4 { + width: 20% !important; +} + +.roleSubaccountListMobile .width5 { + width: 20% !important; +} + +.roleSubaccountListMobile .width6 { + width: 20% !important; +} + +.roleSubaccountListMobile .width7 { + width: 10% !important; +} + +.bgSubRow { + outline: transparent !important; + background-color: #CEF4F4 !important; +} +/********************************** Sub Account Table **********************************/ + +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 24px; +} + + /* Hide default HTML checkbox */ + .switch input { + opacity: 0; + width: 0; + height: 0; + } + +/* The slider */ +.sliderEUP { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: 0.4s; + border-radius: 24px; +} + + /* Rounded slider */ + .sliderEUP:before { + position: absolute; + content: ""; + height: 20px; + width: 20px; + left: 2px; + bottom: 2px; + background-color: white; + transition: 0.4s; + border-radius: 50%; + } + +/* Checked state */ +input:checked + .sliderEUP { + background-color: #2FBFBF; +} + + /* Move the slider to the right when checked */ + input:checked + .sliderEUP:before { + transform: translateX(16px); + } + +/* Disable state */ +.disable + .sliderEUP { + background-color: #ccc; + cursor: not-allowed; +} + + .disable + .sliderEUP:before { + background-color: #999; + } + + + + + +.leftHeaderMenu .Rtable-cell.width1 { + width: 7% +} + +.leftHeaderMenu .Rtable-cell.width2 { + width: 13% +} + +.leftHeaderMenu .Rtable-cell.width3 { + width: 10% +} + +.leftHeaderMenu .Rtable-cell.width4 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width5 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width6 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width7 { + width: 10% +} + +.Rtable .workflow-list .width1 { + width: 7% +} + +.Rtable .workflow-list .width2 { + width: 13% +} + +.Rtable .workflow-list .width3 { + width: 10% +} + +.Rtable .workflow-list .width4 { + width: 20% +} + +.Rtable .workflow-list .width5 { + width: 20% +} + +.Rtable .workflow-list .width6 { + width: 20% +} + +.Rtable .workflow-list .width7 { + width: 10% +} + +.btn-workflow-absent { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-rollcall-edit { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + background-color: #ffffff; + background-color: rgba(52, 209, 209, 0.20); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-leave { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #d97706; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(217, 119, 6, 0.18); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-accept { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #65a30d; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(101, 163, 13, 0.15); + transition: ease .2s; + width: 55px; +} + +.operations-btns-main { + padding: 15px; + width: 97%; + margin: 0 auto 10px; + display: none; + border-radius: 0px 0px 8px 8px; + background: #F1F5F9; + box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.03) inset; +} + +.number-of-count { + background-color: #caf5f5; + margin: 0 10px 0 0; + border-radius: 5px; + display: inline-block; + padding: 0 5px; + color: #368686; + font-weight: 700; +} + +.toggle { + cursor: pointer; + font-size: 12px; +} + + .toggle svg { + stroke: #ffffff; + transition: transform 0.3s ease; + } + + .toggle.open svg { + transform: rotate(-90deg); + } + +@media (max-width: 1366px) { + #navbar-animmenu ul li a { + font-size: 13px; + font-weight: 700; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + + #accountList { + height: 440px; + } + + #navbar-animmenu ul { + height: 440px; + } +} + +@media (max-width: 767px) { + .Rtable--collapse .Rtable-row { + outline: 1.8px solid #ddd !important; + } + + .Rtable .workflow-list .width1 { + width: 5% !important; + } + + .Rtable .workflow-list .width2 { + width: 50% !important; + } + + .Rtable .workflow-list .width4 { + width: 20% !important; + } + + .Rtable--collapse .Rtable-row .Rtable-cell .Rtable-cell--content { + text-align: right; + } + + .btn-workflow-accept, + .btn-workflow-leave, + .btn-workflow-absent, + .btn-workflow-rollcall-edit { + width: 100%; + margin: 1px 0; + } + + .employee-name { + font-weight: 800; + } + + + + + + + + /* responsive Mobile */ + #navbar-animmenu { + width: 100%; + } + + #navbar-animmenu ul { + display: flex; + height: auto; + overflow: scroll; + } + + .verti-selector { + display: none + } + + #navbar-animmenu li.active { + background-color: #fff; + width: 100%; + } + + #accountList { + width: 100%; + height: auto; + } +} + +.preview-image { + width: 50px; + height: 35px; + border-radius: 8px; +} + +.txtMonilePD { + display: none +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesNew.css b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesNew.css new file mode 100644 index 00000000..4fb15d79 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/EmployeesNew.css @@ -0,0 +1,634 @@ +#navbar-animmenu { + width: 20%; + padding: 0 0; + position: relative; +} + + #navbar-animmenu ul { + background: #CAF5F5; + padding: 0; + margin: 0; + height: 700px; + } + + #navbar-animmenu ul li a i { + margin-left: 10px; + } + + #navbar-animmenu ul li span { + background-color: #dd2a2a; + width: 26px; + display: flex; + height: 26px; + align-items: center; + justify-content: center; + border-radius: 24px; + margin: 0 0 0 12px; + color: #fff; + font-size: 14px; + font-weight: 700; + } + + #navbar-animmenu li { + list-style-type: none; + z-index: 4; + position: relative; + cursor: pointer; + } + + #navbar-animmenu ul li a { + color: #484848; + text-decoration: none; + font-size: 15px; + line-height: 60px; + display: block; + padding: 0px 30px 0 20px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + position: relative; + } + + #navbar-animmenu > ul > li.active > a { + color: #000000; + background-color: transparent; + transition: all 0.7s; + } + +.countNumber { + margin: 0 0 0 12px; + font-size: 12px; + background-color: #dd2a2a; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 40px; + color: #fff; + font-weight: 600; + padding: 2px 0 0 0; +} + +/* Vertical selector styling */ +.verti-selector { + display: inline-block; + position: absolute; + width: 97%; + left: 0px; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); + background-color: #fff; + border-radius: 0 50px 50px 0; + /* border-top-right-radius: 15px; + border-bottom-right-radius: 15px;*/ + height: 45px; + z-index: 3; +} + + .verti-selector .top, + .verti-selector .bottom { + position: absolute; + width: 25px; + height: 25px; + background-color: #fff; + } + + .verti-selector .top { + bottom: -25px; + left: 0; + } + + .verti-selector .bottom { + top: -25px; + left: 0; + } + + .verti-selector .top:before, + .verti-selector .bottom:before { + content: ''; + position: absolute; + width: 50px; + height: 50px; + border-radius: 50%; + background-color: #CAF5F5; + } + + .verti-selector .top.last-role::before { + background-color: #f5f5f5; + } + + .verti-selector .top:before { + top: 0; + right: -25px; + } + + .verti-selector .bottom:before { + bottom: 0; + right: -25px; + } + +#accountList { + width: 80%; + background-color: #ffffff; + height: 700px; + overflow-y: scroll; + overflow-x: hidden; +} + +.createRoleBox { + width: 100%; + background-color: #ffffff; + z-index: 6; + display: block !important; + position: relative; + padding: 11px 6px; + border-bottom: 2px solid transparent; + border-image: linear-gradient(to left, #B1B1B1, #FFFFFF); + border-image-slice: 1; +} + +.sweet-alert button { + font-family: 'IRANYekanX'; +} + +.btn-create { + background: #84CC16; + border-radius: 7px; + padding: 4px 10px; + font-size: 13px; + color: #ffffff; + text-align: center; + color: #FFF; + text-align: center; + font-size: 11px; + font-style: normal; + font-weight: 400; +} + + .btn-create:hover { + background: #71b112; + } + +#hideCircle { + transition: border-radius 0.5s ease; + height: 80px; + background-color: #f5f5f5; + pointer-events: none; +} + +.isActiveTxt { + background-color: #ECFCCB; + border: 1px solid #B3EB52; + border-radius: 50px; + padding: 3px 9px; + color: #0B5959; + font-size: 11px; + width: 70px; + text-align: center; +} + +.btn-edit-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: rgba(52, 209, 209, 0.20); + box-shadow: 0; + transition: ease .2s; +} + + .btn-edit-role:hover { + color: #ffffff; + /* background-color: #009EE2; */ + background-color: rgba(52, 209, 209, 0.40); + } + +.btn-delete-role { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; +} + + .btn-delete-role:hover { + background-color: rgba(209, 50, 50, 0.25); + } + +.btn-info { + border: 1px solid transparent; + width: 30px; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + /* background-color: #ffffff; */ + background-color: #B4DBFD; + box-shadow: 0; + transition: ease .2s; +} + + .btn-info:hover { + background-color: #a2c8e9 + } + + .btn-info svg { + color: #3B82F6; + } + +.close-btn-search { + position: absolute; + top: 50%; + left: 4px; + transform: translateY(-50%); + color: #fff; + background-color: #f87171; + width: 26px; + height: 26px; + display: flex; + align-items: center; + justify-content: center; +} + +.Rtable--collapse .Rtable-row { + flex-wrap: nowrap; + padding: 1px; +} + + .Rtable--collapse .Rtable-row.SubAccountRowMobile { + flex-wrap: nowrap; + padding: 1px; + outline: 1px solid #dddddd; + } + +.roleTitle { + font-size: 12px; + font-weight: 500; +} + +.roleName { + font-size: 16px; + font-weight: 700; +} + + +/********************************** Sub Account Table **********************************/ +.rightHeaderMenu { + width: 20%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.leftHeaderMenu { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; +} + +.subAccountHeaderList { +} + + +.roleSubaccountListMobile .width1 { + width: 10% !important; +} + +.roleSubaccountListMobile .width2 { + width: 10% !important; +} + +.roleSubaccountListMobile .width3 { + width: 10% !important; +} + +.roleSubaccountListMobile .width4 { + width: 20% !important; +} + +.roleSubaccountListMobile .width5 { + width: 20% !important; +} + +.roleSubaccountListMobile .width6 { + width: 20% !important; +} + +.roleSubaccountListMobile .width7 { + width: 10% !important; +} + +.bgSubRow { + outline: transparent !important; + background-color: #CEF4F4 !important; +} +/********************************** Sub Account Table **********************************/ + +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 24px; +} + + /* Hide default HTML checkbox */ + .switch input { + opacity: 0; + width: 0; + height: 0; + } + +/* The slider */ +.sliderEUP { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: 0.4s; + border-radius: 24px; +} + + /* Rounded slider */ + .sliderEUP:before { + position: absolute; + content: ""; + height: 20px; + width: 20px; + left: 2px; + bottom: 2px; + background-color: white; + transition: 0.4s; + border-radius: 50%; + } + +/* Checked state */ +input:checked + .sliderEUP { + background-color: #2FBFBF; +} + + /* Move the slider to the right when checked */ + input:checked + .sliderEUP:before { + transform: translateX(16px); + } + +/* Disable state */ +.disable + .sliderEUP { + background-color: #ccc; + cursor: not-allowed; +} + + .disable + .sliderEUP:before { + background-color: #999; + } + + + + + +.leftHeaderMenu .Rtable-cell.width1 { + width: 7% +} + +.leftHeaderMenu .Rtable-cell.width2 { + width: 13% +} + +.leftHeaderMenu .Rtable-cell.width3 { + width: 10% +} + +.leftHeaderMenu .Rtable-cell.width4 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width5 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width6 { + width: 20% +} + +.leftHeaderMenu .Rtable-cell.width7 { + width: 10% +} + +.Rtable .workflow-list .width1 { + width: 7% +} + +.Rtable .workflow-list .width2 { + width: 13% +} + +.Rtable .workflow-list .width3 { + width: 10% +} + +.Rtable .workflow-list .width4 { + width: 20% +} + +.Rtable .workflow-list .width5 { + width: 20% +} + +.Rtable .workflow-list .width6 { + width: 20% +} + +.Rtable .workflow-list .width7 { + width: 10% +} + +.btn-workflow-absent { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #FF5151; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(209, 50, 50, 0.15); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-rollcall-edit { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #009EE2; + margin: auto 0 auto 1px; + background-color: #ffffff; + background-color: rgba(52, 209, 209, 0.20); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-leave { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #d97706; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(217, 119, 6, 0.18); + transition: ease .2s; + width: 55px; +} + +.btn-workflow-accept { + border: 1px solid transparent; + height: 30px; + border-radius: 5px; + padding: 3px 1px; + color: #65a30d; + margin: auto 1px auto 0; + background-color: #ffffff; + background: rgba(101, 163, 13, 0.15); + transition: ease .2s; + width: 55px; +} + +.operations-btns-main { + padding: 15px; + width: 97%; + margin: 0 auto 10px; + display: none; + border-radius: 0px 0px 8px 8px; + background: #F1F5F9; + box-shadow: 0px 4px 5px 0px rgba(0, 0, 0, 0.03) inset; +} + +.number-of-count { + background-color: #caf5f5; + margin: 0 10px 0 0; + border-radius: 5px; + display: inline-block; + padding: 0 5px; + color: #368686; + font-weight: 700; +} + +.toggle { + cursor: pointer; + font-size: 12px; +} + + .toggle svg { + stroke: #ffffff; + transition: transform 0.3s ease; + } + + .toggle.open svg { + transform: rotate(-90deg); + } + +@media (max-width: 1366px) { + #navbar-animmenu ul li a { + font-size: 13px; + font-weight: 700; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + + #accountList { + height: 440px; + } + + #navbar-animmenu ul { + height: 440px; + } +} + +@media (max-width: 767px) { + .Rtable--collapse .Rtable-row { + outline: 1.8px solid #ddd !important; + } + + .Rtable .workflow-list .width1 { + width: 5% !important; + } + + .Rtable .workflow-list .width2 { + width: 50% !important; + } + + .Rtable .workflow-list .width4 { + width: 20% !important; + } + + .Rtable--collapse .Rtable-row .Rtable-cell .Rtable-cell--content { + text-align: right; + } + + .btn-workflow-accept, + .btn-workflow-leave, + .btn-workflow-absent, + .btn-workflow-rollcall-edit { + width: 100%; + margin: 1px 0; + } + + .employee-name { + font-weight: 800; + } + + + + + + + + /* responsive Mobile */ + #navbar-animmenu { + width: 100%; + } + + #navbar-animmenu ul { + display: flex; + height: auto; + overflow: scroll; + } + + .verti-selector { + display: none + } + + #navbar-animmenu li.active { + background-color: #fff; + width: 100%; + } + + #accountList { + width: 100%; + height: auto; + } +} + +.preview-image { + width: 50px; + height: 35px; + border-radius: 8px; +} + +.txtMonilePD { + display: none +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/start-left-work.css b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/start-left-work.css new file mode 100644 index 00000000..038cdddd --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/css/start-left-work.css @@ -0,0 +1,1064 @@ +#MainModal { + backdrop-filter: blur(8px); +} + +.modal-dialog { + width: 60% !important; +} + +.modal .modal-dialog .modal-content { + background-color: #ffffff; +} + +.modal-content { + height: auto !important; +} + +.btn-cancel2 { + font-size: 14px; + font-weight: 500; + background-color: #454D5C; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + +.btn-cancel2:hover { + opacity: .7; +} + +.btnCreateNew { + font-size: 14px; + font-weight: 500; + background-color: #84CC16; + color: #FFFFFF; + border-radius: 8px; + padding: 10px 70px; +} + +.btnCreateNew:hover { + background-color: #5f9213; +} + +.box { +/* border: 1px solid #00000042; + padding: 20px 35px;*/ + position: relative; + border-radius: 1rem; + height: auto; + overflow: hidden; +} + +.close { + margin-top: 12px; + margin-left: -19px; + font-size: 26px; + position: absolute; + right: 25px; +} + +.buttonDeactived { + cursor: not-allowed; + pointer-events: none !important; + background-color: #727272 !important; +} + +.main-title { + position: absolute; + width: 376px; + font-size: 20px; + background-color: inherit; + left: 50%; + top: 7px; + margin-left: -190px; + text-align: center; + color: black; + border: 1px solid #00000030; + border-radius: 9px; + padding: 2px 0px; +} + +.error { + box-shadow: inset 0 0 2px red, 0 0 5px red; + border: none; +} + +.tab-content { + grid-column: 5 / 16; + grid-row: 1; + z-index: 2; +} + +.tabbed-navigation { + display: grid; + grid-template-columns: repeat(15, 1fr); + width: 100%; +} + +.workDate-table { + border: 1px solid #9b97976e; + width: 100%; + direction: rtl; + background: whitesmoke; + text-align: center; + border-radius: 0px; + border: none !important; + margin-bottom: 0 !important; +} + +.table-content { + overflow-y: scroll; + height: 210px; + margin-bottom: 10px; + scrollbar-width: thin; + scrollbar-color: #f2f2f2 transparent; +} + +th { + text-align: center; +} + +.table-content.hide-scrollbar::-webkit-scrollbar { + width: 0px; +} + +.table-content::-webkit-scrollbar, .select2-results__options::-webkit-scrollbar { + width: 10px; +} + +.table-content::-webkit-scrollbar-track, .select2-results__options::-webkit-scrollbar-track { + background-color: #f2f2f2; + border-radius: 10px; +} + +.table-content::-webkit-scrollbar-thumb, .select2-results__options::-webkit-scrollbar-thumb { + background-color: #ccc; + border-radius: 10px; +} + + .table-content::-webkit-scrollbar-thumb:hover, .select2-results__options::-webkit-scrollbar-thumb:hover { + background-color: #aaa; + } + +.select2-results__options::-webkit-scrollbar-track { + background-color: #e0e6ff; +} + +.select2-results__options::-webkit-scrollbar-thumb { + background-color: #3361a5; + border-radius: 10px; +} + + .select2-results__options::-webkit-scrollbar-thumb:hover { + background-color: #aaa; + } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; + direction: ltr; + text-align: end; +} + +.workDate-table thead > tr > th:first-child { + border-top-right-radius: 0px; + border-right: none; +} + +.workDate-table tr td:nth-child(2), +.workDate-table tr td:nth-child(4) { + color: #005600; +} + +.workDate-table tr td:nth-child(5) { + color: #cd0000; +} + +.workDate-table thead > tr > th:last-child { + border-top-left-radius: 0px; + border-left: none; +} + +.workDate-table tbody > tr > td:first-child { + border-bottom-right-radius: 0px; + border-right: none; +} + +.workDate-table tbody > tr > td:last-child { + border-bottom-left-radius: 0px; + border-left: none; +} + +.workDate-table tbody > tr > td:has(.edit-date) { + border-right-width: 0; + white-space: nowrap; + direction: ltr; +} + +.workDate-table tbody > tr > td { + font-size: 14px; + padding: 4px 6px; +} + +.workDate-table thead th { + color: white; +} + +.workDate-table > thead > tr > th { + padding: 10px 0px; + position: sticky; + top: 0px; + z-index: 20; + background: #4c4c4c; + font-size: 13px; + vertical-align: middle; +} + +.nav-tabs { + grid-column: 1 / 5; + grid-row: 1; + overflow-y: scroll; + overflow-x: clip; + height: auto; + width: 100%; + direction: ltr; +} + + .nav-tabs.hide-scrollbar::-webkit-scrollbar { + width: 0px; + } + + .nav-tabs::-webkit-scrollbar { + width: 8px; + } + + .nav-tabs::-webkit-scrollbar-track { + background-color: #f2f2f2; + border-radius: 10px; + } + + .nav-tabs::-webkit-scrollbar-thumb { + background: linear-gradient(90deg, rgb(184 212 255) 0%, rgba(183,211,255,1) 40%, rgb(150 194 219) 100%); + border-radius: 10px; + } + + .nav-tabs::-webkit-scrollbar-thumb:hover { + background-color: #aaa; + } + +.nav-link { + color: #e5e5e5; + border-top-right-radius: 30px; + border-bottom-right-radius: 30px; + background-color: #6096ba; + border: 1px solid #0000004a; + background-color: #6a8eae; + direction: rtl; + position: relative; + display: grid; + grid-template-columns: repeat(15, 1fr); + height: 65px; +} + + .nav-link:hover, + .nav-link:hover > .nav-title { + color: #2168a5; + background-color: #6096ba; + } + + .nav-link.active { + color: black; + background-color: #c4dcf3; + } + +.nav-title { + grid-column: 4/16; + grid-row: 1; + text-align: center; + border-bottom-right-radius: 30px; + border-top-right-radius: 30px; + direction: rtl; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + background-color: #6a8eae; + max-width: 100%; + padding: 20px; +} + +a:hover { + color: #e5e5e5; +} + +.nav-link.active > .nav-title { + color: black; + background-color: #c4dcf3; +} + +.del-com { + grid-column: 1 / 6; + grid-row: 1; + padding: 20px 20px 0px 0px; + border-bottom-right-radius: 30px; + border-top-right-radius: 30px; + height: 100%; + background: #004777; +} + + .del-com:hover { + background-color: #004777; + color: white; + } + +.pane-content { + padding: 13px; + direction: ltr; + border-top-left-radius: 13px; + border-bottom-left-radius: 13px; + border-bottom-right-radius: 13px; + border-right: none; + height: auto; + background-color: #c4dcf3; +} + +.input { + border: 1px solid #0000004a; + border-radius: 7px; + padding: 7px; + width: 100%; + text-align: center; +} + + .input:focus { + box-shadow: 0 2px 5px 0 rgb(136 137 141), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + } + +#save1 { + padding: 5px 30px; + border-radius: 8px; + background-color: #1b9d0c; + color: white; +} + +.emptyStart { + background-color: #eb3434; + animation: color-change 800ms linear infinite; +} + +@keyframes color-change { + 0% { + background-color: #eb3434; + } + + 50% { + background-color: #e5e5e5; + } + + 100% { + background-color: #eb3434; + } +} + +.trash-icon { + color: red; + font-size: 18px; + position: relative; + cursor: pointer; +} + +.edit-date { + position: relative; +} + +.disabled-edit { + pointer-events: none; +} + +.disabled { + pointer-events: none; + background-color: #d1e2f2 !important; +} + +.edit-icon { + color: #49aba7; + position: relative; + top: 0px; + cursor: pointer; + margin: 0 5px; +} + +.blinking { + animation: blinkLeftwork 2s 1; +} + +@keyframes blinkLeftwork { + 0% { + box-shadow: inset 0 0 0px 2px #e6f3dbe0; + background: white; + color: dimgray; + } + + 50% { + box-shadow: inset 0 0 0px 2px #ff4a4ae0; + background: #e37979; + color: #ffffff; + } + + 100% { + box-shadow: inset 0 0 0px 2px #e6f3dbe0; + background: white; + color: dimgray; + } +} + +.d-none { + opacity: 0; + pointer-events: none; +} + +.edit-icon i { + font-size: 16px; + color: #f9792bf7; +} + +.edit-date i { + font-size: 16px; +} + +.trash-icon:hover { + color: black; +} + +.d-flex { + display: flex; + align-items: center; +} + +.fdiv { + padding: 20px; + margin-bottom: 10px; + border-radius: 13px; + /*border: 1px solid #0000004a;*/ + background-color: #c4dcf3; +} + +.last-div { + background-color: #94bee129; + padding: 0px 20px; + margin-top: 10px; + border-radius: 13px; + border: 1px solid #0000004a; + width: 100%; + color: black; + background-color: #c4dcf3; +} + +.dates { + padding: 18px 65px; + background-color: #ffffff; + border-radius: 13px; + align-self: center; + border: 2px solid grey; + margin: 5px 10px; +} + +.date-sums { + background-color: #e1dfdf; + border-radius: 13px; + text-align: center; + border: 2px solid grey; + margin: 5px 10px; + padding: 18px 40px; +} + +.blue { + background-color: #94bee1; +} + +.btns { + display: inline-flex; + margin-top: 10px; + width: 100%; + direction: ltr; +} + +.btn.focus, .btn:focus, .btn:hover { + color: white; + text-decoration: none; +} + +.btn-modal { + padding: 10px 20px; + border-radius: 20px; + border: none; +} + +#input1 { + padding: 25px; + font-size: 16px; + color: #333; + cursor: pointer; + text-align: right; +} + + #input1 select option:not(:first-child) { + text-align: right; + } + + #input1 select option:not(:first-child):hover { + background-color: #cfeeff !important; + } + + +.box legend { + width: max-content; + padding: 0px 10px; + margin-bottom: 0px; + font-size: 16px; + border-bottom: 0; +} + +.errored { + animation: shake 300ms; + box-shadow: inset 0 0 2px #eb3434, 0 0 5px #eb3434 !important; + border: 1px solid #eb3434 !important; +} + +.last-titles { + padding: 25px; +} + +.first-label { + display: block; + color: black; +} + +.text-small { + font-size: 10px !important; +} + +.disactive { + color: #b9b3b3 !important; +} + +.position-code { + border: 1px solid #0000004a; + border-radius: 7px; + padding: 5px 0px; + width: 100%; + text-align: center; + border-top-right-radius: 0; +} + +.position-box .select2-selection__arrow { + top: 9px !important; +} + +.position-box .select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #d1e2f2; +} + +.position-box .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 43px !important; +} + +.position-box .select2-container .select2-selection--single { + height: 45px !important; + border: 1px solid #0000004a !important; + border-radius: 7px !important; +} + +.position-box .select2-container { + width: 176px !important; + text-align: right; +} + +.position-box .select2-container--default .select2-selection--single .select2-selection__rendered { + color: #767676; + line-height: 28px; +} + +.date-box { + margin-top: 10px; +} + +.checkbox-wrapper input[type="checkbox"] { + background-color: #6cf; + background-size: 100% 100%, 200% 100%; + background-position: 0 0, 15px 0; + border-radius: 25px; + box-shadow: inset 0 1px 4px hsla(0,0%,0%,.5), inset 0 0 10px hsla(0,0%,0%,.5), 0 0 0 1px hsla(0,0%,0%,.1), 0 -1px 2px 2px hsla(0,0%,0%,.25), 0 2px 2px 2px hsla(0,0%,100%,.75); + cursor: pointer; + height: 25px; + padding-right: 25px; + width: 50px; + -webkit-appearance: none; + -webkit-transition: .25s; +} + + .checkbox-wrapper input[type="checkbox"]:after { + background-color: #eee; + background-image: -webkit-linear-gradient(hsla(0,0%,100%,.1), hsla(0,0%,0%,.1)); + border-radius: 25px; + box-shadow: inset 0 1px 1px 1px hsla(0,0%,100%,1), inset 0 -1px 1px 1px hsla(0,0%,0%,.25), 0 1px 3px 1px hsla(0,0%,0%,.5), 0 0 2px hsla(0,0%,0%,.25); + content: ''; + display: block; + height: 25px; + width: 25px; + } + + .checkbox-wrapper input[type="checkbox"]:checked { + background-position: 0 0, 35px 0; + padding-left: 25px; + padding-right: 0; + } + +@keyframes shake { + 25% { + transform: translateX(4px); + } + + 50% { + transform: translateX(-4px); + } + + 75% { + transform: translateX(4px); + } +} + +#result-modal { + width: 100%; + backdrop-filter: brightness(0.5) blur(2px); +} + + #result-modal .modal-dialog { + width: 60% !important; + margin: 100px auto; + } + + #result-modal .modal-content { + height: auto !important; + background-color: white; + } + + #result-modal .modal-header { + border-bottom: 0; + padding-bottom: 30px; + } + +#resultdiv { + margin-top: 20px; +} + +#result-modal ul { + list-style: none; + padding: 0; +} + +#result-modal .modal-footer { + display: flex; + justify-content: flex-end; + margin-bottom: 10px; +} + +#closing:hover { + color: green; +} + +.select2-results__options::-webkit-scrollbar-track { + background-color: #e0e6ff; +} + +.select2-results__options::-webkit-scrollbar-thumb { + background-color: #3361a5; + border-radius: 10px; +} + + .select2-results__options::-webkit-scrollbar-thumb:hover { + background-color: #aaa; + } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; + direction: ltr; + text-align: end; +} + +.select-container { + position: relative; +} + +.dadmehr-select-search { + padding: 0px !important; +} + + .dadmehr-select-search .ul-search li:last-of-type { + float: right; + height: 100%; + overflow-y: clip; + width: 95% !important; + white-space: nowrap; + overflow: hidden; + display: inline-block; + text-overflow: ellipsis; + } + + .dadmehr-select-search .singleItem span { + padding: 0px; + } + + .dadmehr-select-search .ul-search { + right: 0.2rem; + } + +.top-content { + display: grid; + grid-template-columns: repeat(100, 1fr); + direction: rtl; + margin: 10px 0; +} + +.position-type { + align-self: center; + color: white; + width: max-content; + font-size: 11px; +} + +.position-check { + justify-content: space-evenly; + border: 1px solid #7b7575; + border-radius: 7px; + background: #6a8eae; + grid-column: 1/101; +} + +.first-col-content { + grid-column: 9 / 37; +} + +.second-col-content { + grid-column: 38 / 63; +} + +.top-content.first-row .second-col-content { + position: relative; +} + +.third-col-content { + grid-column: 64 / 101; + display: grid; + grid-template-columns: repeat(100, 1fr); +} + +.top-content.first-row label { + position: absolute; + top: -18px; + right: 0px; + background: #6a8eae; + color: #ffffff; + font-size: 13px; + padding: 2px 10px; + border-radius: 5px; +} + +.top-content.first-row .second-col-content label { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + padding: 0px 7px; +} + +.input4 { + grid-column: 1 / 73; +} + +#save, .save { + background-color: #26a11c; + color: white; + cursor: pointer; + border-radius: 10px; + padding: 0; + grid-column: 74/101; +} + +.date-input { + border: 1px solid #0000004a; + border-radius: 7px; + padding: 5px 0px; + text-align: center; + width: 100%; + direction: ltr; + font-size: 14px; +} + +.dates, +.date-sums { + padding: 10px 45px; + margin: 0px 10px; +} + +@media (min-width: 768px) { + .tab-content { + grid-column: 5 / 16; + grid-row: 1; + z-index: 2; + } + + .nav-tabs { + grid-column: 1 / 5; + grid-row: 1; + } +} + +@media (max-width: 1551px) { + .modal-dialog { + width: 70% !important; + } + + .modal-content { + padding-bottom: 80px !important; + } + + .main-title { + width: 300px; + font-size: 16px; + left: 55%; + } + + .box { + top: 45px; + padding: 20px 35px; + } + + .nav-tabs { + height: 285px; + } + + .first-label, + .nav-title, + .last-titles { + font-size: 13px; + } + + .fdiv { + padding: 10px 21px; + } + + .last-div { + padding: 0px 15px; + bottom: 50px; + height: auto; + } + + .btn-modal { + font-size: 12px; + } + + .last-titles { + padding: 15px 25px; + } + + .trash-icon { + transform: translate(0x, 3px); + } + + .workDate-table { + font-size: 12px; + } + + .workDate-table > thead > tr > th { + font-size: 12px; + padding: 8px 0px; + } + + .date-sums { + margin: 6px 10px; + } + + .fdiv .select2-container .select2-selection--single { + height: 36px; + } + + .fdiv .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 36px; + } + + .fdiv .select2-container--default .select2-selection--single .select2-selection__arrow { + top: 6px; + } + + #save1 { + margin-left: -6px; + padding: 7px 20px; + } + + .trash-icon { + font-size: 15px; + } + + .text-small { + font-size: 9px !important; + } + + .position-code { + font-size: 12px; + } + + .position-box .select2-container { + width: 145px !important; + } + + .position-box .select2-container .select2-selection--single { + height: 38px !important; + } + + .position-box .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 38px !important; + } + + .position-box .select2-selection__arrow { + top: 6px !important; + } + + .checkbox-wrapper input[type="checkbox"] { + height: 23px; + width: 49px; + } + + .checkbox-wrapper input[type="checkbox"]:after { + height: 22px; + width: 23px; + } + + .last-div { + height: auto; + } +} + +@media (max-width: 1440px) { + .main-title { + width: 300px; + font-size: 15px; + left: 55%; + } + + .box { + top: 42px; + padding: 10px 25px; + } + + .box legend { + width: max-content; + padding: 0px 10px; + margin-bottom: 0px; + font-size: 13px; + } + + .nav-tabs { + height: 241px; + } + + .first-label, + .nav-title, + .last-titles { + font-size: 11px; + } + + .fdiv { + padding: 5px 21px; + margin: 0px 10px 6px 0px; + } + + .fdiv .select2-container .select2-selection--single { + height: 35px; + } + + .select2-container .select2-selection--single { + height: 30px; + font-size: 12px; + } + + .last-div { + width: 100%; + padding: 0px 15px; + } + + .last-titles { + padding: 15px 25px; + } + + .workDate-table { + font-size: 11px; + } + + .workDate-table > tbody > tr > td { + padding: 4px 6px; + } + + .dates, + .date-sums { + padding: 7px 45px; + margin: 0px 10px; + } + + .date-sums { + margin: 6px 10px; + } + + #save1 { + padding: 5px 19px; + } + + .trash-icon { + font-size: 15px; + } + + .text-small { + font-size: 9px !important; + } + + .btn-modal { + padding: 7px 20px; + font-size: 11px; + } + + .btns { + bottom: 5px; + } + + .position-box .select2-container { + width: 151px !important; + } + + .position-box input[type=checkbox] { + margin: 2px 0 0; + } + + .position-box .select2-container .select2-selection--single { + height: 34px !important; + } + + .position-box .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 34px !important; + } + + .position-box .select2-selection__arrow { + top: 4px !important; + } +} +/*@media(min-width: 1600px) { + .modal-dialog { + margin: auto; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%) !important; + } +}*/ +@media (max-width: 1130px) { + .modal-dialog { + width: 90% !important; + } +} diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js new file mode 100644 index 00000000..9f8d099a --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocuments.js @@ -0,0 +1,493 @@ +var lengthMenu = 0; +var loadFunctionDocumentsAwaitingUpload = true; +var loadFunctionCut = true; +var loadFunctionLunchBreak = true; +var loadFunctionUndefined = true; +var loadFunctionOverlappingLeaves = true; + +loadMenuAnime(); +$(document).ready(function () { + //CountWorkFlowOfAbsentAndCut(); + loadWorkshopsWithDocumentsAwaitingUpload(); + + $("#clickDocumentsAwaitingUploadTab").click(function () { + //$('.cutWorkFlowLists, .lunchBreakWorkFlowLists, .undefinedWorkFlowLists, .overlappingLeavesLists').fadeOut(200, function () { + // $('.DocumentsAwaitingUploadWorkFlowLists').fadeIn(200); + //}); + if (loadFunctionDocumentsAwaitingUpload) { + loadWorkshopsWithDocumentsAwaitingUpload(); + } + }); +}); + +function loadMenuAnime() { + var tabsNewAnim = $('#navbar-animmenu'); + var selectorNewAnim = $('#navbar-animmenu').find('li').length; + var activeItemNewAnim = tabsNewAnim.find('.active'); + var activeHeightNewAnimHeight = activeItemNewAnim.innerHeight(); + var itemPosNewAnimTop = activeItemNewAnim.position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.active').each(function () { + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + if (lengthMenu === 1) { + if ($('.main-navbar li').hasClass('lastRole')) { + $('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + $('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + } + + $("#navbar-animmenu").on("click", "li", function (e) { + if ($(this).hasClass('lastRole')) { + //$('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + //$('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + + $('#navbar-animmenu ul li').removeClass("active"); + $(this).addClass('active'); + + var activeHeightNewAnimHeight = $(this).innerHeight(); + var itemPosNewAnimTop = $(this).position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.form-section').hide(); + $('.accountListHead').text($(this).find('a').text()); + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + //$("#navbar-animmenu").on("click", "li", function (e) { + // var targetForm = $(this).data('target'); + // $('#navbar-animmenu ul li').removeClass("active"); + // $(this).addClass('active'); + + // var activeHeightNewAnimHeight = $(this).innerHeight(); + // var itemPosNewAnimTop = $(this).position(); + + // $(".verti-selector").stop(true, true).animate({ + // "top": itemPosNewAnimTop.top + "px", + // "height": activeHeightNewAnimHeight + "px" + // }, 300); // انیمیشن با مدت زمان 300 میلی‌ثانیه + + // $('.form-section').fadeOut(200); + // $('#' + targetForm).fadeIn(300); // انیمیشن تغییر صفحه + //}); +} + +$(document).on('click', ".openActionMain", function () { + $('.toggle').not($(this).find('.toggle')).removeClass('open'); + + $(this).next().find(".operations-btns-main").slideToggle(500); + $(".operations-btns-main").not($(this).next().find(".operations-btns-main")).slideUp(500); + + $(this).find('.toggle').toggleClass('open'); +}); + +$(document).on('click', ".openAction", function () { + if (window.matchMedia('(max-width: 768px)').matches) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + +async function loadWorkshopsWithDocumentsAwaitingUpload() { + $('#CountDocumentsAwaitingUploadLoading').show(); + var mainIndexNum = 1; + + var html = ``; + $.ajax({ + //async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadWorkshopsWithDocumentsAwaitingUploadUrl, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + $('#loadingSkeletonDocumentsAwaitingUpload').hide(); + + if (response.success) { + if (data.length > 0) { + data.forEach(function (item) { + html += ` +
    +
    +
    +
    + + ${mainIndexNum++} + +
    +
    +
    +
    +
    +
    + ${item.workshopName} +
    +
    +
    +
    + ${item.employerName} +
    +
    +
    +
    + ${item.uploadItemsCount} +
    +
    +
    +
    + + + + + +
    +
    `; + + html += `
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $('#loadDocumentsAwaitingUploadWorkFlow').html(html); + loadFunctionDocumentsAwaitingUpload = false; + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function loadByWorkshopIdWithItemsForAdminWorkFlow(id) { + var html = ``; + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadByWorkshopIdWithItemsForAdminWorkFlowUrl, + data: { 'workshopId': id }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + + if (response.success) { + if (data.length > 0) { + + data.forEach(function (item, i) { + html += `
    +
    +
    +
    + ردیف +
    +
    + + ${i + 1} + +
    +
    + +
    +
    نام پرسنل
    +
    + ${item.employeeFullName} +

    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.employeePicture.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    عکس پرسنلی
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardFront.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت ملی رو
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardRear.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    کارت ملی پشت
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.militaryServiceCard.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت پایان خدمت
    +
    +
    + +
    +
    +
    + +
    +
    +
    پیغام:
    +
    + +
    +
    +
    `; + if (item.idCardPage1.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه اول
    +
    +
    +
    +
    +
    `; + if (item.idCardPage2.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه دوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage3.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه سوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage4.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه چهارم
    +
    +
    + +
    +
    +
    + + +
    +
    + + + +
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $(`.workshopID_${id}`).html(html); + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function showModalEmployeeDocuments(employeeId, workshopId) { + var goTo = `#showmodal=/AdminNew/Company/WorkFlow/EmployeesDocuments?handler=CreateUploadDocument&workshopId=${workshopId}&employeeId=${employeeId}`; + window.location.href = goTo; +} + +async function CountWorkFlow() { + $.ajax({ + dataType: 'json', + type: 'Get', + url: loadCountWorkFlowOfAbsentAndCut, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + if (response.success) { + $('.spinner-grow').hide(); + + if (response.dataAbsent === 0) { + $('#CountAbsent').hide(); + $('#CountAbsentMobile').hide(); + } else { + $('#CountAbsent').show(); + $('#CountAbsentMobile').show(); + $('#CountAbsent').text(response.dataAbsent); + $('#CountAbsentMobile').text(response.dataAbsent); + } + + if (response.dataCut === 0) { + $('#CountCut').hide(); + $('#CountCutMobile').hide(); + } else { + $('#CountCut').show(); + $('#CountCutMobile').show(); + $('#CountCut').text(response.dataCut); + $('#CountCutMobile').text(response.dataCut); + } + + if (response.dataLunchBreak === 0) { + $('#CountLunchBreak').hide(); + $('#CountLunchBreakMobile').hide(); + } else { + $('#CountLunchBreak').show(); + $('#CountLunchBreakMobile').show(); + $('#CountLunchBreak').text(response.dataLunchBreak); + $('#CountLunchBreakMobile').text(response.dataLunchBreak); + } + + if (response.dataUndefined === 0) { + $('#CountUndefined').hide(); + $('#CountUndefinedMobile').hide(); + } else { + $('#CountUndefined').show(); + $('#CountUndefinedMobile').show(); + $('#CountUndefined').text(response.dataUndefined); + $('#CountUndefinedMobile').text(response.dataUndefined); + } + + if (response.dataOverlappingLeave === 0) { + $('#CountOverlappingLeave').hide(); + $('#CountOverlappingLeaveMobile').hide(); + } else { + $('#CountOverlappingLeave').show(); + $('#CountOverlappingLeaveMobile').show(); + $('#CountOverlappingLeave').text(response.dataOverlappingLeave); + $('#CountOverlappingLeaveMobile').text(response.dataOverlappingLeave); + } + + } else { + $('.alert-msg').show(); + $('.alert-msg p').text(response.message); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + } + }, + error: function (err) { + console.log(err); + } + }); +} + +function updateIndexesWorkFlow(dateDiv) { + let index = 1; + + $(`#${dateDiv} .employee-row:visible .table-number`).each(function () { + $(this).text(index++); + }); +} + +function updateMainWorkFlow() { + let index = 1; + + $(`#loadDocumentsAwaitingUploadWorkFlow .Rtable-cell.width1 .table-number`).each(function () { + $(this).text(index++); + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocumentsChecker.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocumentsChecker.js new file mode 100644 index 00000000..7cbd823d --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesDocumentsChecker.js @@ -0,0 +1,504 @@ +var lengthMenu = 0; +var loadFunctionStartDate = true; +var loadFunctionNewEmployee = true; + +loadMenuAnime(); +$(document).ready(function () { + //CountWorkFlowOfAbsentAndCut(); + loadWorkshopListForDocumentsCheck(); + + $("#clickDocumentsAwaitingReviewForCheckerTab").click(function () { + //$('.cutWorkFlowLists, .lunchBreakWorkFlowLists, .undefinedWorkFlowLists, .overlappingLeavesLists').fadeOut(200, function () { + // $('.StartDateLists').fadeIn(200); + //}); + if (loadFunctionStartDate) { + loadWorkshopListForDocumentsCheck(); + } + }); +}); + +function loadMenuAnime() { + var tabsNewAnim = $('#navbar-animmenu'); + var selectorNewAnim = $('#navbar-animmenu').find('li').length; + var activeItemNewAnim = tabsNewAnim.find('.active'); + var activeHeightNewAnimHeight = activeItemNewAnim.innerHeight(); + var itemPosNewAnimTop = activeItemNewAnim.position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.active').each(function () { + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + if (lengthMenu === 1) { + if ($('.main-navbar li').hasClass('lastRole')) { + $('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + $('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + } + + $("#navbar-animmenu").on("click", "li", function (e) { + if ($(this).hasClass('lastRole')) { + //$('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + //$('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + + $('#navbar-animmenu ul li').removeClass("active"); + $(this).addClass('active'); + + var activeHeightNewAnimHeight = $(this).innerHeight(); + var itemPosNewAnimTop = $(this).position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.form-section').hide(); + $('.accountListHead').text($(this).find('a').text()); + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + //$("#navbar-animmenu").on("click", "li", function (e) { + // var targetForm = $(this).data('target'); + // $('#navbar-animmenu ul li').removeClass("active"); + // $(this).addClass('active'); + + // var activeHeightNewAnimHeight = $(this).innerHeight(); + // var itemPosNewAnimTop = $(this).position(); + + // $(".verti-selector").stop(true, true).animate({ + // "top": itemPosNewAnimTop.top + "px", + // "height": activeHeightNewAnimHeight + "px" + // }, 300); // انیمیشن با مدت زمان 300 میلی‌ثانیه + + // $('.form-section').fadeOut(200); + // $('#' + targetForm).fadeIn(300); // انیمیشن تغییر صفحه + //}); +} + +$(document).on('click', ".openActionMain", function () { + $('.toggle').not($(this).find('.toggle')).removeClass('open'); + + $(this).next().find(".operations-btns-main").slideToggle(500); + $(".operations-btns-main").not($(this).next().find(".operations-btns-main")).slideUp(500); + + $(this).find('.toggle').toggleClass('open'); +}); + +$(document).on('click', ".openAction", function () { + if (window.matchMedia('(max-width: 768px)').matches) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + +async function loadWorkshopListForDocumentsCheck() { + $('#loadingSkeletonDocumentsAwaitingReviewForCheckerWork').show(); + var mainIndexNum = 1; + + var html = ``; + $.ajax({ + //async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadWorkshopListForDocumentsCheckUrl, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + $('#loadingSkeletonDocumentsAwaitingReviewForCheckerWork').hide(); + + console.log(data); + + if (response.success) { + if (data.length > 0) { + data.forEach(function (item) { + html += ` +
    +
    +
    +
    + + ${mainIndexNum++} + +
    +
    +
    +
    +
    +
    + ${item.workshopFullName} +
    +
    +
    +
    + ${item.employerName} +
    +
    +
    +
    + ${item.submittedItemsCount} +
    +
    +
    +
    + + + + + +
    +
    `; + + html += `
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $('#loadDocumentsAwaitingReviewForCheckerWorkFlow').html(html); + loadFunctionStartDate = false; + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function loadEmployeeListByWorkshopIdForDocumentsCheck(id) { + var html = ``; + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadEmployeeListByWorkshopIdForDocumentsCheckUrl, + data: { 'workshopId': id }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + + console.log(response); + + if (response.success) { + if (data.length > 0) { + + data.forEach(function (item, i) { + html += `
    +
    +
    +
    + ردیف +
    +
    + + ${i + 1} + +
    +
    + +
    +
    نام پرسنل
    +
    + ${item.employeeFullName} +

    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.employeePicture.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    عکس پرسنلی
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardFront.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت ملی رو
    +
    +
    + +
    +
    +
    `; + if (item.nationalCardRear.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    کارت ملی پشت
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    `; + if (item.militaryServiceCard.picturePath) { + html += ``; + } else { + html += ``; + } + html += `
    +
    کارت پایان خدمت
    +
    +
    + +
    +
    +
    + +
    +
    +
    پیغام:
    +
    + +
    +
    +
    `; + if (item.idCardPage1.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه اول
    +
    +
    +
    +
    +
    `; + if (item.idCardPage2.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه دوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage3.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه سوم
    +
    +
    +
    +
    +
    `; + if (item.idCardPage4.picturePath) { + html += `
    `; + } else { + html += `
    `; + } + html += `
    +
    شناسنامه صفحه چهارم
    +
    +
    + +
    +
    +
    + + +
    +
    + + + +
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $(`.workshopID_${id}`).html(html); + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function showModalEmployeeDocuments(employeeId, workshopId) { + var goTo = `#showmodal=/AdminNew/Company/WorkFlow/EmployeesDocuments?handler=CreateUploadDocument&workshopId=${workshopId}&employeeId=${employeeId}`; + window.location.href = goTo; +} + +async function CountWorkFlow() { + $.ajax({ + dataType: 'json', + type: 'Get', + url: loadCountWorkFlowOfAbsentAndCut, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + if (response.success) { + $('.spinner-grow').hide(); + + if (response.dataAbsent === 0) { + $('#CountAbsent').hide(); + $('#CountAbsentMobile').hide(); + } else { + $('#CountAbsent').show(); + $('#CountAbsentMobile').show(); + $('#CountAbsent').text(response.dataAbsent); + $('#CountAbsentMobile').text(response.dataAbsent); + } + + if (response.dataCut === 0) { + $('#CountCut').hide(); + $('#CountCutMobile').hide(); + } else { + $('#CountCut').show(); + $('#CountCutMobile').show(); + $('#CountCut').text(response.dataCut); + $('#CountCutMobile').text(response.dataCut); + } + + if (response.dataLunchBreak === 0) { + $('#CountLunchBreak').hide(); + $('#CountLunchBreakMobile').hide(); + } else { + $('#CountLunchBreak').show(); + $('#CountLunchBreakMobile').show(); + $('#CountLunchBreak').text(response.dataLunchBreak); + $('#CountLunchBreakMobile').text(response.dataLunchBreak); + } + + if (response.dataUndefined === 0) { + $('#CountUndefined').hide(); + $('#CountUndefinedMobile').hide(); + } else { + $('#CountUndefined').show(); + $('#CountUndefinedMobile').show(); + $('#CountUndefined').text(response.dataUndefined); + $('#CountUndefinedMobile').text(response.dataUndefined); + } + + if (response.dataOverlappingLeave === 0) { + $('#CountOverlappingLeave').hide(); + $('#CountOverlappingLeaveMobile').hide(); + } else { + $('#CountOverlappingLeave').show(); + $('#CountOverlappingLeaveMobile').show(); + $('#CountOverlappingLeave').text(response.dataOverlappingLeave); + $('#CountOverlappingLeaveMobile').text(response.dataOverlappingLeave); + } + + } else { + $('.alert-msg').show(); + $('.alert-msg p').text(response.message); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + } + }, + error: function (err) { + console.log(err); + } + }); +} + +function updateIndexesWorkFlow(dateDiv) { + let index = 1; + + $(`#${dateDiv} .employee-row:visible .table-number`).each(function () { + $(this).text(index++); + }); +} + +function updateMainWorkFlow(dateDiv) { + let indexMain = 1; + + $(`#${dateDiv} .number-of-count`).each(function () { + var text = Number($(this).text()); + $(this).text(text - 1); + + if (text - 1 === 0) { + $(`#${dateDiv}`).next().remove(); + $(`#${dateDiv}`).remove(); + + $(`.Rtable-cell.width1 .Rtable-cell--content span`).each(function () { + $(this).text(indexMain++); + }); + } + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesNew.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesNew.js new file mode 100644 index 00000000..34217679 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/EmployeesNew.js @@ -0,0 +1,407 @@ +var lengthMenu = 0; +var loadFunctionStartDate = true; +var loadFunctionNewEmployee = true; + +loadMenuAnime(); +$(document).ready(function () { + //CountWorkFlowOfAbsentAndCut(); + loadWorkshopsForEmployeeStartWork(); + + $("#clickStartDateTab").click(function () { + //$('.cutWorkFlowLists, .lunchBreakWorkFlowLists, .undefinedWorkFlowLists, .overlappingLeavesLists').fadeOut(200, function () { + // $('.StartDateLists').fadeIn(200); + //}); + if (loadFunctionStartDate) { + loadWorkshopsForEmployeeStartWork(); + } + }); +}); + +function loadMenuAnime() { + var tabsNewAnim = $('#navbar-animmenu'); + var selectorNewAnim = $('#navbar-animmenu').find('li').length; + var activeItemNewAnim = tabsNewAnim.find('.active'); + var activeHeightNewAnimHeight = activeItemNewAnim.innerHeight(); + var itemPosNewAnimTop = activeItemNewAnim.position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.active').each(function () { + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + if (lengthMenu === 1) { + if ($('.main-navbar li').hasClass('lastRole')) { + $('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + $('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + } + + $("#navbar-animmenu").on("click", "li", function (e) { + if ($(this).hasClass('lastRole')) { + //$('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + //$('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + + $('#navbar-animmenu ul li').removeClass("active"); + $(this).addClass('active'); + + var activeHeightNewAnimHeight = $(this).innerHeight(); + var itemPosNewAnimTop = $(this).position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.form-section').hide(); + $('.accountListHead').text($(this).find('a').text()); + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + //$("#navbar-animmenu").on("click", "li", function (e) { + // var targetForm = $(this).data('target'); + // $('#navbar-animmenu ul li').removeClass("active"); + // $(this).addClass('active'); + + // var activeHeightNewAnimHeight = $(this).innerHeight(); + // var itemPosNewAnimTop = $(this).position(); + + // $(".verti-selector").stop(true, true).animate({ + // "top": itemPosNewAnimTop.top + "px", + // "height": activeHeightNewAnimHeight + "px" + // }, 300); // انیمیشن با مدت زمان 300 میلی‌ثانیه + + // $('.form-section').fadeOut(200); + // $('#' + targetForm).fadeIn(300); // انیمیشن تغییر صفحه + //}); +} + +$(document).on('click', ".openActionMain", function () { + $('.toggle').not($(this).find('.toggle')).removeClass('open'); + + $(this).next().find(".operations-btns-main").slideToggle(500); + $(".operations-btns-main").not($(this).next().find(".operations-btns-main")).slideUp(500); + + $(this).find('.toggle').toggleClass('open'); +}); + +$(document).on('click', ".openAction", function () { + if (window.matchMedia('(max-width: 768px)').matches) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + +async function loadWorkshopsForEmployeeStartWork() { + $('#loadingSkeletonStartDate').show(); + var mainIndexNum = 1; + + var html = ``; + $.ajax({ + //async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadWorkshopsForEmployeeStartWorkUrl, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + $('#loadingSkeletonStartDate').hide(); + + if (response.success) { + if (data.result.length > 0) { + data.result.forEach(function (item) { + html += ` +
    +
    +
    +
    + + ${mainIndexNum++} + +
    +
    +
    +
    +
    +
    + ${item.workshopName} +
    +
    +
    +
    + ${item.employerName} +
    +
    +
    +
    + ${item.addedEmployeesCount} +
    +
    +
    +
    + + + + + +
    +
    `; + + html += `
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $('#loadStartDateWorkFlow').html(html); + loadFunctionStartDate = false; + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function loadClientEmployeesStartWork(id) { + var html = ``; + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadClientEmployeesStartWorkUrl, + data: { 'workshopId': id }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + + if (response.success) { + if (data.result.length > 0) { + + data.result.forEach(function (item, i) { + html += `
    +
    +
    +
    + ردیف +
    +
    + + ${i + 1} + +
    +
    + +
    +
    نام پرسنل
    +
    + ${item.employeeName} +

    +
    +
    + +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    پیغام:
    +
    + + + +
    +
    +
    + + +
    +
    + + + +
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $(`.workshopID_${id}`).html(html); + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function showModalLeftWork(employeeId, employeeName) { + var goTo = `#showmodal=/AdminNew/Company/WorkFlow/EmployeesNew?handler=LeftWork&employeeId=${employeeId}&employeeName=${employeeName}`; + window.location.href = goTo; +} + +async function CountWorkFlow() { + $.ajax({ + dataType: 'json', + type: 'Get', + url: loadCountWorkFlowOfAbsentAndCut, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + if (response.success) { + $('.spinner-grow').hide(); + + if (response.dataAbsent === 0) { + $('#CountAbsent').hide(); + $('#CountAbsentMobile').hide(); + } else { + $('#CountAbsent').show(); + $('#CountAbsentMobile').show(); + $('#CountAbsent').text(response.dataAbsent); + $('#CountAbsentMobile').text(response.dataAbsent); + } + + if (response.dataCut === 0) { + $('#CountCut').hide(); + $('#CountCutMobile').hide(); + } else { + $('#CountCut').show(); + $('#CountCutMobile').show(); + $('#CountCut').text(response.dataCut); + $('#CountCutMobile').text(response.dataCut); + } + + if (response.dataLunchBreak === 0) { + $('#CountLunchBreak').hide(); + $('#CountLunchBreakMobile').hide(); + } else { + $('#CountLunchBreak').show(); + $('#CountLunchBreakMobile').show(); + $('#CountLunchBreak').text(response.dataLunchBreak); + $('#CountLunchBreakMobile').text(response.dataLunchBreak); + } + + if (response.dataUndefined === 0) { + $('#CountUndefined').hide(); + $('#CountUndefinedMobile').hide(); + } else { + $('#CountUndefined').show(); + $('#CountUndefinedMobile').show(); + $('#CountUndefined').text(response.dataUndefined); + $('#CountUndefinedMobile').text(response.dataUndefined); + } + + if (response.dataOverlappingLeave === 0) { + $('#CountOverlappingLeave').hide(); + $('#CountOverlappingLeaveMobile').hide(); + } else { + $('#CountOverlappingLeave').show(); + $('#CountOverlappingLeaveMobile').show(); + $('#CountOverlappingLeave').text(response.dataOverlappingLeave); + $('#CountOverlappingLeaveMobile').text(response.dataOverlappingLeave); + } + + } else { + $('.alert-msg').show(); + $('.alert-msg p').text(response.message); + setTimeout(function () { + $('.alert-msg').hide(); + $('.alert-msg p').text(''); + }, 3500); + } + }, + error: function (err) { + console.log(err); + } + }); +} + +function updateIndexesWorkFlow(dateDiv) { + let index = 1; + + $(`#${dateDiv} .employee-row:visible .table-number`).each(function () { + $(this).text(index++); + }); +} + +function updateMainWorkFlow(dateDiv) { + let indexMain = 1; + + $(`#${dateDiv} .number-of-count`).each(function () { + var text = Number($(this).text()); + $(this).text(text - 1); + + if (text - 1 === 0) { + $(`#${dateDiv}`).next().remove(); + $(`#${dateDiv}`).remove(); + + $(`.Rtable-cell.width1 .Rtable-cell--content span`).each(function () { + $(this).text(indexMain++); + }); + } + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js new file mode 100644 index 00000000..43b21745 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/ModalUploadDocument.js @@ -0,0 +1,529 @@ +var employeePicture; +var nationalCardFront; +var nationalCardRear; +var militaryServiceCard; +var idCardPage1; +var idCardPage2; +var idCardPage3; +var idCardPage4; +var uploadFileCount = UploadedCount; + +var pendingMessage = `
    بررسی
    `; +var pendingIcon = ` + + + + + `; +var confirmMessage = `
    تایید
    `; +var confirmIcon = ` + + + `; +var rejectMessage = `
    رد شده
    `; +var rejectIcon = ` + + + + `; + + +$(document).ready(function () { + var employeeId = $("#employeeIdForList").val(); + + //$('.btnDeletingPD').each(function () { + // if ($(this).hasClass('Unsubmitted')) { // Remove the extra class selector '.btnDeletingPD' + // $(this).closest('.pdBox').addClass('justUploaded'); // Add 'justUploaded' to the closest parent .pdBox + // } + //}); + + + $(".btnDeletingPD ").each(function () { + if ($(this).hasClass("SubmittedByAdmin") || $(this).hasClass("Rejected") || $(this).hasClass("Confirmed")) { + $(this).addClass("disable"); + } else { + return; + } + }); + $(document).off('click', '.btnUploadingPD').on('click', '.btnUploadingPD', function (event) { + event.preventDefault(); + const index = $(this).data('index'); + $('input[type="file"][data-index="' + index + '"]').click(); + }); + + $('.pdBox').each(function () { + if ($(".isTrue").hasClass("isTrue") && $(".Unsubmitted").hasClass("Unsubmitted") || $(".SubmittedByClient").hasClass("SubmittedByClient")) { + $(".btnCreateNew").prop("disabled", false); + $(".btnCreateNew ").removeClass("disable"); + } else { + $(".btnCreateNew ").addClass("disable"); + } + }); + + $('.pdBox').each(function () { + // Check if there's a button with the 'submitted' class inside the pdBox + if ($(this).find('button.SubmittedByAdmin').length > 0) { + $(this).addClass('pending'); + $(this).find(".pdImageBox .sign").addClass("pendingSign").html(pendingIcon); + $(this).find(".btnUploadingPD").addClass("disable"); + $(this).find(".resultMessage").html(pendingMessage); + } + if ($(this).find('button.Confirmed').length > 0) { + $(this).addClass('complete'); + $(this).find(".pdImageBox .sign").addClass("completeSign").html(confirmIcon); + $(this).find(".resultMessage").html(confirmMessage); + } + if ($(this).find('button.Rejected').length > 0) { + $(this).addClass('discomplete'); + $(this).find(".pdImageBox .sign").addClass("discompleteSign").html(rejectIcon); + $(this).find(".resultMessage").html(rejectMessage); + } + }); + + $(document).off('change', '.file-input').on('change', '.file-input', function (e) { + e.preventDefault(); + + const fileInputFile = this.files[0]; + const indexFileValue = $(this).data('index'); + const validExtensions = ['jpg', 'jpeg', 'png']; + const validPdfExtensions = ['pdf']; + + const label = $(`#label_${indexFileValue}`).val(); + + if (fileInputFile) { + const fileName = fileInputFile.name.toLowerCase(); + const extension = fileName.split('.').pop(); + + if (validExtensions.includes(extension)) { + if (fileInputFile.size > 5000000) { + showAlertMessage('.alert-msg', 'لطفا فایل حجم کمتر از 5 مگابایت را آپلود کنید.', 3500); + $(this).val(''); + return; + } + uploadFile(fileInputFile, indexFileValue, label); + } else if (validPdfExtensions.includes(extension)) { + + var fileReader = new FileReader(); + + fileReader.onload = function () { + var typedarray = new Uint8Array(this.result); + pdfjsLib.getDocument(typedarray).promise.then(function (pdf) { + totalPageCount = pdf.numPages; + + if (totalPageCount > 1) { + showAlertMessage('.alert-msg', 'آپلود مجاز نیست! تعداد صفحات نباید بیشتر از ۱ باشد.', 3500); + return; + } + + pdf.getPage(1).then(function (page) { // فقط صفحه اول پردازش می‌شود + var scale = 2.0; + var viewport = page.getViewport({ scale: scale }); + + var canvas = document.createElement("canvas"); + canvas.className = "page"; + canvas.title = "Page 1"; + canvas.height = viewport.height; + canvas.width = viewport.width; + + var context = canvas.getContext("2d"); + + page.render({ + canvasContext: context, + viewport: viewport + }) + .promise.then(function () { + uploadCanvasAsFile(canvas, `${label}_${indexFileValue}.jpg`, indexFileValue, label); + }) + .catch(function (error) { + showAlertMessage('.alert-msg', 'مشکلی در پردازش PDF رخ داده است!', 3500); + }); + }).catch(function (error) { + showAlertMessage('.alert-msg', 'خطا در دریافت صفحه PDF!', 3500); + }); + + }).catch(function (error) { + showAlertMessage('.alert-msg', 'خطا در بارگذاری فایل PDF!', 3500); + }); + }; + + fileReader.readAsArrayBuffer(fileInputFile); + + } else { + showAlertMessage('.alert-msg', 'فرمت فایل باید یکی از موارد jpeg, jpg یا png باشد.', 3500); + } + } + }); + + $(document).off('click', '.btnDeletingPD').on('click', '.btnDeletingPD', function (event) { + event.preventDefault(); + const indexId = $(this).data('index'); + + swal.fire({ + title: "اخطار", + text: "آیا میخواهید تصویر موجود را حذف کنید؟", + icon: "warning", + showCancelButton: true, + confirmButtonText: "بله", + cancelButtonText: "خیر", + confirmButtonColor: '#84cc16', + reverseButtons: true + }).then((result) => { + if (result.isConfirmed) { + removeEmployeeDocumentByLabel(indexId, employeeId); + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + const img = pdBox.find('.preview-image'); + img.attr('src', '/assetsclient/images/pd-image.png'); + $(this).addClass('disable'); + } else { + $(this).removeClass('disable'); + } + }); + + }); + + $(".exitModal").click(function () { + if (uploadFileCount > 0) { + swal.fire({ + title: "اخطار", + text: "در صورت انصراف عملیات ثبت نخواهد شد!", + icon: "warning", + showCancelButton: true, + confirmButtonText: "بله", + cancelButtonText: "خیر", + confirmButtonColor: '#84cc16', + reverseButtons: true + }).then((result) => { + if (result.isConfirmed) { + cancelOperation(); + } + }); + } else { + $('#MainModal').modal('hide'); + } + }); +}); + +function cancelOperation() { + $.ajax({ + url: cancelOperationUrl, + method: 'POST', + data: { workshopId: workshopId, employeeId: employeeId }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + if (response.success) { + $('#MainModal').modal('hide'); + } else { + showAlertMessage('.alert-success-msg', response.message, 3500); + } + }, + error: function (response) { + showAlertMessage('.alert-msg', response.message, 3500); + } + }); +} + +var indexCount = 0; +var activeUploads = 0; +function uploadFile(file, indexId, label) { + const formData = new FormData(); + formData.append('command.EmployeeId', employeeId); + formData.append('command.WorkshopId', workshopId); + formData.append('command.Label', label); + formData.append('command.PictureFile', file); + + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + const spinner = pdBox.find('.spinner-loading-progress'); + + const percentageText = pdBox.find('.percentageText'); + + spinner.show(); + activeUploads++; + $('#createUploadingFiles').prop('disabled', true).addClass('disable'); + + const xhr = new XMLHttpRequest(); + xhr.open('POST', saveUploadFileModalAjax, true); + xhr.setRequestHeader('RequestVerificationToken', antiForgeryToken); + + const uploadStartTime = new Date().getTime(); + let simulatedProgress = 0; + let actualProgress = 0; + let isUploadComplete = false; + + // Simulate progress every 20ms, gradually increasing the bar until the actual progress is reached + const progressInterval = setInterval(function () { + if (simulatedProgress < actualProgress && !isUploadComplete) { + simulatedProgress += 1; // Gradually increase simulated progress + spinner.css('width', `${simulatedProgress}%`); + percentageText.text(`${simulatedProgress}%`); + } + + if (simulatedProgress >= 100) { + clearInterval(progressInterval); // Stop once the progress hits 100% + } + }, 30); // Increases by 1% every 20ms, making it smooth + + // Actual upload progress listener + xhr.upload.addEventListener('progress', function (e) { + if (e.lengthComputable) { + actualProgress = Math.round((e.loaded / e.total) * 100); + + // If the actual progress is slow, allow the simulated progress to match it naturally + if (actualProgress >= simulatedProgress) { + simulatedProgress = actualProgress; + spinner.css('width', `${simulatedProgress}%`); + percentageText.text(`${simulatedProgress}%`); + } + } + }); + + // On upload completion + xhr.onload = function () { + spinner.css('transition', 'all 2s ease-in'); + const uploadEndTime = new Date().getTime(); + const timeDiff = uploadEndTime - uploadStartTime; + const minUploadTime = 2500; // Minimum of 2 seconds for the whole process + + const response = JSON.parse(xhr.responseText); + isUploadComplete = true; // Mark the upload as complete + const delayTime = Math.max(minUploadTime - timeDiff, 0); + + setTimeout(function () { + clearInterval(progressInterval); // Clear the interval when done + simulatedProgress = 100; + spinner.css('width', '100%'); + percentageText.text('100%'); + + var id2 = $("#employeeIdForList").val(); + + if (xhr.status === 200 && response.isSuccedded) { + indexCount++; + const reader = new FileReader(); + reader.onload = function (e) { + + uploadFileCount = uploadFileCount + 1; + + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + const img = pdBox.find('.preview-image'); + img.attr('src', e.target.result); + + //employeePicture = $('#EmployeePicture').attr('src'); + //nationalCardFront = $('#NationalCardFront').attr('src'); + //nationalCardRear = $('#NationalCardRear').attr('src'); + //militaryServiceCard = $('#MilitaryServiceCard').attr('src'); + //idCardPage1 = $('#IdCardPage1').attr('src'); + //idCardPage2 = $('#IdCardPage2').attr('src'); + //idCardPage3 = $('#IdCardPage3').attr('src'); + //idCardPage4 = $('#IdCardPage4').attr('src'); + //console.log(idCardPage2); + + // updatePreviewImage(indexId, id2, e.target.result); + + }; + + if (pdBox.hasClass("complete") || pdBox.hasClass("discomplete")) { + + pdBox.removeClass("discomplete complete"); + pdBox.find(".sign").removeClass("discompleteSign completeSign"); + pdBox.find(".sign").empty(); + pdBox.find(".btnDeletingPD").removeClass("Rejected Confirmed"); + pdBox.find("confirmedMessage ").remove(); + pdBox.find(".resultMessage").empty(); + } + + pdBox.find('.btnDeletingPD').removeClass('disable').addClass("Unsubmitted"); + + reader.readAsDataURL(file); + } else { + showAlertMessage('.alert-msg', response.message || 'Error uploading file', 3500); + $('input[type="file"][data-index="' + indexId + '"]').val(''); + } + spinner.css('width', '0%'); // Reset the progress bar + spinner.hide(); + handleActiveUploads(); + }, delayTime); // Ensure a minimum of 2 seconds for the full process + }; + + // Handle upload error + xhr.onerror = function () { + clearInterval(progressInterval); // Stop progress on error + showAlertMessage('.alert-msg', 'مشکلی در آپلود فایل به وجود آمد.', 3500); + $('input[type="file"][data-index="' + indexId + '"]').val(''); + spinner.css('width', '0%'); + spinner.hide(); + handleActiveUploads(); + }; + + xhr.send(formData); +} + +function handleActiveUploads() { + activeUploads--; + if (activeUploads === 0) { + $('#createUploadingFiles').prop('disabled', false).removeClass('disable'); + } +} + +function uploadCanvasAsFile(canvas, fileName, indexFileValue, label) { + canvas.toBlob(function (blob) { + if (!blob) { + showAlertMessage('.alert-msg', 'مشکلی در تبدیل تصویر رخ داده است!', 3500); + return; + } + + let file = new File([blob], fileName, { type: 'image/png' }); + + uploadFile(file, indexFileValue, label); + + }, "image/png"); +} + + +function showAlertMessage(selector, message, timeout) { + $(selector).show(); + $(selector + ' p').text(message); + setTimeout(function () { + $(selector).hide(); + $(selector + ' p').text(''); + }, timeout); +} + +function removeEmployeeDocumentByLabel(indexId, employeeId) { + const label = $(`#label_${indexId}`).val(); + const pdBox = $('input[data-index="' + indexId + '"]').closest('.pdBox'); + + $.ajax({ + url: deleteFileAjaxUrl, + method: 'POST', + data: { label: label, employeeId: employeeId, workshopId: workshopId }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + if (response.isSuccedded) { + uploadFileCount = uploadFileCount - 1; + + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت حذف شد.', 3500); + /* $(`#label_${indexId}`).val('');*/ + pdBox.find('.btnDeletingPD').removeClass("Unsubmitted"); + pdBox.find('.uploaderSign').hide(); + updatePreviewImage(Number(indexId), Number(employeeId), "/assetsclient/images/pd-image.png"); + + + } else { + showAlertMessage('.alert-success-msg', response.message, 3500); + } + }, + error: function (response) { + showAlertMessage('.alert-msg', response.message, 3500); + } + }); +} + +function updatePreviewImage(indexId, id2, result) { + switch (indexId) { + case 0: + $(`#employeePicture_${id2}.preview-image`).attr('src', result); + break; + case 1: + $(`#nationalCardFront_${id2}.preview-image`).attr('src', result); + break; + case 2: + $(`#nationalCardRear_${id2}.preview-image`).attr('src', result); + break; + case 3: + $(`#militaryServiceCard_${id2}.preview-image`).attr('src', result); + break; + case 4: + $(`#idCardPage1_${id2}.preview-image`).attr('src', result); + break; + case 5: + $(`#idCardPage2_${id2}.preview-image`).attr('src', result); + break; + case 6: + $(`#idCardPage3_${id2}.preview-image`).attr('src', result); + break; + case 7: + $(`#idCardPage4_${id2}.preview-image`).attr('src', result); + break; + default: + console.warn('Unexpected indexId:', indexId); + } +} + +function saveSubmit(id) { + var loading = $(".spinner-loading"); + + loading.show(); + + var data = { + 'cmd.EmployeeDocumentsId': id + } + $.ajax({ + url: saveSubmitAjax, + method: 'POST', + data: data, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + loading.hide(); + + if (response.isSuccedded) { + + var employeeSectionDiv = $(`[data-employee-id="${employeeId}"]`); + employeeSectionDiv.remove(); + + var employeeCountElement = $(`#EmployeeCountOfWorkshop_${workshopId}`); + var employeeNumberOfWorkshop = Number(employeeCountElement.text().trim()); + employeeNumberOfWorkshop -= 1; + employeeCountElement.text(employeeNumberOfWorkshop); + + if (employeeNumberOfWorkshop === 0) { + var mainElement = $(`#Main_${workshopId}`); + mainElement.next(".operation-div").remove(); + mainElement.remove(); + } + + var countDocumentsElement = $(`#CountDocumentsAwaitingUpload`); + var countDocumentsAwaitingUpload = Number(countDocumentsElement.text().trim()); + countDocumentsAwaitingUpload -= 1; + countDocumentsElement.text(countDocumentsAwaitingUpload); + + updateMainWorkFlow(); + updateIndexesWorkFlow(`DocumentsAwaitingUpload_${workshopId}`); + + _RefreshWorkFlowCountMenu(); + _RefreshCheckerCountMenu(); + + $('#MainModal').modal('hide'); + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت ارسال شد.', 3500); + } else { + showAlertMessage('.alert-msg', response.message, 3500); + } + }, + error: function () { + loading.hide(); + showAlertMessage('.alert-msg', 'مشکلی در ارسال تصویر به وجود آمد.', 3500); + } + }); +} + +function cancelOP() { + $.ajax({ + url: saveSubmitAjax, + method: 'POST', + data: { employeeId: employeeId, }, + headers: { 'RequestVerificationToken': antiForgeryToken }, + success: function (response) { + loading.hide(); + $('#MainModal').modal('hide'); + + if (response.isSuccedded) { + showAlertMessage('.alert-success-msg', 'تصویر موجود با موفقیت ارسال شد.', 3500); + + } else { + showAlertMessage('.alert-msg', response.message, 3500); + } + }, + error: function () { + loading.hide(); + showAlertMessage('.alert-msg', 'مشکلی در ارسال تصویر به وجود آمد.', 3500); + } + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/insurance.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/insurance.js new file mode 100644 index 00000000..37b7ffba --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/insurance.js @@ -0,0 +1,246 @@ +var lengthMenu = 0; + +$(document).ready(function () { + loadInsuredEmployeesWithoutContract(); + loadMenuAnime(); + + $("#clickAbsentTab").click(function () { + $('.cutWorkFlowLists, .lunchBreakWorkFlowLists, .undefinedWorkFlowLists, .overlappingLeavesLists').fadeOut(200, function () { + $('.absentWorkFlowLists').fadeIn(200); + }); + }); + +}); + +function loadMenuAnime() { + var tabsNewAnim = $('#navbar-animmenu'); + var selectorNewAnim = $('#navbar-animmenu').find('li').length; + var activeItemNewAnim = tabsNewAnim.find('.active'); + var activeHeightNewAnimHeight = activeItemNewAnim.innerHeight(); + var itemPosNewAnimTop = activeItemNewAnim.position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.active').each(function () { + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + }); + + if (lengthMenu === 1) { + if ($('.main-navbar li').hasClass('lastRole')) { + $('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + $('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + } + + $("#navbar-animmenu").on("click", "li", function (e) { + if ($(this).hasClass('lastRole')) { + //$('.verti-selector .top').addClass('last-role'); + $('#hideCircle').css('border-radius', '25px 0 0 0'); + } else { + //$('.verti-selector .top').removeClass('last-role'); + $('#hideCircle').css('border-radius', '0 0 0 0'); + } + + $('#navbar-animmenu ul li').removeClass("active"); + $(this).addClass('active'); + + var activeHeightNewAnimHeight = $(this).innerHeight(); + var itemPosNewAnimTop = $(this).position(); + $(".verti-selector").css({ + "top": itemPosNewAnimTop.top + "px", + "height": activeHeightNewAnimHeight + "px" + }); + + $('.form-section').hide(); + $('.accountListHead').text($(this).find('a').text()); + var targetForm = $(this).data('target'); + $('#' + targetForm).show(); + + }); +} + +$(document).on('click', ".openActionMain", function () { + $('.toggle').not($(this).find('.toggle')).removeClass('open'); + + $(this).next().find(".operations-btns-main").slideToggle(500); + $(".operations-btns-main").not($(this).next().find(".operations-btns-main")).slideUp(500); + + $(this).find('.toggle').toggleClass('open'); +}); + +$(document).on('click', ".openAction", function () { + if (window.matchMedia('(max-width: 768px)').matches) { + $(this).next().find(".operations-btns").slideToggle(500); + $(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500); + } +}); + +function loadInsuredEmployeesWithoutContract() { + var mainIndexNum = 1; + + var html = ``; + $.ajax({ + async: false, + contentType: 'charset=utf-8', + + dataType: 'json', + type: 'GET', + url: loadInsuredEmployeesWithoutContractUrl, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + + if (response.success) { + if (data.length > 0) { + data.forEach(function (item) { + html += ` +
    +
    +
    +
    + + ${mainIndexNum++} + +
    +
    +
    +
    +
    +
    + ${item.workshopName} +
    +
    +
    +
    + ${item.insuredEmployeesWithoutContractCount} +
    +
    +
    +
    + + + + + +
    +
    `; + + html += `
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $('#loadInsuredEmployeesWithoutContract').html(html); + $('#loadInsuredEmployeesWithoutContractMobile').html(html); + } + }, + failure: function (response) { + console.log(response); + } + }); +} + +function loadInsuredEmployeesWithoutContractByWorkshopId(id) { + var html = ``; + $.ajax({ + async: false, + contentType: 'charset=utf-8', + dataType: 'json', + type: 'GET', + url: loadInsuredEmployeesWithoutContractByWorkshopIdUrl, + data: { 'workshopId': id }, + headers: { "RequestVerificationToken": antiForgeryToken }, + success: function (response) { + var data = response.data; + if (response.success) { + if (data.length > 0) { + data.forEach(function (item, i) { + html += `
    +
    +
    +
    + ردیف +
    +
    + + ${i + 1} + +
    +
    + +
    +
    نام پرسنل
    +
    + ${item.employeeFullName} +

    تاریخ پایان بیمه ${item.insuranceEndDateFa}

    +
    +
    + +
    +
    +
    پیغام:
    +
    تاریخ پایان بیمه ${item.insuranceEndDateFa}
    +
    +
    + + +
    +
    + + + + + + + +
    +
    +
    `; + }); + + } else { + html += `
    +
    +
    +
    + +
    اطلاعاتی وجود ندارد.
    +
    +
    +
    +
    `; + } + + $(`.workshopId_${id}`).html(html); + } + }, + failure: function (response) { + console.log(response); + } + }); +} \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/start-left-work.js b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/start-left-work.js new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsAdminNew/WorkFlow/js/start-left-work.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsClient/libs/pdf/pdf.js b/ServiceHost/wwwroot/AssetsClient/libs/pdf/pdf.js new file mode 100644 index 00000000..e1bee3d6 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsClient/libs/pdf/pdf.js @@ -0,0 +1,16435 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf"] = factory(); + else + root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.RenderingIntentFlag = exports.PromiseCapability = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.MAX_IMAGE_SIZE_TO_CACHE = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.BASELINE_FACTOR = exports.AnnotationType = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.normalizeUnicode = normalizeUnicode; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; +; +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +const MAX_IMAGE_SIZE_TO_CACHE = 10e6; +exports.MAX_IMAGE_SIZE_TO_CACHE = MAX_IMAGE_SIZE_TO_CACHE; +const LINE_FACTOR = 1.35; +exports.LINE_FACTOR = LINE_FACTOR; +const LINE_DESCENT_FACTOR = 0.35; +exports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR; +const BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR; +exports.BASELINE_FACTOR = BASELINE_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + SAVE: 0x08, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 +}; +exports.RenderingIntentFlag = RenderingIntentFlag; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +exports.AnnotationMode = AnnotationMode; +const AnnotationEditorPrefix = "pdfjs_internal_editor_"; +exports.AnnotationEditorPrefix = AnnotationEditorPrefix; +const AnnotationEditorType = { + DISABLE: -1, + NONE: 0, + FREETEXT: 3, + STAMP: 13, + INK: 15 +}; +exports.AnnotationEditorType = AnnotationEditorType; +const AnnotationEditorParamsType = { + FREETEXT_SIZE: 1, + FREETEXT_COLOR: 2, + FREETEXT_OPACITY: 3, + INK_COLOR: 11, + INK_THICKNESS: 12, + INK_OPACITY: 13 +}; +exports.AnnotationEditorParamsType = AnnotationEditorParamsType; +const PermissionFlag = { + PRINT: 0x04, + MODIFY_CONTENTS: 0x08, + COPY: 0x10, + MODIFY_ANNOTATIONS: 0x20, + FILL_INTERACTIVE_FORMS: 0x100, + COPY_FOR_ACCESSIBILITY: 0x200, + ASSEMBLE: 0x400, + PRINT_HIGH_QUALITY: 0x800 +}; +exports.PermissionFlag = PermissionFlag; +const TextRenderingMode = { + FILL: 0, + STROKE: 1, + FILL_STROKE: 2, + INVISIBLE: 3, + FILL_ADD_TO_PATH: 4, + STROKE_ADD_TO_PATH: 5, + FILL_STROKE_ADD_TO_PATH: 6, + ADD_TO_PATH: 7, + FILL_STROKE_MASK: 3, + ADD_TO_PATH_FLAG: 4 +}; +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +exports.ImageKind = ImageKind; +const AnnotationType = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26 +}; +exports.AnnotationType = AnnotationType; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { + READONLY: 0x0000001, + REQUIRED: 0x0000002, + NOEXPORT: 0x0000004, + MULTILINE: 0x0001000, + PASSWORD: 0x0002000, + NOTOGGLETOOFF: 0x0004000, + RADIO: 0x0008000, + PUSHBUTTON: 0x0010000, + COMBO: 0x0020000, + EDIT: 0x0040000, + SORT: 0x0080000, + FILESELECT: 0x0100000, + MULTISELECT: 0x0200000, + DONOTSPELLCHECK: 0x0400000, + DONOTSCROLL: 0x0800000, + COMB: 0x1000000, + RICHTEXT: 0x2000000, + RADIOSINUNISON: 0x2000000, + COMMITONSELCHANGE: 0x4000000 +}; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { + NONE: 0, + BINARY: 1 +}; +exports.CMapCompressionType = CMapCompressionType; +const OPS = { + dependency: 1, + setLineWidth: 2, + setLineCap: 3, + setLineJoin: 4, + setMiterLimit: 5, + setDash: 6, + setRenderingIntent: 7, + setFlatness: 8, + setGState: 9, + save: 10, + restore: 11, + transform: 12, + moveTo: 13, + lineTo: 14, + curveTo: 15, + curveTo2: 16, + curveTo3: 17, + closePath: 18, + rectangle: 19, + stroke: 20, + closeStroke: 21, + fill: 22, + eoFill: 23, + fillStroke: 24, + eoFillStroke: 25, + closeFillStroke: 26, + closeEOFillStroke: 27, + endPath: 28, + clip: 29, + eoClip: 30, + beginText: 31, + endText: 32, + setCharSpacing: 33, + setWordSpacing: 34, + setHScale: 35, + setLeading: 36, + setFont: 37, + setTextRenderingMode: 38, + setTextRise: 39, + moveText: 40, + setLeadingMoveText: 41, + setTextMatrix: 42, + nextLine: 43, + showText: 44, + showSpacedText: 45, + nextLineShowText: 46, + nextLineSetSpacingShowText: 47, + setCharWidth: 48, + setCharWidthAndBounds: 49, + setStrokeColorSpace: 50, + setFillColorSpace: 51, + setStrokeColor: 52, + setStrokeColorN: 53, + setFillColor: 54, + setFillColorN: 55, + setStrokeGray: 56, + setFillGray: 57, + setStrokeRGBColor: 58, + setFillRGBColor: 59, + setStrokeCMYKColor: 60, + setFillCMYKColor: 61, + shadingFill: 62, + beginInlineImage: 63, + beginImageData: 64, + endInlineImage: 65, + paintXObject: 66, + markPoint: 67, + markPointProps: 68, + beginMarkedContent: 69, + beginMarkedContentProps: 70, + endMarkedContent: 71, + beginCompat: 72, + endCompat: 73, + paintFormXObjectBegin: 74, + paintFormXObjectEnd: 75, + beginGroup: 76, + endGroup: 77, + beginAnnotation: 80, + endAnnotation: 81, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91 +}; +exports.OPS = OPS; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; +function setVerbosityLevel(level) { + if (Number.isInteger(level)) { + verbosity = level; + } +} +function getVerbosityLevel() { + return verbosity; +} +function info(msg) { + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); + } +} +function warn(msg) { + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); + } +} +function unreachable(msg) { + throw new Error(msg); +} +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} +function _isValidProtocol(url) { + switch (url?.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return true; + default: + return false; + } +} +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { + if (!url) { + return null; + } + try { + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + if (dots?.length >= 2) { + url = `http://${url}`; + } + } + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch {} + } + } + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + if (_isValidProtocol(absoluteUrl)) { + return absoluteUrl; + } + } catch {} + return null; +} +function shadow(obj, prop, value, nonSerializable = false) { + Object.defineProperty(obj, prop, { + value, + enumerable: !nonSerializable, + configurable: true, + writable: false + }); + return value; +} +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + this.message = message; + this.name = name; + } + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); +exports.BaseException = BaseException; +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); + this.code = code; + } +} +exports.PasswordException = PasswordException; +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); + this.details = details; + } +} +exports.UnknownErrorException = UnknownErrorException; +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); + } +} +exports.InvalidPDFException = InvalidPDFException; +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); + } +} +exports.MissingPDFException = MissingPDFException; +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); + this.status = status; + } +} +exports.UnexpectedResponseException = UnexpectedResponseException; +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); + } +} +exports.FormatError = FormatError; +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); + } +} +exports.AbortException = AbortException; +function bytesToString(bytes) { + if (typeof bytes !== "object" || bytes?.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; + if (length < MAX_ARGUMENT_COUNT) { + return String.fromCharCode.apply(null, bytes); + } + const strBuf = []; + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); + strBuf.push(String.fromCharCode.apply(null, chunk)); + } + return strBuf.join(""); +} +function stringToBytes(str) { + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); + } + const length = str.length; + const bytes = new Uint8Array(length); + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; + } + return bytes; +} +function string32(value) { + return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); +} +function objectSize(obj) { + return Object.keys(obj).length; +} +function objectFromMap(map) { + const obj = Object.create(null); + for (const [key, value] of map) { + obj[key] = value; + } + return obj; +} +function isLittleEndian() { + const buffer8 = new Uint8Array(4); + buffer8[0] = 1; + const view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} +function isEvalSupported() { + try { + new Function(""); + return true; + } catch { + return false; + } +} +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } + static get platform() { + if (typeof navigator === "undefined") { + return shadow(this, "platform", { + isWin: false, + isMac: false + }); + } + return shadow(this, "platform", { + isWin: navigator.platform.includes("Win"), + isMac: navigator.platform.includes("Mac") + }); + } +} +exports.FeatureTest = FeatureTest; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + static scaleMinMax(transform, minMax) { + let temp; + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + static transform(m1, m2) { + return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; + } + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; + return [xt, yt]; + } + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + return [xt, yt]; + } + static getAxialAlignedBoundingBox(r, m) { + const p1 = this.applyTransform(r, m); + const p2 = this.applyTransform(r.slice(2, 4), m); + const p3 = this.applyTransform([r[0], r[3]], m); + const p4 = this.applyTransform([r[2], r[1]], m); + return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; + } + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; + return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; + } + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; + return [Math.sqrt(sx), Math.sqrt(sy)]; + } + static normalizeRect(rect) { + const r = rect.slice(0); + if (rect[0] > rect[2]) { + r[0] = rect[2]; + r[2] = rect[0]; + } + if (rect[1] > rect[3]) { + r[1] = rect[3]; + r[3] = rect[1]; + } + return r; + } + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + if (xLow > xHigh) { + return null; + } + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); + if (yLow > yHigh) { + return null; + } + return [xLow, yLow, xHigh, yHigh]; + } + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { + const tvalues = [], + bounds = [[], []]; + let a, b, c, t, t1, t2, b2ac, sqrtb2ac; + for (let i = 0; i < 2; ++i) { + if (i === 0) { + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + } else { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) < 1e-12) { + continue; + } + t = -c / b; + if (0 < t && t < 1) { + tvalues.push(t); + } + continue; + } + b2ac = b * b - 4 * c * a; + sqrtb2ac = Math.sqrt(b2ac); + if (b2ac < 0) { + continue; + } + t1 = (-b + sqrtb2ac) / (2 * a); + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + t2 = (-b - sqrtb2ac) / (2 * a); + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } + } + let j = tvalues.length, + mt; + const jlen = j; + while (j--) { + t = tvalues[j]; + mt = 1 - t; + bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; + bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; + } + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + bounds[0].length = bounds[1].length = jlen + 2; + return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; + } +} +exports.Util = Util; +const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; +function stringToPDFString(str) { + if (str[0] >= "\xEF") { + let encoding; + if (str[0] === "\xFE" && str[1] === "\xFF") { + encoding = "utf-16be"; + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + encoding = "utf-16le"; + } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { + encoding = "utf-8"; + } + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = stringToBytes(str); + return decoder.decode(buffer); + } catch (ex) { + warn(`stringToPDFString: "${ex}".`); + } + } + } + const strBuf = []; + for (let i = 0, ii = str.length; i < ii; i++) { + const code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + return strBuf.join(""); +} +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} +function isArrayBuffer(v) { + return typeof v === "object" && v?.byteLength !== undefined; +} +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + return true; +} +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); +} +class PromiseCapability { + #settled = false; + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = data => { + this.#settled = true; + resolve(data); + }; + this.reject = reason => { + this.#settled = true; + reject(reason); + }; + }); + } + get settled() { + return this.#settled; + } +} +exports.PromiseCapability = PromiseCapability; +let NormalizeRegex = null; +let NormalizationMap = null; +function normalizeUnicode(str) { + if (!NormalizeRegex) { + NormalizeRegex = /([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu; + NormalizationMap = new Map([["ſt", "ſt"]]); + } + return str.replaceAll(NormalizeRegex, (_, p1, p2) => { + return p1 ? p1.normalize("NFKC") : NormalizationMap.get(p2); + }); +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; +exports.getDocument = getDocument; +exports.version = void 0; +var _util = __w_pdfjs_require__(1); +var _annotation_storage = __w_pdfjs_require__(3); +var _display_utils = __w_pdfjs_require__(6); +var _font_loader = __w_pdfjs_require__(9); +var _canvas = __w_pdfjs_require__(11); +var _worker_options = __w_pdfjs_require__(14); +var _is_node = __w_pdfjs_require__(10); +var _message_handler = __w_pdfjs_require__(15); +var _metadata = __w_pdfjs_require__(16); +var _optional_content_config = __w_pdfjs_require__(17); +var _transport_stream = __w_pdfjs_require__(18); +var _xfa_text = __w_pdfjs_require__(19); +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +const DELAYED_CLEANUP_TIMEOUT = 5000; +const DefaultCanvasFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeCanvasFactory) : _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +const DefaultCMapReaderFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeCMapReaderFactory) : _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +const DefaultFilterFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeFilterFactory) : _display_utils.DOMFilterFactory; +exports.DefaultFilterFactory = DefaultFilterFactory; +const DefaultStandardFontDataFactory = _is_node.isNodeJS ? (__w_pdfjs_require__(20).NodeStandardFontDataFactory) : _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; +let createPDFNetworkStream; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(21); + createPDFNetworkStream = params => { + return new PDFNodeStream(params); + }; + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(24); + const { + PDFFetchStream + } = __w_pdfjs_require__(25); + createPDFNetworkStream = params => { + return (0, _display_utils.isValidFetchUrl)(params.url) ? new PDFFetchStream(params) : new PDFNetworkStream(params); + }; + } +} +function getDocument(src) { + if (typeof src === "string" || src instanceof URL) { + src = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + src = { + data: src + }; + } + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, need parameter object."); + } + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + const task = new PDFDocumentLoadingTask(); + const { + docId + } = task; + const url = src.url ? getUrlProp(src.url) : null; + const data = src.data ? getDataProp(src.data) : null; + const httpHeaders = src.httpHeaders || null; + const withCredentials = src.withCredentials === true; + const password = src.password ?? null; + const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null; + const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE; + let worker = src.worker instanceof PDFWorker ? src.worker : null; + const verbosity = src.verbosity; + const docBaseUrl = typeof src.docBaseUrl === "string" && !(0, _display_utils.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null; + const cMapUrl = typeof src.cMapUrl === "string" ? src.cMapUrl : null; + const cMapPacked = src.cMapPacked !== false; + const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory; + const standardFontDataUrl = typeof src.standardFontDataUrl === "string" ? src.standardFontDataUrl : null; + const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory; + const ignoreErrors = src.stopAtErrors !== true; + const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1; + const isEvalSupported = src.isEvalSupported !== false; + const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !_is_node.isNodeJS; + const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1; + const disableFontFace = typeof src.disableFontFace === "boolean" ? src.disableFontFace : _is_node.isNodeJS; + const fontExtraProperties = src.fontExtraProperties === true; + const enableXfa = src.enableXfa === true; + const ownerDocument = src.ownerDocument || globalThis.document; + const disableRange = src.disableRange === true; + const disableStream = src.disableStream === true; + const disableAutoFetch = src.disableAutoFetch === true; + const pdfBug = src.pdfBug === true; + const length = rangeTransport ? rangeTransport.length : src.length ?? NaN; + const useSystemFonts = typeof src.useSystemFonts === "boolean" ? src.useSystemFonts : !_is_node.isNodeJS && !disableFontFace; + const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : CMapReaderFactory === _display_utils.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory && (0, _display_utils.isValidFetchUrl)(cMapUrl, document.baseURI) && (0, _display_utils.isValidFetchUrl)(standardFontDataUrl, document.baseURI); + const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({ + ownerDocument + }); + const filterFactory = src.filterFactory || new DefaultFilterFactory({ + docId, + ownerDocument + }); + const styleElement = null; + (0, _util.setVerbosityLevel)(verbosity); + const transportFactory = { + canvasFactory, + filterFactory + }; + if (!useWorkerFetch) { + transportFactory.cMapReaderFactory = new CMapReaderFactory({ + baseUrl: cMapUrl, + isCompressed: cMapPacked + }); + transportFactory.standardFontDataFactory = new StandardFontDataFactory({ + baseUrl: standardFontDataUrl + }); + } + if (!worker) { + const workerParams = { + verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + const fetchDocParams = { + docId, + apiVersion: '3.8.162', + data, + password, + disableAutoFetch, + rangeChunkSize, + length, + docBaseUrl, + enableXfa, + evaluatorOptions: { + maxImageSize, + disableFontFace, + ignoreErrors, + isEvalSupported, + isOffscreenCanvasSupported, + canvasMaxAreaInBytes, + fontExtraProperties, + useSystemFonts, + cMapUrl: useWorkerFetch ? cMapUrl : null, + standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null + } + }; + const transportParams = { + ignoreErrors, + isEvalSupported, + disableFontFace, + fontExtraProperties, + enableXfa, + ownerDocument, + disableAutoFetch, + pdfBug, + styleElement + }; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + const workerIdPromise = _fetchDocument(worker, fetchDocParams); + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length, + initialData: rangeTransport.initialData, + progressiveDone: rangeTransport.progressiveDone, + contentDispositionFilename: rangeTransport.contentDispositionFilename, + disableRange, + disableStream + }, rangeTransport); + } else if (!data) { + networkStream = createPDFNetworkStream({ + url, + length, + httpHeaders, + withCredentials, + rangeChunkSize, + disableRange, + disableStream + }); + } + resolve(networkStream); + }); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); + const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} +async function _fetchDocument(worker, source) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", source, source.data ? [source.data.buffer] : null); + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + return workerId; +} +function getUrlProp(val) { + if (val instanceof URL) { + return val.href; + } + try { + return new URL(val, window.location).href; + } catch { + if (_is_node.isNodeJS && typeof val === "string") { + return val; + } + } + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); +} +function getDataProp(val) { + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && val instanceof Buffer) { + throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`."); + } + if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) { + return val; + } + if (typeof val === "string") { + return (0, _util.stringToBytes)(val); + } + if (typeof val === "object" && !isNaN(val?.length) || (0, _util.isArrayBuffer)(val)) { + return new Uint8Array(val); + } + throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property."); +} +class PDFDocumentLoadingTask { + static #docId = 0; + constructor() { + this._capability = new _util.PromiseCapability(); + this._transport = null; + this._worker = null; + this.docId = `d${PDFDocumentLoadingTask.#docId++}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + } + get promise() { + return this._capability.promise; + } + async destroy() { + this.destroyed = true; + await this._transport?.destroy(); + this._transport = null; + if (this._worker) { + this._worker.destroy(); + this._worker = null; + } + } +} +exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask; +class PDFDataRangeTransport { + constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) { + this.length = length; + this.initialData = initialData; + this.progressiveDone = progressiveDone; + this.contentDispositionFilename = contentDispositionFilename; + this._rangeListeners = []; + this._progressListeners = []; + this._progressiveReadListeners = []; + this._progressiveDoneListeners = []; + this._readyCapability = new _util.PromiseCapability(); + } + addRangeListener(listener) { + this._rangeListeners.push(listener); + } + addProgressListener(listener) { + this._progressListeners.push(listener); + } + addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + } + addProgressiveDoneListener(listener) { + this._progressiveDoneListeners.push(listener); + } + onDataRange(begin, chunk) { + for (const listener of this._rangeListeners) { + listener(begin, chunk); + } + } + onDataProgress(loaded, total) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressListeners) { + listener(loaded, total); + } + }); + } + onDataProgressiveRead(chunk) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveReadListeners) { + listener(chunk); + } + }); + } + onDataProgressiveDone() { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveDoneListeners) { + listener(); + } + }); + } + transportReady() { + this._readyCapability.resolve(); + } + requestDataRange(begin, end) { + (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } + abort() {} +} +exports.PDFDataRangeTransport = PDFDataRangeTransport; +class PDFDocumentProxy { + constructor(pdfInfo, transport) { + this._pdfInfo = pdfInfo; + this._transport = transport; + } + get annotationStorage() { + return this._transport.annotationStorage; + } + get filterFactory() { + return this._transport.filterFactory; + } + get numPages() { + return this._pdfInfo.numPages; + } + get fingerprints() { + return this._pdfInfo.fingerprints; + } + get isPureXfa() { + return (0, _util.shadow)(this, "isPureXfa", !!this._transport._htmlForXfa); + } + get allXfaHtml() { + return this._transport._htmlForXfa; + } + getPage(pageNumber) { + return this._transport.getPage(pageNumber); + } + getPageIndex(ref) { + return this._transport.getPageIndex(ref); + } + getDestinations() { + return this._transport.getDestinations(); + } + getDestination(id) { + return this._transport.getDestination(id); + } + getPageLabels() { + return this._transport.getPageLabels(); + } + getPageLayout() { + return this._transport.getPageLayout(); + } + getPageMode() { + return this._transport.getPageMode(); + } + getViewerPreferences() { + return this._transport.getViewerPreferences(); + } + getOpenAction() { + return this._transport.getOpenAction(); + } + getAttachments() { + return this._transport.getAttachments(); + } + getJavaScript() { + return this._transport.getJavaScript(); + } + getJSActions() { + return this._transport.getDocJSActions(); + } + getOutline() { + return this._transport.getOutline(); + } + getOptionalContentConfig() { + return this._transport.getOptionalContentConfig(); + } + getPermissions() { + return this._transport.getPermissions(); + } + getMetadata() { + return this._transport.getMetadata(); + } + getMarkInfo() { + return this._transport.getMarkInfo(); + } + getData() { + return this._transport.getData(); + } + saveDocument() { + return this._transport.saveDocument(); + } + getDownloadInfo() { + return this._transport.downloadInfoCapability.promise; + } + cleanup(keepLoadedFonts = false) { + return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); + } + destroy() { + return this.loadingTask.destroy(); + } + get loadingParams() { + return this._transport.loadingParams; + } + get loadingTask() { + return this._transport.loadingTask; + } + getFieldObjects() { + return this._transport.getFieldObjects(); + } + hasJSActions() { + return this._transport.hasJSActions(); + } + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } +} +exports.PDFDocumentProxy = PDFDocumentProxy; +class PDFPageProxy { + #delayedCleanupTimeout = null; + #pendingCleanup = false; + constructor(pageIndex, pageInfo, transport, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._transport = transport; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this._maybeCleanupAfterRender = false; + this._intentStates = new Map(); + this.destroyed = false; + } + get pageNumber() { + return this._pageIndex + 1; + } + get rotate() { + return this._pageInfo.rotate; + } + get ref() { + return this._pageInfo.ref; + } + get userUnit() { + return this._pageInfo.userUnit; + } + get view() { + return this._pageInfo.view; + } + getViewport({ + scale, + rotation = this.rotate, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = {}) { + return new _display_utils.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + getAnnotations({ + intent = "display" + } = {}) { + const intentArgs = this._transport.getRenderingIntent(intent); + return this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + } + getJSActions() { + return this._transport.getPageJSActions(this._pageIndex); + } + get filterFactory() { + return this._transport.filterFactory; + } + get isPureXfa() { + return (0, _util.shadow)(this, "isPureXfa", !!this._transport._htmlForXfa); + } + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + render({ + canvasContext, + viewport, + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + transform = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null, + printAnnotationStorage = null + }) { + this._stats?.time("Overall"); + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage); + this.#pendingCleanup = false; + this.#abortDelayedCleanup(); + if (!optionalContentConfigPromise) { + optionalContentConfigPromise = this._transport.getOptionalContentConfig(); + } + let intentState = this._intentStates.get(intentArgs.cacheKey); + if (!intentState) { + intentState = Object.create(null); + this._intentStates.set(intentArgs.cacheKey, intentState); + } + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = new _util.PromiseCapability(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + this._stats?.time("Page Request"); + this._pumpOperatorList(intentArgs); + } + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + if (this._maybeCleanupAfterRender || intentPrint) { + this.#pendingCleanup = true; + } + this.#tryCleanup(!intentPrint); + if (error) { + internalRenderTask.capability.reject(error); + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) + }); + } else { + internalRenderTask.capability.resolve(); + } + this._stats?.timeEnd("Rendering"); + this._stats?.timeEnd("Overall"); + }; + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: this._transport.canvasFactory, + filterFactory: this._transport.filterFactory, + useRequestAnimationFrame: !intentPrint, + pdfBug: this._pdfBug, + pageColors + }); + (intentState.renderTasks ||= new Set()).add(internalRenderTask); + const renderTask = internalRenderTask.task; + Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => { + if (this.destroyed) { + complete(); + return; + } + this._stats?.time("Rendering"); + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } + getOperatorList({ + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + printAnnotationStorage = null + } = {}) { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); + } + } + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true); + let intentState = this._intentStates.get(intentArgs.cacheKey); + if (!intentState) { + intentState = Object.create(null); + this._intentStates.set(intentArgs.cacheKey, intentState); + } + let opListTask; + if (!intentState.opListReadCapability) { + opListTask = Object.create(null); + opListTask.operatorListChanged = operatorListChanged; + intentState.opListReadCapability = new _util.PromiseCapability(); + (intentState.renderTasks ||= new Set()).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + this._stats?.time("Page Request"); + this._pumpOperatorList(intentArgs); + } + return intentState.opListReadCapability.promise; + } + streamTextContent({ + includeMarkedContent = false, + disableNormalization = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + includeMarkedContent: includeMarkedContent === true, + disableNormalization: disableNormalization === true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + size(textContent) { + return textContent.items.length; + } + }); + } + getTextContent(params = {}) { + if (this._transport._htmlForXfa) { + return this.getXfa().then(xfa => { + return _xfa_text.XfaText.textContent(xfa); + }); + } + const readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function ({ + value, + done + }) { + if (done) { + resolve(textContent); + return; + } + Object.assign(textContent.styles, value.styles); + textContent.items.push(...value.items); + pump(); + }, reject); + } + const reader = readableStream.getReader(); + const textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + } + getStructTree() { + return this._transport.getStructTree(this._pageIndex); + } + _destroy() { + this.destroyed = true; + const waitOn = []; + for (const intentState of this._intentStates.values()) { + this._abortOperatorList({ + intentState, + reason: new Error("Page was destroyed."), + force: true + }); + if (intentState.opListReadCapability) { + continue; + } + for (const internalRenderTask of intentState.renderTasks) { + waitOn.push(internalRenderTask.completed); + internalRenderTask.cancel(); + } + } + this.objs.clear(); + this.#pendingCleanup = false; + this.#abortDelayedCleanup(); + return Promise.all(waitOn); + } + cleanup(resetStats = false) { + this.#pendingCleanup = true; + const success = this.#tryCleanup(false); + if (resetStats && success) { + this._stats &&= new _display_utils.StatTimer(); + } + return success; + } + #tryCleanup(delayed = false) { + this.#abortDelayedCleanup(); + if (!this.#pendingCleanup || this.destroyed) { + return false; + } + if (delayed) { + this.#delayedCleanupTimeout = setTimeout(() => { + this.#delayedCleanupTimeout = null; + this.#tryCleanup(false); + }, DELAYED_CLEANUP_TIMEOUT); + return false; + } + for (const { + renderTasks, + operatorList + } of this._intentStates.values()) { + if (renderTasks.size > 0 || !operatorList.lastChunk) { + return false; + } + } + this._intentStates.clear(); + this.objs.clear(); + this.#pendingCleanup = false; + return true; + } + #abortDelayedCleanup() { + if (this.#delayedCleanupTimeout) { + clearTimeout(this.#delayedCleanupTimeout); + this.#delayedCleanupTimeout = null; + } + } + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + if (!intentState) { + return; + } + this._stats?.timeEnd("Page Request"); + intentState.displayReadyCapability?.resolve(transparency); + } + _renderPageChunk(operatorListChunk, intentState) { + for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { + intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); + intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + } + intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots; + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + if (operatorListChunk.lastChunk) { + this.#tryCleanup(true); + } + } + _pumpOperatorList({ + renderingIntent, + cacheKey, + annotationStorageSerializable + }) { + const { + map, + transfers + } = annotationStorageSerializable; + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: map + }, transfers); + const reader = readableStream.getReader(); + const intentState = this._intentStates.get(cacheKey); + intentState.streamReader = reader; + const pump = () => { + reader.read().then(({ + value, + done + }) => { + if (done) { + intentState.streamReader = null; + return; + } + if (this._transport.destroyed) { + return; + } + this._renderPageChunk(value, intentState); + pump(); + }, reason => { + intentState.streamReader = null; + if (this._transport.destroyed) { + return; + } + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + this.#tryCleanup(true); + } + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(reason); + } else if (intentState.opListReadCapability) { + intentState.opListReadCapability.reject(reason); + } else { + throw reason; + } + }); + }; + pump(); + } + _abortOperatorList({ + intentState, + reason, + force = false + }) { + if (!intentState.streamReader) { + return; + } + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + if (reason instanceof _display_utils.RenderingCancelledException) { + let delay = RENDERING_CANCELLED_TIMEOUT; + if (reason.extraDelay > 0 && reason.extraDelay < 1000) { + delay += reason.extraDelay; + } + intentState.streamReaderCancelTimeout = setTimeout(() => { + intentState.streamReaderCancelTimeout = null; + this._abortOperatorList({ + intentState, + reason, + force: true + }); + }, delay); + return; + } + } + intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {}); + intentState.streamReader = null; + if (this._transport.destroyed) { + return; + } + for (const [curCacheKey, curIntentState] of this._intentStates) { + if (curIntentState === intentState) { + this._intentStates.delete(curCacheKey); + break; + } + } + this.cleanup(); + } + get stats() { + return this._stats; + } +} +exports.PDFPageProxy = PDFPageProxy; +class LoopbackPort { + #listeners = new Set(); + #deferred = Promise.resolve(); + postMessage(obj, transfer) { + const event = { + data: structuredClone(obj, transfer ? { + transfer + } : null) + }; + this.#deferred.then(() => { + for (const listener of this.#listeners) { + listener.call(this, event); + } + }); + } + addEventListener(name, listener) { + this.#listeners.add(listener); + } + removeEventListener(name, listener) { + this.#listeners.delete(listener); + } + terminate() { + this.#listeners.clear(); + } +} +exports.LoopbackPort = LoopbackPort; +const PDFWorkerUtil = { + isWorkerDisabled: false, + fallbackWorkerSrc: null, + fakeWorkerId: 0 +}; +exports.PDFWorkerUtil = PDFWorkerUtil; +{ + if (_is_node.isNodeJS && typeof require === "function") { + PDFWorkerUtil.isWorkerDisabled = true; + PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js"; + } else if (typeof document === "object") { + const pdfjsFilePath = document?.currentScript?.src; + if (pdfjsFilePath) { + PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); + } + } + PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { + let base; + try { + base = new URL(baseUrl); + if (!base.origin || base.origin === "null") { + return false; + } + } catch { + return false; + } + const other = new URL(otherUrl, base); + return base.origin === other.origin; + }; + PDFWorkerUtil.createCDNWrapper = function (url) { + const wrapper = `importScripts("${url}");`; + return URL.createObjectURL(new Blob([wrapper])); + }; +} +class PDFWorker { + static #workerPorts = new WeakMap(); + constructor({ + name = null, + port = null, + verbosity = (0, _util.getVerbosityLevel)() + } = {}) { + if (port && PDFWorker.#workerPorts.has(port)) { + throw new Error("Cannot use more than one PDFWorker per port."); + } + this.name = name; + this.destroyed = false; + this.verbosity = verbosity; + this._readyCapability = new _util.PromiseCapability(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + if (port) { + PDFWorker.#workerPorts.set(port, this); + this._initializeFromPort(port); + return; + } + this._initialize(); + } + get promise() { + return this._readyCapability.promise; + } + get port() { + return this._port; + } + get messageHandler() { + return this._messageHandler; + } + _initializeFromPort(port) { + this._port = port; + this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); + this._messageHandler.on("ready", function () {}); + this._readyCapability.resolve(); + this._messageHandler.send("configure", { + verbosity: this.verbosity + }); + } + _initialize() { + if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) { + let { + workerSrc + } = PDFWorker; + try { + if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { + workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); + } + const worker = new Worker(workerSrc); + const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); + const terminateEarly = () => { + worker.removeEventListener("error", onWorkerError); + messageHandler.destroy(); + worker.terminate(); + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + } else { + this._setupFakeWorker(); + } + }; + const onWorkerError = () => { + if (!this._webWorker) { + terminateEarly(); + } + }; + worker.addEventListener("error", onWorkerError); + messageHandler.on("test", data => { + worker.removeEventListener("error", onWorkerError); + if (this.destroyed) { + terminateEarly(); + return; + } + if (data) { + this._messageHandler = messageHandler; + this._port = worker; + this._webWorker = worker; + this._readyCapability.resolve(); + messageHandler.send("configure", { + verbosity: this.verbosity + }); + } else { + this._setupFakeWorker(); + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on("ready", data => { + worker.removeEventListener("error", onWorkerError); + if (this.destroyed) { + terminateEarly(); + return; + } + try { + sendTest(); + } catch { + this._setupFakeWorker(); + } + }); + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + sendTest(); + return; + } catch { + (0, _util.info)("The worker has been disabled."); + } + } + this._setupFakeWorker(); + } + _setupFakeWorker() { + if (!PDFWorkerUtil.isWorkerDisabled) { + (0, _util.warn)("Setting up fake worker."); + PDFWorkerUtil.isWorkerDisabled = true; + } + PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => { + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + return; + } + const port = new LoopbackPort(); + this._port = port; + const id = `fake${PDFWorkerUtil.fakeWorkerId++}`; + const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); + this._messageHandler = messageHandler; + this._readyCapability.resolve(); + messageHandler.send("configure", { + verbosity: this.verbosity + }); + }).catch(reason => { + this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); + }); + } + destroy() { + this.destroyed = true; + if (this._webWorker) { + this._webWorker.terminate(); + this._webWorker = null; + } + PDFWorker.#workerPorts.delete(this._port); + this._port = null; + if (this._messageHandler) { + this._messageHandler.destroy(); + this._messageHandler = null; + } + } + static fromPort(params) { + if (!params?.port) { + throw new Error("PDFWorker.fromPort - invalid method signature."); + } + if (this.#workerPorts.has(params.port)) { + return this.#workerPorts.get(params.port); + } + return new PDFWorker(params); + } + static get workerSrc() { + if (_worker_options.GlobalWorkerOptions.workerSrc) { + return _worker_options.GlobalWorkerOptions.workerSrc; + } + if (PDFWorkerUtil.fallbackWorkerSrc !== null) { + if (!_is_node.isNodeJS) { + (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); + } + return PDFWorkerUtil.fallbackWorkerSrc; + } + throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); + } + static get _mainThreadWorkerMessageHandler() { + try { + return globalThis.pdfjsWorker?.WorkerMessageHandler || null; + } catch { + return null; + } + } + static get _setupFakeWorkerGlobal() { + const loader = async () => { + const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler; + if (mainWorkerMessageHandler) { + return mainWorkerMessageHandler; + } + if (_is_node.isNodeJS && typeof require === "function") { + const worker = eval("require")(this.workerSrc); + return worker.WorkerMessageHandler; + } + await (0, _display_utils.loadScript)(this.workerSrc); + return window.pdfjsWorker.WorkerMessageHandler; + }; + return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader()); + } +} +exports.PDFWorker = PDFWorker; +class WorkerTransport { + #methodPromises = new Map(); + #pageCache = new Map(); + #pagePromises = new Map(); + constructor(messageHandler, loadingTask, networkStream, params, factory) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader({ + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + this.canvasFactory = factory.canvasFactory; + this.filterFactory = factory.filterFactory; + this.cMapReaderFactory = factory.cMapReaderFactory; + this.standardFontDataFactory = factory.standardFontDataFactory; + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.downloadInfoCapability = new _util.PromiseCapability(); + this.setupMessageHandler(); + } + #cacheSimpleMethod(name, data = null) { + const cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, data); + this.#methodPromises.set(name, promise); + return promise; + } + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) { + let renderingIntent = _util.RenderingIntentFlag.DISPLAY; + let annotationStorageSerializable = _annotation_storage.SerializableEmpty; + switch (intent) { + case "any": + renderingIntent = _util.RenderingIntentFlag.ANY; + break; + case "display": + break; + case "print": + renderingIntent = _util.RenderingIntentFlag.PRINT; + break; + default: + (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`); + } + switch (annotationMode) { + case _util.AnnotationMode.DISABLE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE; + break; + case _util.AnnotationMode.ENABLE: + break; + case _util.AnnotationMode.ENABLE_FORMS: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS; + break; + case _util.AnnotationMode.ENABLE_STORAGE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE; + const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage; + annotationStorageSerializable = annotationStorage.serializable; + break; + default: + (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + if (isOpList) { + renderingIntent += _util.RenderingIntentFlag.OPLIST; + } + return { + renderingIntent, + cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`, + annotationStorageSerializable + }; + } + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + this.destroyed = true; + this.destroyCapability = new _util.PromiseCapability(); + if (this._passwordCapability) { + this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); + } + const waitOn = []; + for (const page of this.#pageCache.values()) { + waitOn.push(page._destroy()); + } + this.#pageCache.clear(); + this.#pagePromises.clear(); + if (this.hasOwnProperty("annotationStorage")) { + this.annotationStorage.resetModified(); + } + const terminated = this.messageHandler.sendWithPromise("Terminate", null); + waitOn.push(terminated); + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); + this.fontLoader.clear(); + this.#methodPromises.clear(); + this.filterFactory.destroy(); + if (this._networkStream) { + this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); + } + if (this.messageHandler) { + this.messageHandler.destroy(); + this.messageHandler = null; + } + this.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + } + setupMessageHandler() { + const { + messageHandler, + loadingTask + } = this; + messageHandler.on("GetReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); + this._fullReader = this._networkStream.getFullReader(); + this._fullReader.onProgress = evt => { + this._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + sink.onPull = () => { + this._fullReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + (0, _util.assert)(value instanceof ArrayBuffer, "GetReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + sink.onCancel = reason => { + this._fullReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + throw readyReason; + }); + }; + }); + messageHandler.on("ReaderHeadersReady", data => { + const headersCapability = new _util.PromiseCapability(); + const fullReader = this._fullReader; + fullReader.headersReady.then(() => { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (this._lastProgress) { + loadingTask.onProgress?.(this._lastProgress); + } + fullReader.onProgress = evt => { + loadingTask.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + }; + } + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }); + messageHandler.on("GetRangeReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); + const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + if (!rangeReader) { + sink.close(); + return; + } + sink.onPull = () => { + rangeReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + (0, _util.assert)(value instanceof ArrayBuffer, "GetRangeReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + sink.onCancel = reason => { + rangeReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + throw readyReason; + }); + }; + }); + messageHandler.on("GetDoc", ({ + pdfInfo + }) => { + this._numPages = pdfInfo.numPages; + this._htmlForXfa = pdfInfo.htmlForXfa; + delete pdfInfo.htmlForXfa; + loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); + }); + messageHandler.on("DocException", function (ex) { + let reason; + switch (ex.name) { + case "PasswordException": + reason = new _util.PasswordException(ex.message, ex.code); + break; + case "InvalidPDFException": + reason = new _util.InvalidPDFException(ex.message); + break; + case "MissingPDFException": + reason = new _util.MissingPDFException(ex.message); + break; + case "UnexpectedResponseException": + reason = new _util.UnexpectedResponseException(ex.message, ex.status); + break; + case "UnknownErrorException": + reason = new _util.UnknownErrorException(ex.message, ex.details); + break; + default: + (0, _util.unreachable)("DocException - expected a valid Error."); + } + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this._passwordCapability = new _util.PromiseCapability(); + if (loadingTask.onPassword) { + const updatePassword = password => { + if (password instanceof Error) { + this._passwordCapability.reject(password); + } else { + this._passwordCapability.resolve({ + password + }); + } + }; + try { + loadingTask.onPassword(updatePassword, exception.code); + } catch (ex) { + this._passwordCapability.reject(ex); + } + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + return this._passwordCapability.promise; + }); + messageHandler.on("DataLoaded", data => { + loadingTask.onProgress?.({ + loaded: data.length, + total: data.length + }); + this.downloadInfoCapability.resolve(data); + }); + messageHandler.on("StartRenderPage", data => { + if (this.destroyed) { + return; + } + const page = this.#pageCache.get(data.pageIndex); + page._startRenderPage(data.transparency, data.cacheKey); + }); + messageHandler.on("commonobj", ([id, type, exportedData]) => { + if (this.destroyed) { + return; + } + if (this.commonObjs.has(id)) { + return; + } + switch (type) { + case "Font": + const params = this._params; + if ("error" in exportedData) { + const exportedError = exportedData.error; + (0, _util.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; + } + const inspectFont = params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null; + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + inspectFont + }); + this.fontLoader.bind(font).catch(reason => { + return messageHandler.sendWithPromise("FontFallback", { + id + }); + }).finally(() => { + if (!params.fontExtraProperties && font.data) { + font.data = null; + } + this.commonObjs.resolve(id, font); + }); + break; + case "FontPath": + case "Image": + case "Pattern": + this.commonObjs.resolve(id, exportedData); + break; + default: + throw new Error(`Got unknown common object type ${type}`); + } + }); + messageHandler.on("obj", ([id, pageIndex, type, imageData]) => { + if (this.destroyed) { + return; + } + const pageProxy = this.#pageCache.get(pageIndex); + if (pageProxy.objs.has(id)) { + return; + } + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + if (imageData) { + let length; + if (imageData.bitmap) { + const { + width, + height + } = imageData; + length = width * height * 4; + } else { + length = imageData.data?.length || 0; + } + if (length > _util.MAX_IMAGE_SIZE_TO_CACHE) { + pageProxy._maybeCleanupAfterRender = true; + } + } + break; + case "Pattern": + pageProxy.objs.resolve(id, imageData); + break; + default: + throw new Error(`Got unknown object type ${type}`); + } + }); + messageHandler.on("DocProgress", data => { + if (this.destroyed) { + return; + } + loadingTask.onProgress?.({ + loaded: data.loaded, + total: data.total + }); + }); + messageHandler.on("FetchBuiltInCMap", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + if (!this.cMapReaderFactory) { + return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); + } + return this.cMapReaderFactory.fetch(data); + }); + messageHandler.on("FetchStandardFontData", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + if (!this.standardFontDataFactory) { + return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); + } + return this.standardFontDataFactory.fetch(data); + }); + } + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + saveDocument() { + if (this.annotationStorage.size <= 0) { + (0, _util.warn)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + const { + map, + transfers + } = this.annotationStorage.serializable; + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: map, + filename: this._fullReader?.filename ?? null + }, transfers).finally(() => { + this.annotationStorage.resetModified(); + }); + } + getPage(pageNumber) { + if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { + return Promise.reject(new Error("Invalid page request.")); + } + const pageIndex = pageNumber - 1, + cachedPromise = this.#pagePromises.get(pageIndex); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise("GetPage", { + pageIndex + }).then(pageInfo => { + if (this.destroyed) { + throw new Error("Transport destroyed"); + } + const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug); + this.#pageCache.set(pageIndex, page); + return page; + }); + this.#pagePromises.set(pageIndex, promise); + return promise; + } + getPageIndex(ref) { + if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) { + return Promise.reject(new Error("Invalid pageIndex request.")); + } + return this.messageHandler.sendWithPromise("GetPageIndex", { + num: ref.num, + gen: ref.gen + }); + } + getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise("GetAnnotations", { + pageIndex, + intent + }); + } + getFieldObjects() { + return this.#cacheSimpleMethod("GetFieldObjects"); + } + hasJSActions() { + return this.#cacheSimpleMethod("HasJSActions"); + } + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + getDestinations() { + return this.messageHandler.sendWithPromise("GetDestinations", null); + } + getDestination(id) { + if (typeof id !== "string") { + return Promise.reject(new Error("Invalid destination request.")); + } + return this.messageHandler.sendWithPromise("GetDestination", { + id + }); + } + getPageLabels() { + return this.messageHandler.sendWithPromise("GetPageLabels", null); + } + getPageLayout() { + return this.messageHandler.sendWithPromise("GetPageLayout", null); + } + getPageMode() { + return this.messageHandler.sendWithPromise("GetPageMode", null); + } + getViewerPreferences() { + return this.messageHandler.sendWithPromise("GetViewerPreferences", null); + } + getOpenAction() { + return this.messageHandler.sendWithPromise("GetOpenAction", null); + } + getAttachments() { + return this.messageHandler.sendWithPromise("GetAttachments", null); + } + getJavaScript() { + return this.messageHandler.sendWithPromise("GetJavaScript", null); + } + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + getStructTree(pageIndex) { + return this.messageHandler.sendWithPromise("GetStructTree", { + pageIndex + }); + } + getOutline() { + return this.messageHandler.sendWithPromise("GetOutline", null); + } + getOptionalContentConfig() { + return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { + return new _optional_content_config.OptionalContentConfig(results); + }); + } + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + getMetadata() { + const name = "GetMetadata", + cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, null).then(results => { + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null, + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null + }; + }); + this.#methodPromises.set(name, promise); + return promise; + } + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + async startCleanup(keepLoadedFonts = false) { + if (this.destroyed) { + return; + } + await this.messageHandler.sendWithPromise("Cleanup", null); + for (const page of this.#pageCache.values()) { + const cleanupSuccessful = page.cleanup(); + if (!cleanupSuccessful) { + throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`); + } + } + this.commonObjs.clear(); + if (!keepLoadedFonts) { + this.fontLoader.clear(); + } + this.#methodPromises.clear(); + this.filterFactory.destroy(true); + } + get loadingParams() { + const { + disableAutoFetch, + enableXfa + } = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch, + enableXfa + }); + } +} +class PDFObjects { + #objs = Object.create(null); + #ensureObj(objId) { + const obj = this.#objs[objId]; + if (obj) { + return obj; + } + return this.#objs[objId] = { + capability: new _util.PromiseCapability(), + data: null + }; + } + get(objId, callback = null) { + if (callback) { + const obj = this.#ensureObj(objId); + obj.capability.promise.then(() => callback(obj.data)); + return null; + } + const obj = this.#objs[objId]; + if (!obj?.capability.settled) { + throw new Error(`Requesting object that isn't resolved yet ${objId}.`); + } + return obj.data; + } + has(objId) { + const obj = this.#objs[objId]; + return obj?.capability.settled || false; + } + resolve(objId, data = null) { + const obj = this.#ensureObj(objId); + obj.data = data; + obj.capability.resolve(); + } + clear() { + for (const objId in this.#objs) { + const { + data + } = this.#objs[objId]; + data?.bitmap?.close(); + } + this.#objs = Object.create(null); + } +} +class RenderTask { + #internalRenderTask = null; + constructor(internalRenderTask) { + this.#internalRenderTask = internalRenderTask; + this.onContinue = null; + } + get promise() { + return this.#internalRenderTask.capability.promise; + } + cancel(extraDelay = 0) { + this.#internalRenderTask.cancel(null, extraDelay); + } + get separateAnnots() { + const { + separateAnnots + } = this.#internalRenderTask.operatorList; + if (!separateAnnots) { + return false; + } + const { + annotationCanvasMap + } = this.#internalRenderTask; + return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0; + } +} +exports.RenderTask = RenderTask; +class InternalRenderTask { + static #canvasInUse = new WeakSet(); + constructor({ + callback, + params, + objs, + commonObjs, + annotationCanvasMap, + operatorList, + pageIndex, + canvasFactory, + filterFactory, + useRequestAnimationFrame = false, + pdfBug = false, + pageColors = null + }) { + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.annotationCanvasMap = annotationCanvasMap; + this.operatorListIdx = null; + this.operatorList = operatorList; + this._pageIndex = pageIndex; + this.canvasFactory = canvasFactory; + this.filterFactory = filterFactory; + this._pdfBug = pdfBug; + this.pageColors = pageColors; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; + this.cancelled = false; + this.capability = new _util.PromiseCapability(); + this.task = new RenderTask(this); + this._cancelBound = this.cancel.bind(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + get completed() { + return this.capability.promise.catch(function () {}); + } + initializeGraphics({ + transparency = false, + optionalContentConfig + }) { + if (this.cancelled) { + return; + } + if (this._canvas) { + if (InternalRenderTask.#canvasInUse.has(this._canvas)) { + throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); + } + InternalRenderTask.#canvasInUse.add(this._canvas); + } + if (this._pdfBug && globalThis.StepperManager?.enabled) { + this.stepper = globalThis.StepperManager.create(this._pageIndex); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } + const { + canvasContext, + viewport, + transform, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, { + optionalContentConfig + }, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + this.graphicsReadyCallback?.(); + } + cancel(error = null, extraDelay = 0) { + this.running = false; + this.cancelled = true; + this.gfx?.endDrawing(); + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay)); + } + operatorListChanged() { + if (!this.graphicsReady) { + this.graphicsReadyCallback ||= this._continueBound; + return; + } + this.stepper?.updateOperatorList(this.operatorList); + if (this.running) { + return; + } + this._continue(); + } + _continue() { + this.running = true; + if (this.cancelled) { + return; + } + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + } + _scheduleNext() { + if (this._useRequestAnimationFrame) { + window.requestAnimationFrame(() => { + this._nextBound().catch(this._cancelBound); + }); + } else { + Promise.resolve().then(this._nextBound).catch(this._cancelBound); + } + } + async _next() { + if (this.cancelled) { + return; + } + this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); + if (this.operatorListIdx === this.operatorList.argsArray.length) { + this.running = false; + if (this.operatorList.lastChunk) { + this.gfx.endDrawing(this.pageColors); + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + this.callback(); + } + } + } +} +const version = '3.8.162'; +exports.version = version; +const build = '2c74323e3'; +exports.build = build; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SerializableEmpty = exports.PrintAnnotationStorage = exports.AnnotationStorage = void 0; +var _util = __w_pdfjs_require__(1); +var _editor = __w_pdfjs_require__(4); +var _murmurhash = __w_pdfjs_require__(8); +const SerializableEmpty = Object.freeze({ + map: null, + hash: "", + transfers: undefined +}); +exports.SerializableEmpty = SerializableEmpty; +class AnnotationStorage { + #modified = false; + #storage = new Map(); + constructor() { + this.onSetModified = null; + this.onResetModified = null; + this.onAnnotationEditor = null; + } + getValue(key, defaultValue) { + const value = this.#storage.get(key); + if (value === undefined) { + return defaultValue; + } + return Object.assign(defaultValue, value); + } + getRawValue(key) { + return this.#storage.get(key); + } + remove(key) { + this.#storage.delete(key); + if (this.#storage.size === 0) { + this.resetModified(); + } + if (typeof this.onAnnotationEditor === "function") { + for (const value of this.#storage.values()) { + if (value instanceof _editor.AnnotationEditor) { + return; + } + } + this.onAnnotationEditor(null); + } + } + setValue(key, value) { + const obj = this.#storage.get(key); + let modified = false; + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + modified = true; + this.#storage.set(key, value); + } + if (modified) { + this.#setModified(); + } + if (value instanceof _editor.AnnotationEditor && typeof this.onAnnotationEditor === "function") { + this.onAnnotationEditor(value.constructor._type); + } + } + has(key) { + return this.#storage.has(key); + } + getAll() { + return this.#storage.size > 0 ? (0, _util.objectFromMap)(this.#storage) : null; + } + setAll(obj) { + for (const [key, val] of Object.entries(obj)) { + this.setValue(key, val); + } + } + get size() { + return this.#storage.size; + } + #setModified() { + if (!this.#modified) { + this.#modified = true; + if (typeof this.onSetModified === "function") { + this.onSetModified(); + } + } + } + resetModified() { + if (this.#modified) { + this.#modified = false; + if (typeof this.onResetModified === "function") { + this.onResetModified(); + } + } + } + get print() { + return new PrintAnnotationStorage(this); + } + get serializable() { + if (this.#storage.size === 0) { + return SerializableEmpty; + } + const map = new Map(), + hash = new _murmurhash.MurmurHash3_64(), + transfers = []; + for (const [key, val] of this.#storage) { + const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val; + if (serialized) { + map.set(key, serialized); + hash.update(`${key}:${JSON.stringify(serialized)}`); + if (serialized.bitmap) { + transfers.push(serialized.bitmap); + } + } + } + return map.size > 0 ? { + map, + hash: hash.hexdigest(), + transfers + } : SerializableEmpty; + } +} +exports.AnnotationStorage = AnnotationStorage; +class PrintAnnotationStorage extends AnnotationStorage { + #serializable; + constructor(parent) { + super(); + const { + map, + hash, + transfers + } = parent.serializable; + const clone = structuredClone(map, transfers ? { + transfer: transfers + } : null); + this.#serializable = { + map: clone, + hash, + transfers + }; + } + get print() { + (0, _util.unreachable)("Should not call PrintAnnotationStorage.print"); + } + get serializable() { + return this.#serializable; + } +} +exports.PrintAnnotationStorage = PrintAnnotationStorage; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditor = void 0; +var _tools = __w_pdfjs_require__(5); +var _util = __w_pdfjs_require__(1); +class AnnotationEditor { + #boundFocusin = this.focusin.bind(this); + #boundFocusout = this.focusout.bind(this); + #hasBeenSelected = false; + #isEditing = false; + #isInEditMode = false; + _uiManager = null; + #zIndex = AnnotationEditor._zIndex++; + static _colorManager = new _tools.ColorManager(); + static _zIndex = 1; + constructor(parameters) { + if (this.constructor === AnnotationEditor) { + (0, _util.unreachable)("Cannot initialize AnnotationEditor."); + } + this.parent = parameters.parent; + this.id = parameters.id; + this.width = this.height = null; + this.pageIndex = parameters.parent.pageIndex; + this.name = parameters.name; + this.div = null; + this._uiManager = parameters.uiManager; + this.annotationElementId = null; + const { + rotation, + rawDims: { + pageWidth, + pageHeight, + pageX, + pageY + } + } = this.parent.viewport; + this.rotation = rotation; + this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360; + this.pageDimensions = [pageWidth, pageHeight]; + this.pageTranslation = [pageX, pageY]; + const [width, height] = this.parentDimensions; + this.x = parameters.x / width; + this.y = parameters.y / height; + this.isAttachedToDOM = false; + this.deleted = false; + } + static get _defaultLineColor() { + return (0, _util.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText")); + } + static deleteAnnotationElement(editor) { + const fakeEditor = new FakeEditor({ + id: editor.parent.getNextId(), + parent: editor.parent, + uiManager: editor._uiManager + }); + fakeEditor.annotationElementId = editor.annotationElementId; + fakeEditor.deleted = true; + fakeEditor._uiManager.addToAnnotationStorage(fakeEditor); + } + addCommands(params) { + this._uiManager.addCommands(params); + } + get currentLayer() { + return this._uiManager.currentLayer; + } + setInBackground() { + this.div.style.zIndex = 0; + } + setInForeground() { + this.div.style.zIndex = this.#zIndex; + } + setParent(parent) { + if (parent !== null) { + this.pageIndex = parent.pageIndex; + this.pageDimensions = parent.pageDimensions; + } + this.parent = parent; + } + focusin(event) { + if (!this.#hasBeenSelected) { + this.parent.setSelected(this); + } else { + this.#hasBeenSelected = false; + } + } + focusout(event) { + if (!this.isAttachedToDOM) { + return; + } + const target = event.relatedTarget; + if (target?.closest(`#${this.id}`)) { + return; + } + event.preventDefault(); + if (!this.parent?.isMultipleSelection) { + this.commitOrRemove(); + } + } + commitOrRemove() { + if (this.isEmpty()) { + this.remove(); + } else { + this.commit(); + } + } + commit() { + this.addToAnnotationStorage(); + } + addToAnnotationStorage() { + this._uiManager.addToAnnotationStorage(this); + } + dragstart(event) { + const rect = this.parent.div.getBoundingClientRect(); + this.startX = event.clientX - rect.x; + this.startY = event.clientY - rect.y; + event.dataTransfer.setData("text/plain", this.id); + event.dataTransfer.effectAllowed = "move"; + } + setAt(x, y, tx, ty) { + const [width, height] = this.parentDimensions; + [tx, ty] = this.screenToPageTranslation(tx, ty); + this.x = (x + tx) / width; + this.y = (y + ty) / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + translate(x, y) { + const [width, height] = this.parentDimensions; + [x, y] = this.screenToPageTranslation(x, y); + this.x += x / width; + this.y += y / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + screenToPageTranslation(x, y) { + switch (this.parentRotation) { + case 90: + return [y, -x]; + case 180: + return [-x, -y]; + case 270: + return [-y, x]; + default: + return [x, y]; + } + } + get parentScale() { + return this._uiManager.viewParameters.realScale; + } + get parentRotation() { + return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360; + } + get parentDimensions() { + const { + realScale + } = this._uiManager.viewParameters; + const [pageWidth, pageHeight] = this.pageDimensions; + return [pageWidth * realScale, pageHeight * realScale]; + } + setDims(width, height) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.div.style.width = `${100 * width / parentWidth}%`; + this.div.style.height = `${100 * height / parentHeight}%`; + } + fixDims() { + const { + style + } = this.div; + const { + height, + width + } = style; + const widthPercent = width.endsWith("%"); + const heightPercent = height.endsWith("%"); + if (widthPercent && heightPercent) { + return; + } + const [parentWidth, parentHeight] = this.parentDimensions; + if (!widthPercent) { + style.width = `${100 * parseFloat(width) / parentWidth}%`; + } + if (!heightPercent) { + style.height = `${100 * parseFloat(height) / parentHeight}%`; + } + } + getInitialTranslation() { + return [0, 0]; + } + render() { + this.div = document.createElement("div"); + this.div.setAttribute("data-editor-rotation", (360 - this.rotation) % 360); + this.div.className = this.name; + this.div.setAttribute("id", this.id); + this.div.setAttribute("tabIndex", 0); + this.setInForeground(); + this.div.addEventListener("focusin", this.#boundFocusin); + this.div.addEventListener("focusout", this.#boundFocusout); + const [tx, ty] = this.getInitialTranslation(); + this.translate(tx, ty); + (0, _tools.bindEvents)(this, this.div, ["dragstart", "pointerdown"]); + return this.div; + } + pointerdown(event) { + const { + isMac + } = _util.FeatureTest.platform; + if (event.button !== 0 || event.ctrlKey && isMac) { + event.preventDefault(); + return; + } + if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) { + this.parent.toggleSelected(this); + } else { + this.parent.setSelected(this); + } + this.#hasBeenSelected = true; + } + getRect(tx, ty) { + const scale = this.parentScale; + const [pageWidth, pageHeight] = this.pageDimensions; + const [pageX, pageY] = this.pageTranslation; + const shiftX = tx / scale; + const shiftY = ty / scale; + const x = this.x * pageWidth; + const y = this.y * pageHeight; + const width = this.width * pageWidth; + const height = this.height * pageHeight; + switch (this.rotation) { + case 0: + return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY]; + case 90: + return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY]; + case 180: + return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY]; + case 270: + return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY]; + default: + throw new Error("Invalid rotation"); + } + } + getRectInCurrentCoords(rect, pageHeight) { + const [x1, y1, x2, y2] = rect; + const width = x2 - x1; + const height = y2 - y1; + switch (this.rotation) { + case 0: + return [x1, pageHeight - y2, width, height]; + case 90: + return [x1, pageHeight - y1, height, width]; + case 180: + return [x2, pageHeight - y1, width, height]; + case 270: + return [x2, pageHeight - y2, height, width]; + default: + throw new Error("Invalid rotation"); + } + } + onceAdded() {} + isEmpty() { + return false; + } + enableEditMode() { + this.#isInEditMode = true; + } + disableEditMode() { + this.#isInEditMode = false; + } + isInEditMode() { + return this.#isInEditMode; + } + shouldGetKeyboardEvents() { + return false; + } + needsToBeRebuilt() { + return this.div && !this.isAttachedToDOM; + } + rebuild() { + this.div?.addEventListener("focusin", this.#boundFocusin); + this.div?.addEventListener("focusout", this.#boundFocusout); + } + serialize(_isForCopying = false) { + (0, _util.unreachable)("An editor must be serializable"); + } + static deserialize(data, parent, uiManager) { + const editor = new this.prototype.constructor({ + parent, + id: parent.getNextId(), + uiManager + }); + editor.rotation = data.rotation; + const [pageWidth, pageHeight] = editor.pageDimensions; + const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight); + editor.x = x / pageWidth; + editor.y = y / pageHeight; + editor.width = width / pageWidth; + editor.height = height / pageHeight; + return editor; + } + remove() { + this.div.removeEventListener("focusin", this.#boundFocusin); + this.div.removeEventListener("focusout", this.#boundFocusout); + if (!this.isEmpty()) { + this.commit(); + } + this.parent.remove(this); + } + select() { + this.div?.classList.add("selectedEditor"); + } + unselect() { + this.div?.classList.remove("selectedEditor"); + } + updateParams(type, value) {} + disableEditing() {} + enableEditing() {} + get propertiesToUpdate() { + return {}; + } + get contentDiv() { + return this.div; + } + get isEditing() { + return this.#isEditing; + } + set isEditing(value) { + this.#isEditing = value; + if (value) { + this.parent.setSelected(this); + this.parent.setActiveEditor(this); + } else { + this.parent.setActiveEditor(null); + } + } +} +exports.AnnotationEditor = AnnotationEditor; +class FakeEditor extends AnnotationEditor { + constructor(params) { + super(params); + this.annotationElementId = params.annotationElementId; + this.deleted = true; + } + serialize() { + return { + id: this.annotationElementId, + deleted: true, + pageIndex: this.pageIndex + }; + } +} + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0; +exports.bindEvents = bindEvents; +exports.opacityToHex = opacityToHex; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +function bindEvents(obj, element, names) { + for (const name of names) { + element.addEventListener(name, obj[name].bind(obj)); + } +} +function opacityToHex(opacity) { + return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, "0"); +} +class IdManager { + #id = 0; + getId() { + return `${_util.AnnotationEditorPrefix}${this.#id++}`; + } +} +class CommandManager { + #commands = []; + #locked = false; + #maxSize; + #position = -1; + constructor(maxSize = 128) { + this.#maxSize = maxSize; + } + add({ + cmd, + undo, + mustExec, + type = NaN, + overwriteIfSameType = false, + keepUndo = false + }) { + if (mustExec) { + cmd(); + } + if (this.#locked) { + return; + } + const save = { + cmd, + undo, + type + }; + if (this.#position === -1) { + if (this.#commands.length > 0) { + this.#commands.length = 0; + } + this.#position = 0; + this.#commands.push(save); + return; + } + if (overwriteIfSameType && this.#commands[this.#position].type === type) { + if (keepUndo) { + save.undo = this.#commands[this.#position].undo; + } + this.#commands[this.#position] = save; + return; + } + const next = this.#position + 1; + if (next === this.#maxSize) { + this.#commands.splice(0, 1); + } else { + this.#position = next; + if (next < this.#commands.length) { + this.#commands.splice(next); + } + } + this.#commands.push(save); + } + undo() { + if (this.#position === -1) { + return; + } + this.#locked = true; + this.#commands[this.#position].undo(); + this.#locked = false; + this.#position -= 1; + } + redo() { + if (this.#position < this.#commands.length - 1) { + this.#position += 1; + this.#locked = true; + this.#commands[this.#position].cmd(); + this.#locked = false; + } + } + hasSomethingToUndo() { + return this.#position !== -1; + } + hasSomethingToRedo() { + return this.#position < this.#commands.length - 1; + } + destroy() { + this.#commands = null; + } +} +exports.CommandManager = CommandManager; +class KeyboardManager { + constructor(callbacks) { + this.buffer = []; + this.callbacks = new Map(); + this.allKeys = new Set(); + const { + isMac + } = _util.FeatureTest.platform; + for (const [keys, callback, bubbles = false] of callbacks) { + for (const key of keys) { + const isMacKey = key.startsWith("mac+"); + if (isMac && isMacKey) { + this.callbacks.set(key.slice(4), { + callback, + bubbles + }); + this.allKeys.add(key.split("+").at(-1)); + } else if (!isMac && !isMacKey) { + this.callbacks.set(key, { + callback, + bubbles + }); + this.allKeys.add(key.split("+").at(-1)); + } + } + } + } + #serialize(event) { + if (event.altKey) { + this.buffer.push("alt"); + } + if (event.ctrlKey) { + this.buffer.push("ctrl"); + } + if (event.metaKey) { + this.buffer.push("meta"); + } + if (event.shiftKey) { + this.buffer.push("shift"); + } + this.buffer.push(event.key); + const str = this.buffer.join("+"); + this.buffer.length = 0; + return str; + } + exec(self, event) { + if (!this.allKeys.has(event.key)) { + return; + } + const info = this.callbacks.get(this.#serialize(event)); + if (!info) { + return; + } + const { + callback, + bubbles + } = info; + callback.bind(self)(); + if (!bubbles) { + event.stopPropagation(); + event.preventDefault(); + } + } +} +exports.KeyboardManager = KeyboardManager; +class ColorManager { + static _colorsMapping = new Map([["CanvasText", [0, 0, 0]], ["Canvas", [255, 255, 255]]]); + get _colors() { + const colors = new Map([["CanvasText", null], ["Canvas", null]]); + (0, _display_utils.getColorValues)(colors); + return (0, _util.shadow)(this, "_colors", colors); + } + convert(color) { + const rgb = (0, _display_utils.getRGB)(color); + if (!window.matchMedia("(forced-colors: active)").matches) { + return rgb; + } + for (const [name, RGB] of this._colors) { + if (RGB.every((x, i) => x === rgb[i])) { + return ColorManager._colorsMapping.get(name); + } + } + return rgb; + } + getHexCode(name) { + const rgb = this._colors.get(name); + if (!rgb) { + return name; + } + return _util.Util.makeHexColor(...rgb); + } +} +exports.ColorManager = ColorManager; +class AnnotationEditorUIManager { + #activeEditor = null; + #allEditors = new Map(); + #allLayers = new Map(); + #annotationStorage = null; + #commandManager = new CommandManager(); + #currentPageIndex = 0; + #deletedAnnotationsElementIds = new Set(); + #editorTypes = null; + #editorsToRescale = new Set(); + #eventBus = null; + #idManager = new IdManager(); + #isEnabled = false; + #mode = _util.AnnotationEditorType.NONE; + #selectedEditors = new Set(); + #boundCopy = this.copy.bind(this); + #boundCut = this.cut.bind(this); + #boundPaste = this.paste.bind(this); + #boundKeydown = this.keydown.bind(this); + #boundOnEditingAction = this.onEditingAction.bind(this); + #boundOnPageChanging = this.onPageChanging.bind(this); + #boundOnScaleChanging = this.onScaleChanging.bind(this); + #boundOnRotationChanging = this.onRotationChanging.bind(this); + #previousStates = { + isEditing: false, + isEmpty: true, + hasSomethingToUndo: false, + hasSomethingToRedo: false, + hasSelectedEditor: false + }; + #container = null; + static get _keyboardManager() { + return (0, _util.shadow)(this, "_keyboardManager", new KeyboardManager([[["ctrl+a", "mac+meta+a"], AnnotationEditorUIManager.prototype.selectAll], [["ctrl+z", "mac+meta+z"], AnnotationEditorUIManager.prototype.undo], [["ctrl+y", "ctrl+shift+Z", "mac+meta+shift+Z"], AnnotationEditorUIManager.prototype.redo], [["Backspace", "alt+Backspace", "ctrl+Backspace", "shift+Backspace", "mac+Backspace", "mac+alt+Backspace", "mac+ctrl+Backspace", "Delete", "ctrl+Delete", "shift+Delete"], AnnotationEditorUIManager.prototype.delete], [["Escape", "mac+Escape"], AnnotationEditorUIManager.prototype.unselectAll]])); + } + constructor(container, eventBus, annotationStorage) { + this.#container = container; + this.#eventBus = eventBus; + this.#eventBus._on("editingaction", this.#boundOnEditingAction); + this.#eventBus._on("pagechanging", this.#boundOnPageChanging); + this.#eventBus._on("scalechanging", this.#boundOnScaleChanging); + this.#eventBus._on("rotationchanging", this.#boundOnRotationChanging); + this.#annotationStorage = annotationStorage; + this.viewParameters = { + realScale: _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: 0 + }; + } + destroy() { + this.#removeKeyboardManager(); + this.#eventBus._off("editingaction", this.#boundOnEditingAction); + this.#eventBus._off("pagechanging", this.#boundOnPageChanging); + this.#eventBus._off("scalechanging", this.#boundOnScaleChanging); + this.#eventBus._off("rotationchanging", this.#boundOnRotationChanging); + for (const layer of this.#allLayers.values()) { + layer.destroy(); + } + this.#allLayers.clear(); + this.#allEditors.clear(); + this.#editorsToRescale.clear(); + this.#activeEditor = null; + this.#selectedEditors.clear(); + this.#commandManager.destroy(); + } + onPageChanging({ + pageNumber + }) { + this.#currentPageIndex = pageNumber - 1; + } + focusMainContainer() { + this.#container.focus(); + } + addShouldRescale(editor) { + this.#editorsToRescale.add(editor); + } + removeShouldRescale(editor) { + this.#editorsToRescale.delete(editor); + } + onScaleChanging({ + scale + }) { + this.commitOrRemove(); + this.viewParameters.realScale = scale * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS; + for (const editor of this.#editorsToRescale) { + editor.onScaleChanging(); + } + } + onRotationChanging({ + pagesRotation + }) { + this.commitOrRemove(); + this.viewParameters.rotation = pagesRotation; + } + addToAnnotationStorage(editor) { + if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) { + this.#annotationStorage.setValue(editor.id, editor); + } + } + #addKeyboardManager() { + this.#container.addEventListener("keydown", this.#boundKeydown); + } + #removeKeyboardManager() { + this.#container.removeEventListener("keydown", this.#boundKeydown); + } + #addCopyPasteListeners() { + document.addEventListener("copy", this.#boundCopy); + document.addEventListener("cut", this.#boundCut); + document.addEventListener("paste", this.#boundPaste); + } + #removeCopyPasteListeners() { + document.removeEventListener("copy", this.#boundCopy); + document.removeEventListener("cut", this.#boundCut); + document.removeEventListener("paste", this.#boundPaste); + } + copy(event) { + event.preventDefault(); + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + } + if (!this.hasSelection) { + return; + } + const editors = []; + for (const editor of this.#selectedEditors) { + const serialized = editor.serialize(true); + if (serialized) { + editors.push(serialized); + } + } + if (editors.length === 0) { + return; + } + event.clipboardData.setData("application/pdfjs", JSON.stringify(editors)); + } + cut(event) { + this.copy(event); + this.delete(); + } + paste(event) { + event.preventDefault(); + let data = event.clipboardData.getData("application/pdfjs"); + if (!data) { + return; + } + try { + data = JSON.parse(data); + } catch (ex) { + (0, _util.warn)(`paste: "${ex.message}".`); + return; + } + if (!Array.isArray(data)) { + return; + } + this.unselectAll(); + const layer = this.#allLayers.get(this.#currentPageIndex); + try { + const newEditors = []; + for (const editor of data) { + const deserializedEditor = layer.deserialize(editor); + if (!deserializedEditor) { + return; + } + newEditors.push(deserializedEditor); + } + const cmd = () => { + for (const editor of newEditors) { + this.#addEditorToLayer(editor); + } + this.#selectEditors(newEditors); + }; + const undo = () => { + for (const editor of newEditors) { + editor.remove(); + } + }; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } catch (ex) { + (0, _util.warn)(`paste: "${ex.message}".`); + } + } + keydown(event) { + if (!this.getActive()?.shouldGetKeyboardEvents()) { + AnnotationEditorUIManager._keyboardManager.exec(this, event); + } + } + onEditingAction(details) { + if (["undo", "redo", "delete", "selectAll"].includes(details.name)) { + this[details.name](); + } + } + #dispatchUpdateStates(details) { + const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value); + if (hasChanged) { + this.#eventBus.dispatch("annotationeditorstateschanged", { + source: this, + details: Object.assign(this.#previousStates, details) + }); + } + } + #dispatchUpdateUI(details) { + this.#eventBus.dispatch("annotationeditorparamschanged", { + source: this, + details + }); + } + setEditingState(isEditing) { + if (isEditing) { + this.#addKeyboardManager(); + this.#addCopyPasteListeners(); + this.#dispatchUpdateStates({ + isEditing: this.#mode !== _util.AnnotationEditorType.NONE, + isEmpty: this.#isEmpty(), + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + hasSelectedEditor: false + }); + } else { + this.#removeKeyboardManager(); + this.#removeCopyPasteListeners(); + this.#dispatchUpdateStates({ + isEditing: false + }); + } + } + registerEditorTypes(types) { + if (this.#editorTypes) { + return; + } + this.#editorTypes = types; + for (const editorType of this.#editorTypes) { + this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate); + } + } + getId() { + return this.#idManager.getId(); + } + get currentLayer() { + return this.#allLayers.get(this.#currentPageIndex); + } + get currentPageIndex() { + return this.#currentPageIndex; + } + addLayer(layer) { + this.#allLayers.set(layer.pageIndex, layer); + if (this.#isEnabled) { + layer.enable(); + } else { + layer.disable(); + } + } + removeLayer(layer) { + this.#allLayers.delete(layer.pageIndex); + } + updateMode(mode) { + this.#mode = mode; + if (mode === _util.AnnotationEditorType.NONE) { + this.setEditingState(false); + this.#disableAll(); + } else { + this.setEditingState(true); + this.#enableAll(); + for (const layer of this.#allLayers.values()) { + layer.updateMode(mode); + } + } + } + updateToolbar(mode) { + if (mode === this.#mode) { + return; + } + this.#eventBus.dispatch("switchannotationeditormode", { + source: this, + mode + }); + } + updateParams(type, value) { + if (!this.#editorTypes) { + return; + } + for (const editor of this.#selectedEditors) { + editor.updateParams(type, value); + } + for (const editorType of this.#editorTypes) { + editorType.updateDefaultParams(type, value); + } + } + #enableAll() { + if (!this.#isEnabled) { + this.#isEnabled = true; + for (const layer of this.#allLayers.values()) { + layer.enable(); + } + } + } + #disableAll() { + this.unselectAll(); + if (this.#isEnabled) { + this.#isEnabled = false; + for (const layer of this.#allLayers.values()) { + layer.disable(); + } + } + } + getEditors(pageIndex) { + const editors = []; + for (const editor of this.#allEditors.values()) { + if (editor.pageIndex === pageIndex) { + editors.push(editor); + } + } + return editors; + } + getEditor(id) { + return this.#allEditors.get(id); + } + addEditor(editor) { + this.#allEditors.set(editor.id, editor); + } + removeEditor(editor) { + this.#allEditors.delete(editor.id); + this.unselect(editor); + if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) { + this.#annotationStorage?.remove(editor.id); + } + } + addDeletedAnnotationElement(editor) { + this.#deletedAnnotationsElementIds.add(editor.annotationElementId); + editor.deleted = true; + } + isDeletedAnnotationElement(annotationElementId) { + return this.#deletedAnnotationsElementIds.has(annotationElementId); + } + removeDeletedAnnotationElement(editor) { + this.#deletedAnnotationsElementIds.delete(editor.annotationElementId); + editor.deleted = false; + } + #addEditorToLayer(editor) { + const layer = this.#allLayers.get(editor.pageIndex); + if (layer) { + layer.addOrRebuild(editor); + } else { + this.addEditor(editor); + } + } + setActiveEditor(editor) { + if (this.#activeEditor === editor) { + return; + } + this.#activeEditor = editor; + if (editor) { + this.#dispatchUpdateUI(editor.propertiesToUpdate); + } + } + toggleSelected(editor) { + if (this.#selectedEditors.has(editor)) { + this.#selectedEditors.delete(editor); + editor.unselect(); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + return; + } + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + setSelected(editor) { + for (const ed of this.#selectedEditors) { + if (ed !== editor) { + ed.unselect(); + } + } + this.#selectedEditors.clear(); + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + isSelected(editor) { + return this.#selectedEditors.has(editor); + } + unselect(editor) { + editor.unselect(); + this.#selectedEditors.delete(editor); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + } + get hasSelection() { + return this.#selectedEditors.size !== 0; + } + undo() { + this.#commandManager.undo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: true, + isEmpty: this.#isEmpty() + }); + } + redo() { + this.#commandManager.redo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + isEmpty: this.#isEmpty() + }); + } + addCommands(params) { + this.#commandManager.add(params); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: false, + isEmpty: this.#isEmpty() + }); + } + #isEmpty() { + if (this.#allEditors.size === 0) { + return true; + } + if (this.#allEditors.size === 1) { + for (const editor of this.#allEditors.values()) { + return editor.isEmpty(); + } + } + return false; + } + delete() { + this.commitOrRemove(); + if (!this.hasSelection) { + return; + } + const editors = [...this.#selectedEditors]; + const cmd = () => { + for (const editor of editors) { + editor.remove(); + } + }; + const undo = () => { + for (const editor of editors) { + this.#addEditorToLayer(editor); + } + }; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + commitOrRemove() { + this.#activeEditor?.commitOrRemove(); + } + #selectEditors(editors) { + this.#selectedEditors.clear(); + for (const editor of editors) { + if (editor.isEmpty()) { + continue; + } + this.#selectedEditors.add(editor); + editor.select(); + } + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + selectAll() { + for (const editor of this.#selectedEditors) { + editor.commit(); + } + this.#selectEditors(this.#allEditors.values()); + } + unselectAll() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + return; + } + if (this.#selectedEditors.size === 0) { + return; + } + for (const editor of this.#selectedEditors) { + editor.unselect(); + } + this.#selectedEditors.clear(); + this.#dispatchUpdateStates({ + hasSelectedEditor: false + }); + } + isActive(editor) { + return this.#activeEditor === editor; + } + getActive() { + return this.#activeEditor; + } + getMode() { + return this.#mode; + } +} +exports.AnnotationEditorUIManager = AnnotationEditorUIManager; + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMFilterFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = exports.AnnotationPrefix = void 0; +exports.deprecated = deprecated; +exports.getColorValues = getColorValues; +exports.getCurrentTransform = getCurrentTransform; +exports.getCurrentTransformInverse = getCurrentTransformInverse; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; +exports.getRGB = getRGB; +exports.getXfaPageViewport = getXfaPageViewport; +exports.isDataScheme = isDataScheme; +exports.isPdfFile = isPdfFile; +exports.isValidFetchUrl = isValidFetchUrl; +exports.loadScript = loadScript; +exports.setLayerDimensions = setLayerDimensions; +var _base_factory = __w_pdfjs_require__(7); +var _util = __w_pdfjs_require__(1); +const SVG_NS = "http://www.w3.org/2000/svg"; +const AnnotationPrefix = "pdfjs_internal_id_"; +exports.AnnotationPrefix = AnnotationPrefix; +class PixelsPerInch { + static CSS = 96.0; + static PDF = 72.0; + static PDF_TO_CSS_UNITS = this.CSS / this.PDF; +} +exports.PixelsPerInch = PixelsPerInch; +class DOMFilterFactory extends _base_factory.BaseFilterFactory { + #_cache; + #_defs; + #docId; + #document; + #hcmFilter; + #hcmKey; + #hcmUrl; + #hcmHighlightFilter; + #hcmHighlightKey; + #hcmHighlightUrl; + #id = 0; + constructor({ + docId, + ownerDocument = globalThis.document + } = {}) { + super(); + this.#docId = docId; + this.#document = ownerDocument; + } + get #cache() { + return this.#_cache ||= new Map(); + } + get #defs() { + if (!this.#_defs) { + const div = this.#document.createElement("div"); + const { + style + } = div; + style.visibility = "hidden"; + style.contain = "strict"; + style.width = style.height = 0; + style.position = "absolute"; + style.top = style.left = 0; + style.zIndex = -1; + const svg = this.#document.createElementNS(SVG_NS, "svg"); + svg.setAttribute("width", 0); + svg.setAttribute("height", 0); + this.#_defs = this.#document.createElementNS(SVG_NS, "defs"); + div.append(svg); + svg.append(this.#_defs); + this.#document.body.append(div); + } + return this.#_defs; + } + addFilter(maps) { + if (!maps) { + return "none"; + } + let value = this.#cache.get(maps); + if (value) { + return value; + } + let tableR, tableG, tableB, key; + if (maps.length === 1) { + const mapR = maps[0]; + const buffer = new Array(256); + for (let i = 0; i < 256; i++) { + buffer[i] = mapR[i] / 255; + } + key = tableR = tableG = tableB = buffer.join(","); + } else { + const [mapR, mapG, mapB] = maps; + const bufferR = new Array(256); + const bufferG = new Array(256); + const bufferB = new Array(256); + for (let i = 0; i < 256; i++) { + bufferR[i] = mapR[i] / 255; + bufferG[i] = mapG[i] / 255; + bufferB[i] = mapB[i] / 255; + } + tableR = bufferR.join(","); + tableG = bufferG.join(","); + tableB = bufferB.join(","); + key = `${tableR}${tableG}${tableB}`; + } + value = this.#cache.get(key); + if (value) { + this.#cache.set(maps, value); + return value; + } + const id = `g_${this.#docId}_transfer_map_${this.#id++}`; + const url = `url(#${id})`; + this.#cache.set(maps, url); + this.#cache.set(key, url); + const filter = this.#createFilter(id); + this.#addTransferMapConversion(tableR, tableG, tableB, filter); + return url; + } + addHCMFilter(fgColor, bgColor) { + const key = `${fgColor}-${bgColor}`; + if (this.#hcmKey === key) { + return this.#hcmUrl; + } + this.#hcmKey = key; + this.#hcmUrl = "none"; + this.#hcmFilter?.remove(); + if (!fgColor || !bgColor) { + return this.#hcmUrl; + } + const fgRGB = this.#getRGB(fgColor); + fgColor = _util.Util.makeHexColor(...fgRGB); + const bgRGB = this.#getRGB(bgColor); + bgColor = _util.Util.makeHexColor(...bgRGB); + this.#defs.style.color = ""; + if (fgColor === "#000000" && bgColor === "#ffffff" || fgColor === bgColor) { + return this.#hcmUrl; + } + const map = new Array(256); + for (let i = 0; i <= 255; i++) { + const x = i / 255; + map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + } + const table = map.join(","); + const id = `g_${this.#docId}_hcm_filter`; + const filter = this.#hcmHighlightFilter = this.#createFilter(id); + this.#addTransferMapConversion(table, table, table, filter); + this.#addGrayConversion(filter); + const getSteps = (c, n) => { + const start = fgRGB[c] / 255; + const end = bgRGB[c] / 255; + const arr = new Array(n + 1); + for (let i = 0; i <= n; i++) { + arr[i] = start + i / n * (end - start); + } + return arr.join(","); + }; + this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter); + this.#hcmUrl = `url(#${id})`; + return this.#hcmUrl; + } + addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) { + const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`; + if (this.#hcmHighlightKey === key) { + return this.#hcmHighlightUrl; + } + this.#hcmHighlightKey = key; + this.#hcmHighlightUrl = "none"; + this.#hcmHighlightFilter?.remove(); + if (!fgColor || !bgColor) { + return this.#hcmHighlightUrl; + } + const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this)); + let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]); + let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]); + let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this)); + if (bgGray < fgGray) { + [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB]; + } + this.#defs.style.color = ""; + const getSteps = (fg, bg, n) => { + const arr = new Array(256); + const step = (bgGray - fgGray) / n; + const newStart = fg / 255; + const newStep = (bg - fg) / (255 * n); + let prev = 0; + for (let i = 0; i <= n; i++) { + const k = Math.round(fgGray + i * step); + const value = newStart + i * newStep; + for (let j = prev; j <= k; j++) { + arr[j] = value; + } + prev = k + 1; + } + for (let i = prev; i < 256; i++) { + arr[i] = arr[prev - 1]; + } + return arr.join(","); + }; + const id = `g_${this.#docId}_hcm_highlight_filter`; + const filter = this.#hcmHighlightFilter = this.#createFilter(id); + this.#addGrayConversion(filter); + this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter); + this.#hcmHighlightUrl = `url(#${id})`; + return this.#hcmHighlightUrl; + } + destroy(keepHCM = false) { + if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) { + return; + } + if (this.#_defs) { + this.#_defs.parentNode.parentNode.remove(); + this.#_defs = null; + } + if (this.#_cache) { + this.#_cache.clear(); + this.#_cache = null; + } + this.#id = 0; + } + #addGrayConversion(filter) { + const feColorMatrix = this.#document.createElementNS(SVG_NS, "feColorMatrix"); + feColorMatrix.setAttribute("type", "matrix"); + feColorMatrix.setAttribute("values", "0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"); + filter.append(feColorMatrix); + } + #createFilter(id) { + const filter = this.#document.createElementNS(SVG_NS, "filter"); + filter.setAttribute("color-interpolation-filters", "sRGB"); + filter.setAttribute("id", id); + this.#defs.append(filter); + return filter; + } + #appendFeFunc(feComponentTransfer, func, table) { + const feFunc = this.#document.createElementNS(SVG_NS, func); + feFunc.setAttribute("type", "discrete"); + feFunc.setAttribute("tableValues", table); + feComponentTransfer.append(feFunc); + } + #addTransferMapConversion(rTable, gTable, bTable, filter) { + const feComponentTransfer = this.#document.createElementNS(SVG_NS, "feComponentTransfer"); + filter.append(feComponentTransfer); + this.#appendFeFunc(feComponentTransfer, "feFuncR", rTable); + this.#appendFeFunc(feComponentTransfer, "feFuncG", gTable); + this.#appendFeFunc(feComponentTransfer, "feFuncB", bTable); + } + #getRGB(color) { + this.#defs.style.color = color; + return getRGB(getComputedStyle(this.#defs).getPropertyValue("color")); + } +} +exports.DOMFilterFactory = DOMFilterFactory; +class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { + constructor({ + ownerDocument = globalThis.document + } = {}) { + super(); + this._document = ownerDocument; + } + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + return canvas; + } +} +exports.DOMCanvasFactory = DOMCanvasFactory; +async function fetchData(url, asTypedArray = false) { + if (isValidFetchUrl(url, document.baseURI)) { + const response = await fetch(url); + if (!response.ok) { + throw new Error(response.statusText); + } + return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); + } + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open("GET", url, true); + if (asTypedArray) { + request.responseType = "arraybuffer"; + } + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { + return; + } + if (request.status === 200 || request.status === 0) { + let data; + if (asTypedArray && request.response) { + data = new Uint8Array(request.response); + } else if (!asTypedArray && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + if (data) { + resolve(data); + return; + } + } + reject(new Error(request.statusText)); + }; + request.send(null); + }); +} +class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } +} +exports.DOMCMapReaderFactory = DOMCMapReaderFactory; +class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); + } +} +exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; +class DOMSVGFactory extends _base_factory.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } +} +exports.DOMSVGFactory = DOMSVGFactory; +class PageViewport { + constructor({ + viewBox, + scale, + rotation, + offsetX = 0, + offsetY = 0, + dontFlip = false + }) { + this.viewBox = viewBox; + this.scale = scale; + this.rotation = rotation; + this.offsetX = offsetX; + this.offsetY = offsetY; + const centerX = (viewBox[2] + viewBox[0]) / 2; + const centerY = (viewBox[3] + viewBox[1]) / 2; + let rotateA, rotateB, rotateC, rotateD; + rotation %= 360; + if (rotation < 0) { + rotation += 360; + } + switch (rotation) { + case 180: + rotateA = -1; + rotateB = 0; + rotateC = 0; + rotateD = 1; + break; + case 90: + rotateA = 0; + rotateB = 1; + rotateC = 1; + rotateD = 0; + break; + case 270: + rotateA = 0; + rotateB = -1; + rotateC = -1; + rotateD = 0; + break; + case 0: + rotateA = 1; + rotateB = 0; + rotateC = 0; + rotateD = -1; + break; + default: + throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); + } + if (dontFlip) { + rotateC = -rotateC; + rotateD = -rotateD; + } + let offsetCanvasX, offsetCanvasY; + let width, height; + if (rotateA === 0) { + offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; + offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; + width = (viewBox[3] - viewBox[1]) * scale; + height = (viewBox[2] - viewBox[0]) * scale; + } else { + offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; + offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; + width = (viewBox[2] - viewBox[0]) * scale; + height = (viewBox[3] - viewBox[1]) * scale; + } + this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY]; + this.width = width; + this.height = height; + } + get rawDims() { + const { + viewBox + } = this; + return (0, _util.shadow)(this, "rawDims", { + pageWidth: viewBox[2] - viewBox[0], + pageHeight: viewBox[3] - viewBox[1], + pageX: viewBox[0], + pageY: viewBox[1] + }); + } + clone({ + scale = this.scale, + rotation = this.rotation, + offsetX = this.offsetX, + offsetY = this.offsetY, + dontFlip = false + } = {}) { + return new PageViewport({ + viewBox: this.viewBox.slice(), + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + convertToViewportPoint(x, y) { + return _util.Util.applyTransform([x, y], this.transform); + } + convertToViewportRectangle(rect) { + const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); + const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); + return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; + } + convertToPdfPoint(x, y) { + return _util.Util.applyInverseTransform([x, y], this.transform); + } +} +exports.PageViewport = PageViewport; +class RenderingCancelledException extends _util.BaseException { + constructor(msg, extraDelay = 0) { + super(msg, "RenderingCancelledException"); + this.extraDelay = extraDelay; + } +} +exports.RenderingCancelledException = RenderingCancelledException; +function isDataScheme(url) { + const ii = url.length; + let i = 0; + while (i < ii && url[i].trim() === "") { + i++; + } + return url.substring(i, i + 5).toLowerCase() === "data:"; +} +function isPdfFile(filename) { + return typeof filename === "string" && /\.pdf$/i.test(filename); +} +function getFilenameFromUrl(url, onlyStripPath = false) { + if (!onlyStripPath) { + [url] = url.split(/[#?]/, 1); + } + return url.substring(url.lastIndexOf("/") + 1); +} +function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") { + if (typeof url !== "string") { + return defaultFilename; + } + if (isDataScheme(url)) { + (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); + return defaultFilename; + } + const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; + const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; + const splitURI = reURI.exec(url); + let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); + if (suggestedFilename) { + suggestedFilename = suggestedFilename[0]; + if (suggestedFilename.includes("%")) { + try { + suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; + } catch {} + } + } + return suggestedFilename || defaultFilename; +} +class StatTimer { + started = Object.create(null); + times = []; + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); + } + this.started[name] = Date.now(); + } + timeEnd(name) { + if (!(name in this.started)) { + (0, _util.warn)(`Timer has not been started for ${name}`); + } + this.times.push({ + name, + start: this.started[name], + end: Date.now() + }); + delete this.started[name]; + } + toString() { + const outBuf = []; + let longest = 0; + for (const { + name + } of this.times) { + longest = Math.max(name.length, longest); + } + for (const { + name, + start, + end + } of this.times) { + outBuf.push(`${name.padEnd(longest)} ${end - start}ms\n`); + } + return outBuf.join(""); + } +} +exports.StatTimer = StatTimer; +function isValidFetchUrl(url, baseUrl) { + try { + const { + protocol + } = baseUrl ? new URL(url, baseUrl) : new URL(url); + return protocol === "http:" || protocol === "https:"; + } catch { + return false; + } +} +function loadScript(src, removeScriptElement = false) { + return new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = src; + script.onload = function (evt) { + if (removeScriptElement) { + script.remove(); + } + resolve(evt); + }; + script.onerror = function () { + reject(new Error(`Cannot load script at: ${script.src}`)); + }; + (document.head || document.documentElement).append(script); + }); +} +function deprecated(details) { + console.log("Deprecated API usage: " + details); +} +let pdfDateStringRegex; +class PDFDateString { + static toDateObject(input) { + if (!input || typeof input !== "string") { + return null; + } + pdfDateStringRegex ||= new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); + const matches = pdfDateStringRegex.exec(input); + if (!matches) { + return null; + } + const year = parseInt(matches[1], 10); + let month = parseInt(matches[2], 10); + month = month >= 1 && month <= 12 ? month - 1 : 0; + let day = parseInt(matches[3], 10); + day = day >= 1 && day <= 31 ? day : 1; + let hour = parseInt(matches[4], 10); + hour = hour >= 0 && hour <= 23 ? hour : 0; + let minute = parseInt(matches[5], 10); + minute = minute >= 0 && minute <= 59 ? minute : 0; + let second = parseInt(matches[6], 10); + second = second >= 0 && second <= 59 ? second : 0; + const universalTimeRelation = matches[7] || "Z"; + let offsetHour = parseInt(matches[8], 10); + offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; + let offsetMinute = parseInt(matches[9], 10) || 0; + offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; + if (universalTimeRelation === "-") { + hour += offsetHour; + minute += offsetMinute; + } else if (universalTimeRelation === "+") { + hour -= offsetHour; + minute -= offsetMinute; + } + return new Date(Date.UTC(year, month, day, hour, minute, second)); + } +} +exports.PDFDateString = PDFDateString; +function getXfaPageViewport(xfaPage, { + scale = 1, + rotation = 0 +}) { + const { + width, + height + } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + return new PageViewport({ + viewBox, + scale, + rotation + }); +} +function getRGB(color) { + if (color.startsWith("#")) { + const colorRGB = parseInt(color.slice(1), 16); + return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff]; + } + if (color.startsWith("rgb(")) { + return color.slice(4, -1).split(",").map(x => parseInt(x)); + } + if (color.startsWith("rgba(")) { + return color.slice(5, -1).split(",").map(x => parseInt(x)).slice(0, 3); + } + (0, _util.warn)(`Not a valid color format: "${color}"`); + return [0, 0, 0]; +} +function getColorValues(colors) { + const span = document.createElement("span"); + span.style.visibility = "hidden"; + document.body.append(span); + for (const name of colors.keys()) { + span.style.color = name; + const computedColor = window.getComputedStyle(span).color; + colors.set(name, getRGB(computedColor)); + } + span.remove(); +} +function getCurrentTransform(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform(); + return [a, b, c, d, e, f]; +} +function getCurrentTransformInverse(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform().invertSelf(); + return [a, b, c, d, e, f]; +} +function setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) { + if (viewport instanceof PageViewport) { + const { + pageWidth, + pageHeight + } = viewport.rawDims; + const { + style + } = div; + const widthStr = `calc(var(--scale-factor) * ${pageWidth}px)`; + const heightStr = `calc(var(--scale-factor) * ${pageHeight}px)`; + if (!mustFlip || viewport.rotation % 180 === 0) { + style.width = widthStr; + style.height = heightStr; + } else { + style.width = heightStr; + style.height = widthStr; + } + } + if (mustRotate) { + div.setAttribute("data-main-rotation", viewport.rotation); + } +} + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseFilterFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; +var _util = __w_pdfjs_require__(1); +class BaseFilterFactory { + constructor() { + if (this.constructor === BaseFilterFactory) { + (0, _util.unreachable)("Cannot initialize BaseFilterFactory."); + } + } + addFilter(maps) { + return "none"; + } + addHCMFilter(fgColor, bgColor) { + return "none"; + } + addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) { + return "none"; + } + destroy(keepHCM = false) {} +} +exports.BaseFilterFactory = BaseFilterFactory; +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } + } + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + const canvas = this._createCanvas(width, height); + return { + canvas, + context: canvas.getContext("2d") + }; + } + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + _createCanvas(width, height) { + (0, _util.unreachable)("Abstract method `_createCanvas` called."); + } +} +exports.BaseCanvasFactory = BaseCanvasFactory; +class BaseCMapReaderFactory { + constructor({ + baseUrl = null, + isCompressed = true + }) { + if (this.constructor === BaseCMapReaderFactory) { + (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); + } + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + async fetch({ + name + }) { + if (!this.baseUrl) { + throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); + } + if (!name) { + throw new Error("CMap name must be specified."); + } + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; + return this._fetchData(url, compressionType).catch(reason => { + throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); + }); + } + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } +} +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } + this.baseUrl = baseUrl; + } + async fetch({ + filename + }) { + if (!this.baseUrl) { + throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); + } + if (!filename) { + throw new Error("Font filename must be specified."); + } + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } +} +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } + } + create(width, height, skipDimensions = false) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + const svg = this._createSVG("svg:svg"); + svg.setAttribute("version", "1.1"); + if (!skipDimensions) { + svg.setAttribute("width", `${width}px`); + svg.setAttribute("height", `${height}px`); + } + svg.setAttribute("preserveAspectRatio", "none"); + svg.setAttribute("viewBox", `0 0 ${width} ${height}`); + return svg; + } + createElement(type) { + if (typeof type !== "string") { + throw new Error("Invalid SVG element type"); + } + return this._createSVG(type); + } + _createSVG(type) { + (0, _util.unreachable)("Abstract method `_createSVG` called."); + } +} +exports.BaseSVGFactory = BaseSVGFactory; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MurmurHash3_64 = void 0; +var _util = __w_pdfjs_require__(1); +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + update(input) { + let data, length; + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); + } + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, + C2 = 0x1b873593; + const C1_LOW = C1 & MASK_LOW, + C2_LOW = C2 & MASK_LOW; + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; + } + } + k1 = 0; + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; + } + } + this.h1 = h1; + this.h2 = h2; + } + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).padStart(8, "0"); + } +} +exports.MurmurHash3_64 = MurmurHash3_64; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontLoader = exports.FontFaceObject = void 0; +var _util = __w_pdfjs_require__(1); +var _is_node = __w_pdfjs_require__(10); +class FontLoader { + #systemFonts = new Set(); + constructor({ + ownerDocument = globalThis.document, + styleElement = null + }) { + this._document = ownerDocument; + this.nativeFontFaces = new Set(); + this.styleElement = null; + this.loadingRequests = []; + this.loadTestFontId = 0; + } + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.add(nativeFontFace); + this._document.fonts.add(nativeFontFace); + } + removeNativeFontFace(nativeFontFace) { + this.nativeFontFaces.delete(nativeFontFace); + this._document.fonts.delete(nativeFontFace); + } + insertRule(rule) { + if (!this.styleElement) { + this.styleElement = this._document.createElement("style"); + this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement); + } + const styleSheet = this.styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + this.nativeFontFaces.clear(); + this.#systemFonts.clear(); + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + async loadSystemFont(info) { + if (!info || this.#systemFonts.has(info.loadedName)) { + return; + } + (0, _util.assert)(!this.disableFontFace, "loadSystemFont shouldn't be called when `disableFontFace` is set."); + if (this.isFontLoadingAPISupported) { + const { + loadedName, + src, + style + } = info; + const fontFace = new FontFace(loadedName, src, style); + this.addNativeFontFace(fontFace); + try { + await fontFace.load(); + this.#systemFonts.add(loadedName); + } catch { + (0, _util.warn)(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`); + this.removeNativeFontFace(fontFace); + } + return; + } + (0, _util.unreachable)("Not implemented: loadSystemFont without the Font Loading API."); + } + async bind(font) { + if (font.attached || font.missingFile && !font.systemFontInfo) { + return; + } + font.attached = true; + if (font.systemFontInfo) { + await this.loadSystemFont(font.systemFontInfo); + return; + } + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + try { + await nativeFontFace.loaded; + } catch (ex) { + (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); + font.disableFontFace = true; + throw ex; + } + } + return; + } + const rule = font.createFontFaceRule(); + if (rule) { + this.insertRule(rule); + if (this.isSyncFontLoadingSupported) { + return; + } + await new Promise(resolve => { + const request = this._queueLoadingCallback(resolve); + this._prepareFontLoadEvent(font, request); + }); + } + } + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + get isSyncFontLoadingSupported() { + let supported = false; + if (_is_node.isNodeJS) { + supported = true; + } else if (typeof navigator !== "undefined" && /Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent)) { + supported = true; + } + return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); + } + _queueLoadingCallback(callback) { + function completeRequest() { + (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + while (loadingRequests.length > 0 && loadingRequests[0].done) { + const otherRequest = loadingRequests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + const { + loadingRequests + } = this; + const request = { + done: false, + complete: completeRequest, + callback + }; + loadingRequests.push(request); + return request; + } + get _loadTestFont() { + const testFont = atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); + return (0, _util.shadow)(this, "_loadTestFont", testFont); + } + _prepareFontLoadEvent(font, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + function spliceString(s, offset, remove, insert) { + const chunk1 = s.substring(0, offset); + const chunk2 = s.substring(offset + remove); + return chunk1 + insert + chunk2; + } + let i, ii; + const canvas = this._document.createElement("canvas"); + canvas.width = 1; + canvas.height = 1; + const ctx = canvas.getContext("2d"); + let called = 0; + function isFontReady(name, callback) { + if (++called > 30) { + (0, _util.warn)("Load test font never loaded."); + callback(); + return; + } + ctx.font = "30px " + name; + ctx.fillText(".", 0, 20); + const imageData = ctx.getImageData(0, 0, 1, 1); + if (imageData.data[3] > 0) { + callback(); + return; + } + setTimeout(isFontReady.bind(null, name, callback)); + } + const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; + let data = this._loadTestFont; + const COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + const CFF_CHECKSUM_OFFSET = 16; + const XXXX_VALUE = 0x58585858; + let checksum = int32(data, CFF_CHECKSUM_OFFSET); + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; + } + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + const div = this._document.createElement("div"); + div.style.visibility = "hidden"; + div.style.width = div.style.height = "10px"; + div.style.position = "absolute"; + div.style.top = div.style.left = "0px"; + for (const name of [font.loadedName, loadTestFontId]) { + const span = this._document.createElement("span"); + span.textContent = "Hi"; + span.style.fontFamily = name; + div.append(span); + } + this._document.body.append(div); + isFontReady(loadTestFontId, () => { + div.remove(); + request.complete(); + }); + } +} +exports.FontLoader = FontLoader; +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + inspectFont = null + }) { + this.compiledGlyphs = Object.create(null); + for (const i in translatedData) { + this[i] = translatedData[i]; + } + this.isEvalSupported = isEvalSupported !== false; + this.disableFontFace = disableFontFace === true; + this.ignoreErrors = ignoreErrors === true; + this._inspectFont = inspectFont; + } + createNativeFontFace() { + if (!this.data || this.disableFontFace) { + return null; + } + let nativeFontFace; + if (!this.cssFontInfo) { + nativeFontFace = new FontFace(this.loadedName, this.data, {}); + } else { + const css = { + weight: this.cssFontInfo.fontWeight + }; + if (this.cssFontInfo.italicAngle) { + css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; + } + nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); + } + this._inspectFont?.(this); + return nativeFontFace; + } + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + const data = (0, _util.bytesToString)(this.data); + const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + let rule; + if (!this.cssFontInfo) { + rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; + } else { + let css = `font-weight: ${this.cssFontInfo.fontWeight};`; + if (this.cssFontInfo.italicAngle) { + css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; + } + rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; + } + this._inspectFont?.(this, url); + return rule; + } + getPathGenerator(objs, character) { + if (this.compiledGlyphs[character] !== undefined) { + return this.compiledGlyphs[character]; + } + let cmds; + try { + cmds = objs.get(this.loadedName + "_path_" + character); + } catch (ex) { + if (!this.ignoreErrors) { + throw ex; + } + (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) { + const jsBuf = []; + for (const current of cmds) { + const args = current.args !== undefined ? current.args.join(",") : ""; + jsBuf.push("c.", current.cmd, "(", args, ");\n"); + } + return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); + } + return this.compiledGlyphs[character] = function (c, size) { + for (const current of cmds) { + if (current.cmd === "scale") { + current.args = [size, -size]; + } + c[current.cmd].apply(c, current.args); + } + }; + } +} +exports.FontFaceObject = FontFaceObject; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CanvasGraphics = void 0; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +var _pattern_helper = __w_pdfjs_require__(12); +var _image_utils = __w_pdfjs_require__(13); +var _is_node = __w_pdfjs_require__(10); +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const EXECUTION_TIME = 15; +const EXECUTION_STEPS = 10; +const MAX_SIZE_TO_COMPILE = 1000; +const FULL_CHUNK_HEIGHT = 16; +function mirrorContextOperations(ctx, destCtx) { + if (ctx._removeMirroring) { + throw new Error("Context is already forwarding operations."); + } + ctx.__originalSave = ctx.save; + ctx.__originalRestore = ctx.restore; + ctx.__originalRotate = ctx.rotate; + ctx.__originalScale = ctx.scale; + ctx.__originalTranslate = ctx.translate; + ctx.__originalTransform = ctx.transform; + ctx.__originalSetTransform = ctx.setTransform; + ctx.__originalResetTransform = ctx.resetTransform; + ctx.__originalClip = ctx.clip; + ctx.__originalMoveTo = ctx.moveTo; + ctx.__originalLineTo = ctx.lineTo; + ctx.__originalBezierCurveTo = ctx.bezierCurveTo; + ctx.__originalRect = ctx.rect; + ctx.__originalClosePath = ctx.closePath; + ctx.__originalBeginPath = ctx.beginPath; + ctx._removeMirroring = () => { + ctx.save = ctx.__originalSave; + ctx.restore = ctx.__originalRestore; + ctx.rotate = ctx.__originalRotate; + ctx.scale = ctx.__originalScale; + ctx.translate = ctx.__originalTranslate; + ctx.transform = ctx.__originalTransform; + ctx.setTransform = ctx.__originalSetTransform; + ctx.resetTransform = ctx.__originalResetTransform; + ctx.clip = ctx.__originalClip; + ctx.moveTo = ctx.__originalMoveTo; + ctx.lineTo = ctx.__originalLineTo; + ctx.bezierCurveTo = ctx.__originalBezierCurveTo; + ctx.rect = ctx.__originalRect; + ctx.closePath = ctx.__originalClosePath; + ctx.beginPath = ctx.__originalBeginPath; + delete ctx._removeMirroring; + }; + ctx.save = function ctxSave() { + destCtx.save(); + this.__originalSave(); + }; + ctx.restore = function ctxRestore() { + destCtx.restore(); + this.__originalRestore(); + }; + ctx.translate = function ctxTranslate(x, y) { + destCtx.translate(x, y); + this.__originalTranslate(x, y); + }; + ctx.scale = function ctxScale(x, y) { + destCtx.scale(x, y); + this.__originalScale(x, y); + }; + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + destCtx.transform(a, b, c, d, e, f); + this.__originalTransform(a, b, c, d, e, f); + }; + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + destCtx.setTransform(a, b, c, d, e, f); + this.__originalSetTransform(a, b, c, d, e, f); + }; + ctx.resetTransform = function ctxResetTransform() { + destCtx.resetTransform(); + this.__originalResetTransform(); + }; + ctx.rotate = function ctxRotate(angle) { + destCtx.rotate(angle); + this.__originalRotate(angle); + }; + ctx.clip = function ctxRotate(rule) { + destCtx.clip(rule); + this.__originalClip(rule); + }; + ctx.moveTo = function (x, y) { + destCtx.moveTo(x, y); + this.__originalMoveTo(x, y); + }; + ctx.lineTo = function (x, y) { + destCtx.lineTo(x, y); + this.__originalLineTo(x, y); + }; + ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { + destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + }; + ctx.rect = function (x, y, width, height) { + destCtx.rect(x, y, width, height); + this.__originalRect(x, y, width, height); + }; + ctx.closePath = function () { + destCtx.closePath(); + this.__originalClosePath(); + }; + ctx.beginPath = function () { + destCtx.beginPath(); + this.__originalBeginPath(); + }; +} +class CachedCanvases { + constructor(canvasFactory) { + this.canvasFactory = canvasFactory; + this.cache = Object.create(null); + } + getCanvas(id, width, height) { + let canvasEntry; + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; + } + return canvasEntry; + } + delete(id) { + delete this.cache[id]; + } + clear() { + for (const id in this.cache) { + const canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } +} +function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) { + const [a, b, c, d, tx, ty] = (0, _display_utils.getCurrentTransform)(ctx); + if (b === 0 && c === 0) { + const tlX = destX * a + tx; + const rTlX = Math.round(tlX); + const tlY = destY * d + ty; + const rTlY = Math.round(tlY); + const brX = (destX + destW) * a + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destY + destH) * d + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight); + ctx.setTransform(a, b, c, d, tx, ty); + return [rWidth, rHeight]; + } + if (a === 0 && d === 0) { + const tlX = destY * c + tx; + const rTlX = Math.round(tlX); + const tlY = destX * b + ty; + const rTlY = Math.round(tlY); + const brX = (destY + destH) * c + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destX + destW) * b + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth); + ctx.setTransform(a, b, c, d, tx, ty); + return [rHeight, rWidth]; + } + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH); + const scaleX = Math.hypot(a, b); + const scaleY = Math.hypot(c, d); + return [scaleX * destW, scaleY * destH]; +} +function compileType3Glyph(imgData) { + const { + width, + height + } = imgData; + if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { + return null; + } + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width1 = width + 1; + let points = new Uint8Array(width1 * (height + 1)); + let i, j, j0; + const lineSize = width + 7 & ~7; + let data = new Uint8Array(lineSize * height), + pos = 0; + for (const elem of imgData.data) { + let mask = 128; + while (mask > 0) { + data[pos++] = elem & mask ? 0 : 255; + mask >>= 1; + } + } + let count = 0; + pos = 0; + if (data[pos] !== 0) { + points[0] = 1; + ++count; + } + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j] = data[pos] ? 2 : 1; + ++count; + } + pos++; + } + if (data[pos] !== 0) { + points[j] = 2; + ++count; + } + for (i = 1; i < height; i++) { + pos = i * lineSize; + j0 = i * width1; + if (data[pos - lineSize] !== data[pos]) { + points[j0] = data[pos] ? 1 : 8; + ++count; + } + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + for (j = 1; j < width; j++) { + sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); + if (POINT_TYPES[sum]) { + points[j0 + j] = POINT_TYPES[sum]; + ++count; + } + pos++; + } + if (data[pos - lineSize] !== data[pos]) { + points[j0 + j] = data[pos] ? 2 : 4; + ++count; + } + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + } + pos = lineSize * (height - 1); + j0 = i * width1; + if (data[pos] !== 0) { + points[j0] = 8; + ++count; + } + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j0 + j] = data[pos] ? 4 : 8; + ++count; + } + pos++; + } + if (data[pos] !== 0) { + points[j0 + j] = 4; + ++count; + } + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const path = new Path2D(); + for (i = 0; count && i <= height; i++) { + let p = i * width1; + const end = p + width; + while (p < end && !points[p]) { + p++; + } + if (p === end) { + continue; + } + path.moveTo(p % width1, i); + const p0 = p; + let type = points[p]; + do { + const step = steps[type]; + do { + p += step; + } while (!points[p]); + const pp = points[p]; + if (pp !== 5 && pp !== 10) { + type = pp; + points[p] = 0; + } else { + type = pp & 0x33 * type >> 4; + points[p] &= type >> 2 | type << 2; + } + path.lineTo(p % width1, p / width1 | 0); + if (!points[p]) { + --count; + } + } while (p0 !== p); + --i; + } + data = null; + points = null; + const drawOutline = function (c) { + c.save(); + c.scale(1 / width, -1 / height); + c.translate(0, -height); + c.fill(path); + c.beginPath(); + c.restore(); + }; + return drawOutline; +} +class CanvasExtraState { + constructor(width, height) { + this.alphaIsShape = false; + this.fontSize = 0; + this.fontSizeScale = 1; + this.textMatrix = _util.IDENTITY_MATRIX; + this.textMatrixScale = 1; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textRise = 0; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; + this.patternFill = false; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.activeSMask = null; + this.transferMaps = "none"; + this.startNewPathAndClipBox([0, 0, width, height]); + } + clone() { + const clone = Object.create(this); + clone.clipBox = this.clipBox.slice(); + return clone; + } + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + updatePathMinMax(transform, x, y) { + [x, y] = _util.Util.applyTransform([x, y], transform); + this.minX = Math.min(this.minX, x); + this.minY = Math.min(this.minY, y); + this.maxX = Math.max(this.maxX, x); + this.maxY = Math.max(this.maxY, y); + } + updateRectMinMax(transform, rect) { + const p1 = _util.Util.applyTransform(rect, transform); + const p2 = _util.Util.applyTransform(rect.slice(2), transform); + this.minX = Math.min(this.minX, p1[0], p2[0]); + this.minY = Math.min(this.minY, p1[1], p2[1]); + this.maxX = Math.max(this.maxX, p1[0], p2[0]); + this.maxY = Math.max(this.maxY, p1[1], p2[1]); + } + updateScalingPathMinMax(transform, minMax) { + _util.Util.scaleMinMax(transform, minMax); + this.minX = Math.min(this.minX, minMax[0]); + this.maxX = Math.max(this.maxX, minMax[1]); + this.minY = Math.min(this.minY, minMax[2]); + this.maxY = Math.max(this.maxY, minMax[3]); + } + updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) { + const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3); + if (minMax) { + minMax[0] = Math.min(minMax[0], box[0], box[2]); + minMax[1] = Math.max(minMax[1], box[0], box[2]); + minMax[2] = Math.min(minMax[2], box[1], box[3]); + minMax[3] = Math.max(minMax[3], box[1], box[3]); + return; + } + this.updateRectMinMax(transform, box); + } + getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + const box = [this.minX, this.minY, this.maxX, this.maxY]; + if (pathType === _pattern_helper.PathType.STROKE) { + if (!transform) { + (0, _util.unreachable)("Stroke bounding box must include transform."); + } + const scale = _util.Util.singularValueDecompose2dScale(transform); + const xStrokePad = scale[0] * this.lineWidth / 2; + const yStrokePad = scale[1] * this.lineWidth / 2; + box[0] -= xStrokePad; + box[1] -= yStrokePad; + box[2] += xStrokePad; + box[3] += yStrokePad; + } + return box; + } + updateClipFromPath() { + const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox()); + this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]); + } + isEmptyClip() { + return this.minX === Infinity; + } + startNewPathAndClipBox(box) { + this.clipBox = box; + this.minX = Infinity; + this.minY = Infinity; + this.maxX = 0; + this.maxY = 0; + } + getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); + } +} +function putBinaryImageData(ctx, imgData) { + if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, + destPos; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + const white = 0xffffffff; + const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + for (j = 0; j < thisChunkHeight; j++) { + const srcDiff = srcLength - srcPos; + let k = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; + for (; k < kEndUnrolled; k += 8) { + srcByte = src[srcPos++]; + dest32[destPos++] = srcByte & 128 ? white : black; + dest32[destPos++] = srcByte & 64 ? white : black; + dest32[destPos++] = srcByte & 32 ? white : black; + dest32[destPos++] = srcByte & 16 ? white : black; + dest32[destPos++] = srcByte & 8 ? white : black; + dest32[destPos++] = srcByte & 4 ? white : black; + dest32[destPos++] = srcByte & 2 ? white : black; + dest32[destPos++] = srcByte & 1 ? white : black; + } + for (; k < kEnd; k++) { + if (mask === 0) { + srcByte = src[srcPos++]; + mask = 128; + } + dest32[destPos++] = srcByte & mask ? white : black; + mask >>= 1; + } + } + while (destPos < dest32DataLength) { + dest32[destPos++] = 0; + } + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + thisChunkHeight = FULL_CHUNK_HEIGHT; + elemsInThisChunk = width * thisChunkHeight; + for (i = 0; i < totalChunks; i++) { + if (i >= fullChunks) { + thisChunkHeight = partialChunkHeight; + elemsInThisChunk = width * thisChunkHeight; + } + destPos = 0; + for (j = elemsInThisChunk; j--;) { + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = 255; + } + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error(`bad image kind: ${imgData.kind}`); + } +} +function putBinaryImageMask(ctx, imgData) { + if (imgData.bitmap) { + ctx.drawImage(imgData.bitmap, 0, 0); + return; + } + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + ({ + srcPos + } = (0, _image_utils.convertBlackAndWhiteToRGBA)({ + src, + srcPos, + dest, + width, + height: thisChunkHeight, + nonBlackColor: 0 + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font", "filter"]; + for (const property of properties) { + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } +} +function resetCtxToDefault(ctx) { + ctx.strokeStyle = ctx.fillStyle = "#000000"; + ctx.fillRule = "nonzero"; + ctx.globalAlpha = 1; + ctx.lineWidth = 1; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 10; + ctx.globalCompositeOperation = "source-over"; + ctx.font = "10px sans-serif"; + if (ctx.setLineDash !== undefined) { + ctx.setLineDash([]); + ctx.lineDashOffset = 0; + } + if (!_is_node.isNodeJS) { + ctx.filter = "none"; + } +} +function composeSMaskBackdrop(bytes, r0, g0, b0) { + const length = bytes.length; + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + const alpha_ = 255 - alpha; + bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; + bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; + bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; + } + } +} +function composeSMaskAlpha(maskData, layerData, transferMap) { + const length = maskData.length; + const scale = 1 / 255; + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } +} +function composeSMaskLuminosity(maskData, layerData, transferMap) { + const length = maskData.length; + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; + } +} +function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) { + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; + if (subtype === "Luminosity") { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight); + const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight); + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + composeFn(maskData.data, layerData.data, transferMap); + layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY); + } +} +function composeSMask(ctx, smask, layerCtx, layerBox) { + const layerOffsetX = layerBox[0]; + const layerOffsetY = layerBox[1]; + const layerWidth = layerBox[2] - layerOffsetX; + const layerHeight = layerBox[3] - layerOffsetY; + if (layerWidth === 0 || layerHeight === 0) { + return; + } + genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY); + ctx.save(); + ctx.globalAlpha = 1; + ctx.globalCompositeOperation = "source-over"; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(layerCtx.canvas, 0, 0); + ctx.restore(); +} +function getImageSmoothingEnabled(transform, interpolate) { + const scale = _util.Util.singularValueDecompose2dScale(transform); + scale[0] = Math.fround(scale[0]); + scale[1] = Math.fround(scale[1]); + const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + if (interpolate !== undefined) { + return interpolate; + } else if (scale[0] <= actualScale || scale[1] <= actualScale) { + return true; + } + return false; +} +const LINE_CAP_STYLES = ["butt", "round", "square"]; +const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; +const NORMAL_CLIP = {}; +const EO_CLIP = {}; +class CanvasGraphics { + constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, { + optionalContentConfig, + markedContentStack = null + }, annotationCanvasMap, pageColors) { + this.ctx = canvasCtx; + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.stateStack = []; + this.pendingClip = null; + this.pendingEOFill = false; + this.res = null; + this.xobjs = null; + this.commonObjs = commonObjs; + this.objs = objs; + this.canvasFactory = canvasFactory; + this.filterFactory = filterFactory; + this.groupStack = []; + this.processingType3 = null; + this.baseTransform = null; + this.baseTransformStack = []; + this.groupLevel = 0; + this.smaskStack = []; + this.smaskCounter = 0; + this.tempSMask = null; + this.suspendedCtx = null; + this.contentVisible = true; + this.markedContentStack = markedContentStack || []; + this.optionalContentConfig = optionalContentConfig; + this.cachedCanvases = new CachedCanvases(this.canvasFactory); + this.cachedPatterns = new Map(); + this.annotationCanvasMap = annotationCanvasMap; + this.viewportScale = 1; + this.outputScaleX = 1; + this.outputScaleY = 1; + this.pageColors = pageColors; + this._cachedScaleForStroking = [-1, 0]; + this._cachedGetSinglePixelWidth = null; + this._cachedBitmapsMap = new Map(); + } + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } + return fallback; + } + beginDrawing({ + transform, + viewport, + transparency = false, + background = null + }) { + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + const savedFillStyle = this.ctx.fillStyle; + this.ctx.fillStyle = background || "#ffffff"; + this.ctx.fillRect(0, 0, width, height); + this.ctx.fillStyle = savedFillStyle; + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; + this.ctx.save(); + this.ctx.transform(...(0, _display_utils.getCurrentTransform)(this.compositeCtx)); + } + this.ctx.save(); + resetCtxToDefault(this.ctx); + if (transform) { + this.ctx.transform(...transform); + this.outputScaleX = transform[0]; + this.outputScaleY = transform[0]; + } + this.ctx.transform(...viewport.transform); + this.viewportScale = viewport.scale; + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); + } + executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; + if (argsArrayLen === i) { + return i; + } + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; + while (true) { + if (stepper !== undefined && i === stepper.nextBreakPoint) { + stepper.breakIt(i, continueCallback); + return i; + } + fnId = fnArray[i]; + if (fnId !== _util.OPS.dependency) { + this[fnId].apply(this, argsArray[i]); + } else { + for (const depObjId of argsArray[i]) { + const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; + if (!objsPool.has(depObjId)) { + objsPool.get(depObjId, continueCallback); + return i; + } + } + } + i++; + if (i === argsArrayLen) { + return i; + } + if (chunkOperations && ++steps > EXECUTION_STEPS) { + if (Date.now() > endTime) { + continueCallback(); + return i; + } + steps = 0; + } + } + } + #restoreInitialState() { + while (this.stateStack.length || this.inSMaskMode) { + this.restore(); + } + this.ctx.restore(); + if (this.transparentCanvas) { + this.ctx = this.compositeCtx; + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.drawImage(this.transparentCanvas, 0, 0); + this.ctx.restore(); + this.transparentCanvas = null; + } + } + endDrawing() { + this.#restoreInitialState(); + this.cachedCanvases.clear(); + this.cachedPatterns.clear(); + for (const cache of this._cachedBitmapsMap.values()) { + for (const canvas of cache.values()) { + if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) { + canvas.width = canvas.height = 0; + } + } + cache.clear(); + } + this._cachedBitmapsMap.clear(); + this.#drawFilter(); + } + #drawFilter() { + if (this.pageColors) { + const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background); + if (hcmFilterId !== "none") { + const savedFilter = this.ctx.filter; + this.ctx.filter = hcmFilterId; + this.ctx.drawImage(this.ctx.canvas, 0, 0); + this.ctx.filter = savedFilter; + } + } + } + _scaleImage(img, inverseTransform) { + const width = img.width; + const height = img.height; + let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); + let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); + let paintWidth = width, + paintHeight = height; + let tmpCanvasId = "prescale1"; + let tmpCanvas, tmpCtx; + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + let newWidth = paintWidth, + newHeight = paintHeight; + if (widthScale > 2 && paintWidth > 1) { + newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + if (heightScale > 2 && paintHeight > 1) { + newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2; + heightScale /= paintHeight / newHeight; + } + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); + tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, newWidth, newHeight); + tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + img = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; + } + return { + img, + paintWidth, + paintHeight + }; + } + _createMaskCanvas(img) { + const ctx = this.ctx; + const { + width, + height + } = img; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + let cache, cacheKey, scaled, maskCanvas; + if ((img.bitmap || img.data) && img.count > 1) { + const mainKey = img.bitmap || img.data.buffer; + cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]); + cache = this._cachedBitmapsMap.get(mainKey); + if (!cache) { + cache = new Map(); + this._cachedBitmapsMap.set(mainKey, cache); + } + const cachedImage = cache.get(cacheKey); + if (cachedImage && !isPatternFill) { + const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]); + const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]); + return { + canvas: cachedImage, + offsetX, + offsetY + }; + } + scaled = cachedImage; + } + if (!scaled) { + maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + putBinaryImageMask(maskCanvas.context, img); + } + let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]); + maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); + const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); + const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); + const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); + const drawnWidth = Math.round(rect[2] - rect[0]) || 1; + const drawnHeight = Math.round(rect[3] - rect[1]) || 1; + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight); + const fillCtx = fillCanvas.context; + const offsetX = Math.min(cord1[0], cord2[0]); + const offsetY = Math.min(cord1[1], cord2[1]); + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform(...maskToCanvas); + if (!scaled) { + scaled = this._scaleImage(maskCanvas.canvas, (0, _display_utils.getCurrentTransformInverse)(fillCtx)); + scaled = scaled.img; + if (cache && isPatternFill) { + cache.set(cacheKey, scaled); + } + } + fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(fillCtx), img.interpolate); + drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + const inverse = _util.Util.transform((0, _display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]); + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor; + fillCtx.fillRect(0, 0, width, height); + if (cache && !isPatternFill) { + this.cachedCanvases.delete("fillCanvas"); + cache.set(cacheKey, fillCanvas.canvas); + } + return { + canvas: fillCanvas.canvas, + offsetX: Math.round(offsetX), + offsetY: Math.round(offsetY) + }; + } + setLineWidth(width) { + if (width !== this.current.lineWidth) { + this._cachedScaleForStroking[0] = -1; + } + this.current.lineWidth = width; + this.ctx.lineWidth = width; + } + setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + } + setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + } + setMiterLimit(limit) { + this.ctx.miterLimit = limit; + } + setDash(dashArray, dashPhase) { + const ctx = this.ctx; + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + } + setRenderingIntent(intent) {} + setFlatness(flatness) {} + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + case "LC": + this.setLineCap(value); + break; + case "LJ": + this.setLineJoin(value); + break; + case "ML": + this.setMiterLimit(value); + break; + case "D": + this.setDash(value[0], value[1]); + break; + case "RI": + this.setRenderingIntent(value); + break; + case "FL": + this.setFlatness(value); + break; + case "Font": + this.setFont(value[0], value[1]); + break; + case "CA": + this.current.strokeAlpha = value; + break; + case "ca": + this.current.fillAlpha = value; + this.ctx.globalAlpha = value; + break; + case "BM": + this.ctx.globalCompositeOperation = value; + break; + case "SMask": + this.current.activeSMask = value ? this.tempSMask : null; + this.tempSMask = null; + this.checkSMaskState(); + break; + case "TR": + this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value); + break; + } + } + } + get inSMaskMode() { + return !!this.suspendedCtx; + } + checkSMaskState() { + const inSMaskMode = this.inSMaskMode; + if (this.current.activeSMask && !inSMaskMode) { + this.beginSMaskMode(); + } else if (!this.current.activeSMask && inSMaskMode) { + this.endSMaskMode(); + } + } + beginSMaskMode() { + if (this.inSMaskMode) { + throw new Error("beginSMaskMode called while already in smask mode"); + } + const drawnWidth = this.ctx.canvas.width; + const drawnHeight = this.ctx.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + this.suspendedCtx = this.ctx; + this.ctx = scratchCanvas.context; + const ctx = this.ctx; + ctx.setTransform(...(0, _display_utils.getCurrentTransform)(this.suspendedCtx)); + copyCtxState(this.suspendedCtx, ctx); + mirrorContextOperations(ctx, this.suspendedCtx); + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + } + endSMaskMode() { + if (!this.inSMaskMode) { + throw new Error("endSMaskMode called while not in smask mode"); + } + this.ctx._removeMirroring(); + copyCtxState(this.ctx, this.suspendedCtx); + this.ctx = this.suspendedCtx; + this.suspendedCtx = null; + } + compose(dirtyBox) { + if (!this.current.activeSMask) { + return; + } + if (!dirtyBox) { + dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height]; + } else { + dirtyBox[0] = Math.floor(dirtyBox[0]); + dirtyBox[1] = Math.floor(dirtyBox[1]); + dirtyBox[2] = Math.ceil(dirtyBox[2]); + dirtyBox[3] = Math.ceil(dirtyBox[3]); + } + const smask = this.current.activeSMask; + const suspendedCtx = this.suspendedCtx; + composeSMask(suspendedCtx, smask, this.ctx, dirtyBox); + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); + this.ctx.restore(); + } + save() { + if (this.inSMaskMode) { + copyCtxState(this.ctx, this.suspendedCtx); + this.suspendedCtx.save(); + } else { + this.ctx.save(); + } + const old = this.current; + this.stateStack.push(old); + this.current = old.clone(); + } + restore() { + if (this.stateStack.length === 0 && this.inSMaskMode) { + this.endSMaskMode(); + } + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + if (this.inSMaskMode) { + this.suspendedCtx.restore(); + copyCtxState(this.suspendedCtx, this.ctx); + } else { + this.ctx.restore(); + } + this.checkSMaskState(); + this.pendingClip = null; + this._cachedScaleForStroking[0] = -1; + this._cachedGetSinglePixelWidth = null; + } + } + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking[0] = -1; + this._cachedGetSinglePixelWidth = null; + } + constructPath(ops, args, minMax) { + const ctx = this.ctx; + const current = this.current; + let x = current.x, + y = current.y; + let startX, startY; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0; + const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null; + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); + } + if (!isScalingMatrix) { + current.updateRectMinMax(currentTransform, [x, y, xw, yh]); + } + ctx.closePath(); + break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + break; + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + break; + case _util.OPS.curveTo: + startX = x; + startY = y; + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier); + j += 6; + break; + case _util.OPS.curveTo2: + startX = x; + startY = y; + ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); + current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + case _util.OPS.curveTo3: + startX = x; + startY = y; + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier); + j += 4; + break; + case _util.OPS.closePath: + ctx.closePath(); + break; + } + } + if (isScalingMatrix) { + current.updateScalingPathMinMax(currentTransform, minMaxForBezier); + } + current.setCurrentPoint(x, y); + } + closePath() { + this.ctx.closePath(); + } + stroke(consumePath = true) { + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; + ctx.globalAlpha = this.current.strokeAlpha; + if (this.contentVisible) { + if (typeof strokeColor === "object" && strokeColor?.getPattern) { + ctx.save(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE); + this.rescaleAndStroke(false); + ctx.restore(); + } else { + this.rescaleAndStroke(true); + } + } + if (consumePath) { + this.consumePath(this.current.getClippedPathBoundingBox()); + } + ctx.globalAlpha = this.current.fillAlpha; + } + closeStroke() { + this.closePath(); + this.stroke(); + } + fill(consumePath = true) { + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; + if (isPatternFill) { + ctx.save(); + ctx.fillStyle = fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + needRestore = true; + } + const intersect = this.current.getClippedPathBoundingBox(); + if (this.contentVisible && intersect !== null) { + if (this.pendingEOFill) { + ctx.fill("evenodd"); + this.pendingEOFill = false; + } else { + ctx.fill(); + } + } + if (needRestore) { + ctx.restore(); + } + if (consumePath) { + this.consumePath(intersect); + } + } + eoFill() { + this.pendingEOFill = true; + this.fill(); + } + fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + } + eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + } + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + } + endPath() { + this.consumePath(); + } + clip() { + this.pendingClip = NORMAL_CLIP; + } + eoClip() { + this.pendingClip = EO_CLIP; + } + beginText() { + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.textMatrixScale = 1; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + endText() { + const paths = this.pendingTextPaths; + const ctx = this.ctx; + if (paths === undefined) { + ctx.beginPath(); + return; + } + ctx.save(); + ctx.beginPath(); + for (const path of paths) { + ctx.setTransform(...path.transform); + ctx.translate(path.x, path.y); + path.addToPath(ctx, path.fontSize); + } + ctx.restore(); + ctx.clip(); + ctx.beginPath(); + delete this.pendingTextPaths; + } + setCharSpacing(spacing) { + this.current.charSpacing = spacing; + } + setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + } + setHScale(scale) { + this.current.textHScale = scale / 100; + } + setLeading(leading) { + this.current.leading = -leading; + } + setFont(fontRefName, size) { + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; + if (!fontObj) { + throw new Error(`Can't find font for ${fontRefName}`); + } + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { + (0, _util.warn)("Invalid font matrix for font " + fontRefName); + } + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + this.current.font = fontObj; + this.current.fontSize = size; + if (fontObj.isType3Font) { + return; + } + const name = fontObj.loadedName || "sans-serif"; + const typeface = fontObj.systemFontInfo?.css || `"${name}", ${fontObj.fallbackName}`; + let bold = "normal"; + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + const italic = fontObj.italic ? "italic" : "normal"; + let browserFontSize = size; + if (size < MIN_FONT_SIZE) { + browserFontSize = MIN_FONT_SIZE; + } else if (size > MAX_FONT_SIZE) { + browserFontSize = MAX_FONT_SIZE; + } + this.current.fontSizeScale = size / browserFontSize; + this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; + } + setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + } + setTextRise(rise) { + this.current.textRise = rise; + } + moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + } + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.hypot(a, b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + nextLine() { + this.moveText(0, this.current.leading); + } + paintChar(character, x, y, patternTransform) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + const patternFill = current.patternFill && !font.missingFile; + let addToPath; + if (font.disableFontFace || isAddToPathSet || patternFill) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + if (font.disableFontFace || patternFill) { + ctx.save(); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + if (patternTransform) { + ctx.setTransform(...patternTransform); + } + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); + } + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.stroke(); + } + ctx.restore(); + } else { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fillText(character, x, y); + } + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.strokeText(character, x, y); + } + } + if (isAddToPathSet) { + const paths = this.pendingTextPaths ||= []; + paths.push({ + transform: (0, _display_utils.getCurrentTransform)(ctx), + x, + y, + fontSize, + addToPath + }); + } + } + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10); + ctx.scale(1.5, 1); + ctx.fillText("I", 0, 10); + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; + for (let i = 3; i < data.length; i += 4) { + if (data[i] > 0 && data[i] < 255) { + enabled = true; + break; + } + } + return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); + } + showText(glyphs) { + const current = this.current; + const font = current.font; + if (font.isType3Font) { + return this.showType3Text(glyphs); + } + const fontSize = current.fontSize; + if (fontSize === 0) { + return undefined; + } + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } + let patternTransform; + if (current.patternFill) { + ctx.save(); + const pattern = current.fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + patternTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.restore(); + ctx.fillStyle = pattern; + } + let lineWidth = current.lineWidth; + const scale = current.textMatrixScale; + if (scale === 0 || lineWidth === 0) { + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + lineWidth = this.getSinglePixelWidth(); + } + } else { + lineWidth /= scale; + } + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + ctx.lineWidth = lineWidth; + if (font.isInvalidPDFjsFont) { + const chars = []; + let width = 0; + for (const glyph of glyphs) { + chars.push(glyph.unicode); + width += glyph.width; + } + ctx.fillText(chars.join(""), 0, 0); + current.x += width * widthAdvanceScale * textHScale; + ctx.restore(); + this.compose(); + return undefined; + } + let x = 0, + i; + for (i = 0; i < glyphsLength; ++i) { + const glyph = glyphs[i]; + if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; + if (vertical) { + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + if (font.remeasure && width > 0) { + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + const characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } + } + if (this.contentVisible && (glyph.isInFont || font.missingFile)) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY, patternTransform); + if (accent) { + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); + } + } + } + let charWidth; + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + x += charWidth; + if (restoreNeeded) { + ctx.restore(); + } + } + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + ctx.restore(); + this.compose(); + return undefined; + } + showType3Text(glyphs) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; + if (isTextInvisible || fontSize === 0) { + return; + } + this._cachedScaleForStroking[0] = -1; + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y); + ctx.scale(textHScale, fontDirection); + for (i = 0; i < glyphsLength; ++i) { + glyph = glyphs[i]; + if (typeof glyph === "number") { + spacingLength = spacingDir * glyph * fontSize / 1000; + this.ctx.translate(spacingLength, 0); + current.x += spacingLength * textHScale; + continue; + } + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; + if (!operatorList) { + (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); + continue; + } + if (this.contentVisible) { + this.processingType3 = glyph; + this.save(); + ctx.scale(fontSize, fontSize); + ctx.transform(...fontMatrix); + this.executeOperatorList(operatorList); + this.restore(); + } + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + width = transformed[0] * fontSize + spacing; + ctx.translate(width, 0); + current.x += width * textHScale; + } + ctx.restore(); + this.processingType3 = null; + } + setCharWidth(xWidth, yWidth) {} + setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.ctx.clip(); + this.endPath(); + } + getColorN_Pattern(IR) { + let pattern; + if (IR[0] === "TilingPattern") { + const color = IR[1]; + const baseTransform = this.baseTransform || (0, _display_utils.getCurrentTransform)(this.ctx); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, { + optionalContentConfig: this.optionalContentConfig, + markedContentStack: this.markedContentStack + }); + } + }; + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + } else { + pattern = this._getPattern(IR[1], IR[2]); + } + return pattern; + } + setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + } + setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + } + setStrokeRGBColor(r, g, b) { + const color = _util.Util.makeHexColor(r, g, b); + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + setFillRGBColor(r, g, b) { + const color = _util.Util.makeHexColor(r, g, b); + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + } + _getPattern(objId, matrix = null) { + let pattern; + if (this.cachedPatterns.has(objId)) { + pattern = this.cachedPatterns.get(objId); + } else { + pattern = (0, _pattern_helper.getShadingPattern)(this.getObject(objId)); + this.cachedPatterns.set(objId, pattern); + } + if (matrix) { + pattern.matrix = matrix; + } + return pattern; + } + shadingFill(objId) { + if (!this.contentVisible) { + return; + } + const ctx = this.ctx; + this.save(); + const pattern = this._getPattern(objId); + ctx.fillStyle = pattern.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.SHADING); + const inv = (0, _display_utils.getCurrentTransformInverse)(ctx); + if (inv) { + const { + width, + height + } = ctx.canvas; + const [x0, y0, x1, y1] = _util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv); + this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); + } else { + this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); + } + this.compose(this.current.getClippedPathBoundingBox()); + this.restore(); + } + beginInlineImage() { + (0, _util.unreachable)("Should not call beginInlineImage"); + } + beginImageData() { + (0, _util.unreachable)("Should not call beginImageData"); + } + paintFormXObjectBegin(matrix, bbox) { + if (!this.contentVisible) { + return; + } + this.save(); + this.baseTransformStack.push(this.baseTransform); + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(...matrix); + } + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(this.ctx), bbox); + this.clip(); + this.endPath(); + } + } + paintFormXObjectEnd() { + if (!this.contentVisible) { + return; + } + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + } + beginGroup(group) { + if (!this.contentVisible) { + return; + } + this.save(); + if (this.inSMaskMode) { + this.endSMaskMode(); + this.current.activeSMask = null; + } + const currentCtx = this.ctx; + if (!group.isolated) { + (0, _util.info)("TODO: Support non-isolated groups."); + } + if (group.knockout) { + (0, _util.warn)("Knockout groups not supported."); + } + const currentTransform = (0, _display_utils.getCurrentTransform)(currentCtx); + if (group.matrix) { + currentCtx.transform(...group.matrix); + } + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, (0, _display_utils.getCurrentTransform)(currentCtx)); + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, + scaleY = 1; + if (drawnWidth > MAX_GROUP_SIZE) { + scaleX = drawnWidth / MAX_GROUP_SIZE; + drawnWidth = MAX_GROUP_SIZE; + } + if (drawnHeight > MAX_GROUP_SIZE) { + scaleY = drawnHeight / MAX_GROUP_SIZE; + drawnHeight = MAX_GROUP_SIZE; + } + this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]); + let cacheId = "groupAt" + this.groupLevel; + if (group.smask) { + cacheId += "_smask_" + this.smaskCounter++ % 2; + } + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform(...currentTransform); + if (group.smask) { + this.smaskStack.push({ + canvas: scratchCanvas.canvas, + context: groupCtx, + offsetX, + offsetY, + scaleX, + scaleY, + subtype: group.smask.subtype, + backdrop: group.smask.backdrop, + transferMap: group.smask.transferMap || null, + startTransformInverse: null + }); + } else { + currentCtx.setTransform(1, 0, 0, 1, 0, 0); + currentCtx.translate(offsetX, offsetY); + currentCtx.scale(scaleX, scaleY); + currentCtx.save(); + } + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + } + endGroup(group) { + if (!this.contentVisible) { + return; + } + this.groupLevel--; + const groupCtx = this.ctx; + const ctx = this.groupStack.pop(); + this.ctx = ctx; + this.ctx.imageSmoothingEnabled = false; + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); + this.restore(); + } else { + this.ctx.restore(); + const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx); + this.restore(); + this.ctx.save(); + this.ctx.setTransform(...currentMtx); + const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx); + this.ctx.drawImage(groupCtx.canvas, 0, 0); + this.ctx.restore(); + this.compose(dirtyBox); + } + } + beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { + this.#restoreInitialState(); + resetCtxToDefault(this.ctx); + this.ctx.save(); + this.save(); + if (this.baseTransform) { + this.ctx.setTransform(...this.baseTransform); + } + if (Array.isArray(rect) && rect.length === 4) { + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; + if (hasOwnCanvas && this.annotationCanvasMap) { + transform = transform.slice(); + transform[4] -= rect[0]; + transform[5] -= rect[1]; + rect = rect.slice(); + rect[0] = rect[1] = 0; + rect[2] = width; + rect[3] = height; + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(this.ctx)); + const { + viewportScale + } = this; + const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale); + const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale); + this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight); + const { + canvas, + context + } = this.annotationCanvas; + this.annotationCanvasMap.set(id, canvas); + this.annotationCanvas.savedCtx = this.ctx; + this.ctx = context; + this.ctx.save(); + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + resetCtxToDefault(this.ctx); + } else { + resetCtxToDefault(this.ctx); + this.ctx.rect(rect[0], rect[1], width, height); + this.ctx.clip(); + this.endPath(); + } + } + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.transform(...transform); + this.transform(...matrix); + } + endAnnotation() { + if (this.annotationCanvas) { + this.ctx.restore(); + this.#drawFilter(); + this.ctx = this.annotationCanvas.savedCtx; + delete this.annotationCanvas.savedCtx; + delete this.annotationCanvas; + } + } + paintImageMaskXObject(img) { + if (!this.contentVisible) { + return; + } + const count = img.count; + img = this.getObject(img.data, img); + img.count = count; + const ctx = this.ctx; + const glyph = this.processingType3; + if (glyph) { + if (glyph.compiled === undefined) { + glyph.compiled = compileType3Glyph(img); + } + if (glyph.compiled) { + glyph.compiled(ctx); + return; + } + } + const mask = this._createMaskCanvas(img); + const maskCanvas = mask.canvas; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); + ctx.restore(); + this.compose(); + } + paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) { + if (!this.contentVisible) { + return; + } + img = this.getObject(img.data, img); + const ctx = this.ctx; + ctx.save(); + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + const mask = this._createMaskCanvas(img); + ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]); + for (let i = 0, ii = positions.length; i < ii; i += 2) { + const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); + const [x, y] = _util.Util.applyTransform([0, 0], trans); + ctx.drawImage(mask.canvas, x, y); + } + ctx.restore(); + this.compose(); + } + paintImageMaskXObjectGroup(images) { + if (!this.contentVisible) { + return; + } + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + for (const image of images) { + const { + data, + width, + height, + transform + } = image; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; + maskCtx.save(); + const img = this.getObject(data, image); + putBinaryImageMask(maskCtx, img); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + ctx.save(); + ctx.transform(...transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + this.compose(); + } + paintImageXObject(objId) { + if (!this.contentVisible) { + return; + } + const imgData = this.getObject(objId); + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + this.paintInlineImageXObject(imgData); + } + paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + if (!this.contentVisible) { + return; + } + const imgData = this.getObject(objId); + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + const width = imgData.width; + const height = imgData.height; + const map = []; + for (let i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } + this.paintInlineImageXObjectGroup(imgData, map); + } + applyTransferMapsToCanvas(ctx) { + if (this.current.transferMaps !== "none") { + ctx.filter = this.current.transferMaps; + ctx.drawImage(ctx.canvas, 0, 0); + ctx.filter = "none"; + } + return ctx.canvas; + } + applyTransferMapsToBitmap(imgData) { + if (this.current.transferMaps === "none") { + return imgData.bitmap; + } + const { + bitmap, + width, + height + } = imgData; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + tmpCtx.filter = this.current.transferMaps; + tmpCtx.drawImage(bitmap, 0, 0); + tmpCtx.filter = "none"; + return tmpCanvas.canvas; + } + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + if (!_is_node.isNodeJS) { + ctx.filter = "none"; + } + ctx.scale(1 / width, -1 / height); + let imgToPaint; + if (imgData.bitmap) { + imgToPaint = this.applyTransferMapsToBitmap(imgData); + } else if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData); + imgToPaint = this.applyTransferMapsToCanvas(tmpCtx); + } + const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx)); + ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate); + drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + this.compose(); + this.restore(); + } + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + const ctx = this.ctx; + let imgToPaint; + if (imgData.bitmap) { + imgToPaint = imgData.bitmap; + } else { + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData); + imgToPaint = this.applyTransferMapsToCanvas(tmpCtx); + } + for (const entry of map) { + ctx.save(); + ctx.transform(...entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + ctx.restore(); + } + this.compose(); + } + paintSolidColorImageMask() { + if (!this.contentVisible) { + return; + } + this.ctx.fillRect(0, 0, 1, 1); + this.compose(); + } + markPoint(tag) {} + markPointProps(tag, properties) {} + beginMarkedContent(tag) { + this.markedContentStack.push({ + visible: true + }); + } + beginMarkedContentProps(tag, properties) { + if (tag === "OC") { + this.markedContentStack.push({ + visible: this.optionalContentConfig.isVisible(properties) + }); + } else { + this.markedContentStack.push({ + visible: true + }); + } + this.contentVisible = this.isContentVisible(); + } + endMarkedContent() { + this.markedContentStack.pop(); + this.contentVisible = this.isContentVisible(); + } + beginCompat() {} + endCompat() {} + consumePath(clipBox) { + const isEmpty = this.current.isEmptyClip(); + if (this.pendingClip) { + this.current.updateClipFromPath(); + } + if (!this.pendingClip) { + this.compose(clipBox); + } + const ctx = this.ctx; + if (this.pendingClip) { + if (!isEmpty) { + if (this.pendingClip === EO_CLIP) { + ctx.clip("evenodd"); + } else { + ctx.clip(); + } + } + this.pendingClip = null; + } + this.current.startNewPathAndClipBox(this.current.clipBox); + ctx.beginPath(); + } + getSinglePixelWidth() { + if (!this._cachedGetSinglePixelWidth) { + const m = (0, _display_utils.getCurrentTransform)(this.ctx); + if (m[1] === 0 && m[2] === 0) { + this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3])); + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[2]); + const normY = Math.hypot(m[1], m[3]); + this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet; + } + } + return this._cachedGetSinglePixelWidth; + } + getScaleForStroking() { + if (this._cachedScaleForStroking[0] === -1) { + const { + lineWidth + } = this.current; + const { + a, + b, + c, + d + } = this.ctx.getTransform(); + let scaleX, scaleY; + if (b === 0 && c === 0) { + const normX = Math.abs(a); + const normY = Math.abs(d); + if (normX === normY) { + if (lineWidth === 0) { + scaleX = scaleY = 1 / normX; + } else { + const scaledLineWidth = normX * lineWidth; + scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1; + } + } else if (lineWidth === 0) { + scaleX = 1 / normX; + scaleY = 1 / normY; + } else { + const scaledXLineWidth = normX * lineWidth; + const scaledYLineWidth = normY * lineWidth; + scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1; + scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1; + } + } else { + const absDet = Math.abs(a * d - b * c); + const normX = Math.hypot(a, b); + const normY = Math.hypot(c, d); + if (lineWidth === 0) { + scaleX = normY / absDet; + scaleY = normX / absDet; + } else { + const baseArea = lineWidth * absDet; + scaleX = normY > baseArea ? normY / baseArea : 1; + scaleY = normX > baseArea ? normX / baseArea : 1; + } + } + this._cachedScaleForStroking[0] = scaleX; + this._cachedScaleForStroking[1] = scaleY; + } + return this._cachedScaleForStroking; + } + rescaleAndStroke(saveRestore) { + const { + ctx + } = this; + const { + lineWidth + } = this.current; + const [scaleX, scaleY] = this.getScaleForStroking(); + ctx.lineWidth = lineWidth || 1; + if (scaleX === 1 && scaleY === 1) { + ctx.stroke(); + return; + } + const dashes = ctx.getLineDash(); + if (saveRestore) { + ctx.save(); + } + ctx.scale(scaleX, scaleY); + if (dashes.length > 0) { + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(dashes.map(x => x / scale)); + ctx.lineDashOffset /= scale; + } + ctx.stroke(); + if (saveRestore) { + ctx.restore(); + } + } + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + return true; + } +} +exports.CanvasGraphics = CanvasGraphics; +for (const op in _util.OPS) { + if (CanvasGraphics.prototype[op] !== undefined) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } +} + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TilingPattern = exports.PathType = void 0; +exports.getShadingPattern = getShadingPattern; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" +}; +exports.PathType = PathType; +function applyBoundingBox(ctx, bbox) { + if (!bbox) { + return; + } + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const region = new Path2D(); + region.rect(bbox[0], bbox[1], width, height); + ctx.clip(region); +} +class BaseShadingPattern { + constructor() { + if (this.constructor === BaseShadingPattern) { + (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); + } + } + getPattern() { + (0, _util.unreachable)("Abstract method `getPattern` called."); + } +} +class RadialAxialShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._type = IR[1]; + this._bbox = IR[2]; + this._colorStops = IR[3]; + this._p0 = IR[4]; + this._p1 = IR[5]; + this._r0 = IR[6]; + this._r1 = IR[7]; + this.matrix = null; + } + _createGradient(ctx) { + let grad; + if (this._type === "axial") { + grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); + } else if (this._type === "radial") { + grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); + } + for (const colorStop of this._colorStops) { + grad.addColorStop(colorStop[0], colorStop[1]); + } + return grad; + } + getPattern(ctx, owner, inverse, pathType) { + let pattern; + if (pathType === PathType.STROKE || pathType === PathType.FILL) { + const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0, _display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0]; + const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1; + const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1; + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true); + const tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.beginPath(); + tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]); + inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]); + tmpCtx.transform(...owner.baseTransform); + if (this.matrix) { + tmpCtx.transform(...this.matrix); + } + applyBoundingBox(tmpCtx, this._bbox); + tmpCtx.fillStyle = this._createGradient(tmpCtx); + tmpCtx.fill(); + pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat"); + const domMatrix = new DOMMatrix(inverse); + pattern.setTransform(domMatrix); + } else { + applyBoundingBox(ctx, this._bbox); + pattern = this._createGradient(ctx); + } + return pattern; + } +} +function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + const coords = context.coords, + colors = context.colors; + const bytes = data.data, + rowSize = data.width * 4; + let tmp; + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + if (y1 >= y3) { + return; + } + const c1r = colors[c1], + c1g = colors[c1 + 1], + c1b = colors[c1 + 2]; + const c2r = colors[c2], + c2g = colors[c2 + 1], + c2b = colors[c2 + 2]; + const c3r = colors[c3], + c3g = colors[c3 + 1], + c3b = colors[c3 + 2]; + const minY = Math.round(y1), + maxY = Math.round(y3); + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; + for (let y = minY; y <= maxY; y++) { + if (y < y2) { + let k; + if (y < y1) { + k = 0; + } else { + k = (y1 - y) / (y1 - y2); + } + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + let k; + if (y > y3) { + k = 1; + } else if (y2 === y3) { + k = 0; + } else { + k = (y2 - y) / (y2 - y3); + } + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + let k; + if (y < y1) { + k = 0; + } else if (y > y3) { + k = 1; + } else { + k = (y1 - y) / (y1 - y3); + } + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; + for (let x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + if (k < 0) { + k = 0; + } else if (k > 1) { + k = 1; + } + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; + } + } +} +function drawFigure(data, figure, context) { + const ps = figure.coords; + const cs = figure.colors; + let i, ii; + switch (figure.type) { + case "lattice": + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; + for (i = 0; i < rows; i++) { + let q = i * verticesPerRow; + for (let j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); + } + } + break; + case "triangles": + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } + break; + default: + throw new Error("illegal figure"); + } +} +class MeshShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._coords = IR[2]; + this._colors = IR[3]; + this._figures = IR[4]; + this._bounds = IR[5]; + this._bbox = IR[7]; + this._background = IR[8]; + this.matrix = null; + } + _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(this._bounds[0]); + const offsetY = Math.floor(this._bounds[1]); + const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; + const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { + coords: this._coords, + colors: this._colors, + offsetX: -offsetX, + offsetY: -offsetY, + scaleX: 1 / scaleX, + scaleY: 1 / scaleY + }; + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); + if (backgroundColor) { + const bytes = data.data; + for (let i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; + } + } + for (const figure of this._figures) { + drawFigure(data, figure, context); + } + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; + return { + canvas, + offsetX: offsetX - BORDER_SIZE * scaleX, + offsetY: offsetY - BORDER_SIZE * scaleY, + scaleX, + scaleY + }; + } + getPattern(ctx, owner, inverse, pathType) { + applyBoundingBox(ctx, this._bbox); + let scale; + if (pathType === PathType.SHADING) { + scale = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(ctx)); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + if (this.matrix) { + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; + } + } + const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases); + if (pathType !== PathType.SHADING) { + ctx.setTransform(...owner.baseTransform); + if (this.matrix) { + ctx.transform(...this.matrix); + } + } + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); + } +} +class DummyShadingPattern extends BaseShadingPattern { + getPattern() { + return "hotpink"; + } +} +function getShadingPattern(IR) { + switch (IR[0]) { + case "RadialAxial": + return new RadialAxialShadingPattern(IR); + case "Mesh": + return new MeshShadingPattern(IR); + case "Dummy": + return new DummyShadingPattern(); + } + throw new Error(`Unknown IR type: ${IR[0]}`); +} +const PaintType = { + COLORED: 1, + UNCOLORED: 2 +}; +class TilingPattern { + static MAX_PATTERN_SIZE = 3000; + constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { + this.operatorList = IR[2]; + this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; + this.bbox = IR[4]; + this.xstep = IR[5]; + this.ystep = IR[6]; + this.paintType = IR[7]; + this.tilingType = IR[8]; + this.color = color; + this.ctx = ctx; + this.canvasGraphicsFactory = canvasGraphicsFactory; + this.baseTransform = baseTransform; + } + createPatternCanvas(owner) { + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)("TilingType: " + tilingType); + const x0 = bbox[0], + y0 = bbox[1], + x1 = bbox[2], + y1 = bbox[3]; + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(graphics, paintType, color); + let adjustedX0 = x0; + let adjustedY0 = y0; + let adjustedX1 = x1; + let adjustedY1 = y1; + if (x0 < 0) { + adjustedX0 = 0; + adjustedX1 += Math.abs(x0); + } + if (y0 < 0) { + adjustedY0 = 0; + adjustedY1 += Math.abs(y0); + } + tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0)); + graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); + tmpCtx.save(); + this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1); + graphics.baseTransform = (0, _display_utils.getCurrentTransform)(graphics.ctx); + graphics.executeOperatorList(operatorList); + graphics.endDrawing(); + return { + canvas: tmpCanvas.canvas, + scaleX: dimx.scale, + scaleY: dimy.scale, + offsetX: adjustedX0, + offsetY: adjustedY0 + }; + } + getSizeAndScale(step, realOutputSize, scale) { + step = Math.abs(step); + const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); + if (size >= maxSize) { + size = maxSize; + } else { + scale = size / step; + } + return { + scale, + size + }; + } + clipBbox(graphics, x0, y0, x1, y1) { + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]); + graphics.clip(); + graphics.endPath(); + } + setFillAndStrokeStyleToContext(graphics, paintType, color) { + const context = graphics.ctx, + current = graphics.current; + switch (paintType) { + case PaintType.COLORED: + const ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + current.fillColor = ctx.fillStyle; + current.strokeColor = ctx.strokeStyle; + break; + case PaintType.UNCOLORED: + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + current.fillColor = cssColor; + current.strokeColor = cssColor; + break; + default: + throw new _util.FormatError(`Unsupported paint type: ${paintType}`); + } + } + getPattern(ctx, owner, inverse, pathType) { + let matrix = inverse; + if (pathType !== PathType.SHADING) { + matrix = _util.Util.transform(matrix, owner.baseTransform); + if (this.matrix) { + matrix = _util.Util.transform(matrix, this.matrix); + } + } + const temporaryPatternCanvas = this.createPatternCanvas(owner); + let domMatrix = new DOMMatrix(matrix); + domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); + const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); + pattern.setTransform(domMatrix); + return pattern; + } +} +exports.TilingPattern = TilingPattern; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA; +exports.convertToRGBA = convertToRGBA; +exports.grayToRGBA = grayToRGBA; +var _util = __w_pdfjs_require__(1); +function convertToRGBA(params) { + switch (params.kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + return convertBlackAndWhiteToRGBA(params); + case _util.ImageKind.RGB_24BPP: + return convertRGBToRGBA(params); + } + return null; +} +function convertBlackAndWhiteToRGBA({ + src, + srcPos = 0, + dest, + width, + height, + nonBlackColor = 0xffffffff, + inverseDecode = false +}) { + const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + let destPos = 0; + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } + if (widthRemainder === 0) { + continue; + } + const elem = srcPos < srcLength ? src[srcPos++] : 255; + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } + } + return { + srcPos, + destPos + }; +} +function convertRGBToRGBA({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height +}) { + let i = 0; + const len32 = src.length >> 2; + const src32 = new Uint32Array(src.buffer, srcPos, len32); + if (_util.FeatureTest.isLittleEndian) { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff000000; + dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000; + dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000; + dest[destPos + 3] = s3 >>> 8 | 0xff000000; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000; + } + } else { + for (; i < len32 - 2; i += 3, destPos += 4) { + const s1 = src32[i]; + const s2 = src32[i + 1]; + const s3 = src32[i + 2]; + dest[destPos] = s1 | 0xff; + dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff; + dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff; + dest[destPos + 3] = s3 << 8 | 0xff; + } + for (let j = i * 4, jj = src.length; j < jj; j += 3) { + dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff; + } + } + return { + srcPos, + destPos + }; +} +function grayToRGBA(src, dest) { + if (_util.FeatureTest.isLittleEndian) { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x10101 | 0xff000000; + } + } else { + for (let i = 0, ii = src.length; i < ii; i++) { + dest[i] = src[i] * 0x1010100 | 0x000000ff; + } + } +} + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = null; +GlobalWorkerOptions.workerSrc = ""; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; +var _util = __w_pdfjs_require__(1); +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; +function wrapReason(reason) { + if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { + (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + switch (reason.name) { + case "AbortException": + return new _util.AbortException(reason.message); + case "MissingPDFException": + return new _util.MissingPDFException(reason.message); + case "PasswordException": + return new _util.PasswordException(reason.message, reason.code); + case "UnexpectedResponseException": + return new _util.UnexpectedResponseException(reason.message, reason.status); + case "UnknownErrorException": + return new _util.UnknownErrorException(reason.message, reason.details); + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); + } +} +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + this._onComObjOnMessage = event => { + const data = event.data; + if (data.targetName !== this.sourceName) { + return; + } + if (data.stream) { + this.#processStreamMessage(data); + return; + } + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + delete this.callbackCapabilities[callbackId]; + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + return; + } + const action = this.actionHandler[data.action]; + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); + } + if (data.callbackId) { + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); + }).then(function (result) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, + callbackId: data.callbackId, + reason: wrapReason(reason) + }); + }); + return; + } + if (data.streamId) { + this.#createStreamSink(data); + return; + } + action(data.data); + }; + comObj.addEventListener("message", this._onComObjOnMessage); + } + on(actionName, handler) { + const ah = this.actionHandler; + if (ah[actionName]) { + throw new Error(`There is already an actionName called "${actionName}"`); + } + ah[actionName] = handler; + } + send(actionName, data, transfers) { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data + }, transfers); + } + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = new _util.PromiseCapability(); + this.callbackCapabilities[callbackId] = capability; + try { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); + } + return capability.promise; + } + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = new _util.PromiseCapability(); + this.streamControllers[streamId] = { + controller, + startCall: startCapability, + pullCall: null, + cancelCall: null, + isClosed: false + }; + comObj.postMessage({ + sourceName, + targetName, + action: actionName, + streamId, + data, + desiredSize: controller.desiredSize + }, transfers); + return startCapability.promise; + }, + pull: controller => { + const pullCapability = new _util.PromiseCapability(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = new _util.PromiseCapability(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) + }); + return cancelCapability.promise; + } + }, queueingStrategy); + } + #createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk, size = 1, transfers) { + if (this.isCancelled) { + return; + } + const lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = new _util.PromiseCapability(); + this.ready = this.sinkCapability.promise; + } + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); + }, + close() { + if (this.isCancelled) { + return; + } + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId + }); + delete self.streamSinks[streamId]; + }, + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + if (this.isCancelled) { + return; + } + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) + }); + }, + sinkCapability: new _util.PromiseCapability(), + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: data.desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + } + #processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; + switch (data.stream) { + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + break; + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + break; + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + break; + } + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); + } + streamSink.desiredSize = data.desiredSize; + new Promise(function (resolve) { + resolve(streamSink.onPull?.()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + break; + case StreamKind.ENQUEUE: + (0, _util.assert)(streamController, "enqueue should have stream controller"); + if (streamController.isClosed) { + break; + } + streamController.controller.enqueue(data.chunk); + break; + case StreamKind.CLOSE: + (0, _util.assert)(streamController, "close should have stream controller"); + if (streamController.isClosed) { + break; + } + streamController.isClosed = true; + streamController.controller.close(); + this.#deleteStreamController(streamController, streamId); + break; + case StreamKind.ERROR: + (0, _util.assert)(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + this.#deleteStreamController(streamController, streamId); + break; + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + this.#deleteStreamController(streamController, streamId); + break; + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + new Promise(function (resolve) { + resolve(streamSink.onCancel?.(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; + break; + default: + throw new Error("Unexpected stream case"); + } + } + async #deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]); + delete this.streamControllers[streamId]; + } + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } +} +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Metadata = void 0; +var _util = __w_pdfjs_require__(1); +class Metadata { + #metadataMap; + #data; + constructor({ + parsedData, + rawData + }) { + this.#metadataMap = parsedData; + this.#data = rawData; + } + getRaw() { + return this.#data; + } + get(name) { + return this.#metadataMap.get(name) ?? null; + } + getAll() { + return (0, _util.objectFromMap)(this.#metadataMap); + } + has(name) { + return this.#metadataMap.has(name); + } +} +exports.Metadata = Metadata; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionalContentConfig = void 0; +var _util = __w_pdfjs_require__(1); +var _murmurhash = __w_pdfjs_require__(8); +const INTERNAL = Symbol("INTERNAL"); +class OptionalContentGroup { + #visible = true; + constructor(name, intent) { + this.name = name; + this.intent = intent; + } + get visible() { + return this.#visible; + } + _setVisible(internal, visible) { + if (internal !== INTERNAL) { + (0, _util.unreachable)("Internal method `_setVisible` called."); + } + this.#visible = visible; + } +} +class OptionalContentConfig { + #cachedGetHash = null; + #groups = new Map(); + #initialHash = null; + #order = null; + constructor(data) { + this.name = null; + this.creator = null; + if (data === null) { + return; + } + this.name = data.name; + this.creator = data.creator; + this.#order = data.order; + for (const group of data.groups) { + this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent)); + } + if (data.baseState === "OFF") { + for (const group of this.#groups.values()) { + group._setVisible(INTERNAL, false); + } + } + for (const on of data.on) { + this.#groups.get(on)._setVisible(INTERNAL, true); + } + for (const off of data.off) { + this.#groups.get(off)._setVisible(INTERNAL, false); + } + this.#initialHash = this.getHash(); + } + #evaluateVisibilityExpression(array) { + const length = array.length; + if (length < 2) { + return true; + } + const operator = array[0]; + for (let i = 1; i < length; i++) { + const element = array[i]; + let state; + if (Array.isArray(element)) { + state = this.#evaluateVisibilityExpression(element); + } else if (this.#groups.has(element)) { + state = this.#groups.get(element).visible; + } else { + (0, _util.warn)(`Optional content group not found: ${element}`); + return true; + } + switch (operator) { + case "And": + if (!state) { + return false; + } + break; + case "Or": + if (state) { + return true; + } + break; + case "Not": + return !state; + default: + return true; + } + } + return operator === "And"; + } + isVisible(group) { + if (this.#groups.size === 0) { + return true; + } + if (!group) { + (0, _util.warn)("Optional content group not defined."); + return true; + } + if (group.type === "OCG") { + if (!this.#groups.has(group.id)) { + (0, _util.warn)(`Optional content group not found: ${group.id}`); + return true; + } + return this.#groups.get(group.id).visible; + } else if (group.type === "OCMD") { + if (group.expression) { + return this.#evaluateVisibilityExpression(group.expression); + } + if (!group.policy || group.policy === "AnyOn") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + if (this.#groups.get(id).visible) { + return true; + } + } + return false; + } else if (group.policy === "AllOn") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + if (!this.#groups.get(id).visible) { + return false; + } + } + return true; + } else if (group.policy === "AnyOff") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + if (!this.#groups.get(id).visible) { + return true; + } + } + return false; + } else if (group.policy === "AllOff") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + if (this.#groups.get(id).visible) { + return false; + } + } + return true; + } + (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + (0, _util.warn)(`Unknown group type ${group.type}.`); + return true; + } + setVisibility(id, visible = true) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return; + } + this.#groups.get(id)._setVisible(INTERNAL, !!visible); + this.#cachedGetHash = null; + } + get hasInitialVisibility() { + return this.getHash() === this.#initialHash; + } + getOrder() { + if (!this.#groups.size) { + return null; + } + if (this.#order) { + return this.#order.slice(); + } + return [...this.#groups.keys()]; + } + getGroups() { + return this.#groups.size > 0 ? (0, _util.objectFromMap)(this.#groups) : null; + } + getGroup(id) { + return this.#groups.get(id) || null; + } + getHash() { + if (this.#cachedGetHash !== null) { + return this.#cachedGetHash; + } + const hash = new _murmurhash.MurmurHash3_64(); + for (const [id, group] of this.#groups) { + hash.update(`${id}:${group.visible}`); + } + return this.#cachedGetHash = hash.hexdigest(); + } +} +exports.OptionalContentConfig = OptionalContentConfig; + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDataTransportStream = void 0; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +class PDFDataTransportStream { + constructor({ + length, + initialData, + progressiveDone = false, + contentDispositionFilename = null, + disableRange = false, + disableStream = false + }, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); + this._queuedChunks = []; + this._progressiveDone = progressiveDone; + this._contentDispositionFilename = contentDispositionFilename; + if (initialData?.length > 0) { + const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer; + this._queuedChunks.push(buffer); + } + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isStreamingSupported = !disableStream; + this._isRangeSupported = !disableRange; + this._contentLength = length; + this._fullRequestReader = null; + this._rangeReaders = []; + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk + }); + }); + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total + }); + }); + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk + }); + }); + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); + }); + this._pdfDataRangeTransport.transportReady(); + } + _onReceiveData({ + begin, + chunk + }) { + const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer; + if (begin === undefined) { + if (this._fullRequestReader) { + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); + } + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== begin) { + return false; + } + rangeReader._enqueue(buffer); + return true; + }); + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); + } + } + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + _onProgress(evt) { + if (evt.total === undefined) { + this._rangeReaders[0]?.onProgress?.({ + loaded: evt.loaded + }); + } else { + this._fullRequestReader?.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + } + } + _onProgressiveDone() { + this._fullRequestReader?.progressiveDone(); + this._progressiveDone = true; + } + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); + const queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); + } + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + const reader = new PDFDataTransportStreamRangeReader(this, begin, end); + this._pdfDataRangeTransport.requestDataRange(begin, end); + this._rangeReaders.push(reader); + return reader; + } + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + this._pdfDataRangeTransport.abort(); + } +} +exports.PDFDataTransportStream = PDFDataTransportStream; +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { + this._stream = stream; + this._done = progressiveDone || false; + this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; + this._queuedChunks = queuedChunks || []; + this._loaded = 0; + for (const chunk of this._queuedChunks) { + this._loaded += chunk.byteLength; + } + this._requests = []; + this._headersReady = Promise.resolve(); + stream._fullRequestReader = this; + this.onProgress = null; + } + _enqueue(chunk) { + if (this._done) { + return; + } + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunks.push(chunk); + } + this._loaded += chunk.byteLength; + } + get headersReady() { + return this._headersReady; + } + get filename() { + return this._filename; + } + get isRangeSupported() { + return this._stream._isRangeSupported; + } + get isStreamingSupported() { + return this._stream._isStreamingSupported; + } + get contentLength() { + return this._stream._contentLength; + } + async read() { + if (this._queuedChunks.length > 0) { + const chunk = this._queuedChunks.shift(); + return { + value: chunk, + done: false + }; + } + if (this._done) { + return { + value: undefined, + done: true + }; + } + const requestCapability = new _util.PromiseCapability(); + this._requests.push(requestCapability); + return requestCapability.promise; + } + cancel(reason) { + this._done = true; + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + this._requests.length = 0; + } + progressiveDone() { + if (this._done) { + return; + } + this._done = true; + } +} +class PDFDataTransportStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._begin = begin; + this._end = end; + this._queuedChunk = null; + this._requests = []; + this._done = false; + this.onProgress = null; + } + _enqueue(chunk) { + if (this._done) { + return; + } + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + const requestsCapability = this._requests.shift(); + requestsCapability.resolve({ + value: chunk, + done: false + }); + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + this._requests.length = 0; + } + this._done = true; + this._stream._removeRangeReader(this); + } + get isStreamingSupported() { + return false; + } + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + if (this._done) { + return { + value: undefined, + done: true + }; + } + const requestCapability = new _util.PromiseCapability(); + this._requests.push(requestCapability); + return requestCapability.promise; + } + cancel(reason) { + this._done = true; + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + this._requests.length = 0; + this._stream._removeRangeReader(this); + } +} + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaText = void 0; +class XfaText { + static textContent(xfa) { + const items = []; + const output = { + items, + styles: Object.create(null) + }; + function walk(node) { + if (!node) { + return; + } + let str = null; + const name = node.name; + if (name === "#text") { + str = node.value; + } else if (!XfaText.shouldBuildText(name)) { + return; + } else if (node?.attributes?.textContent) { + str = node.attributes.textContent; + } else if (node.value) { + str = node.value; + } + if (str !== null) { + items.push({ + str + }); + } + if (!node.children) { + return; + } + for (const child of node.children) { + walk(child); + } + } + walk(xfa); + return output; + } + static shouldBuildText(name) { + return !(name === "textarea" || name === "input" || name === "option" || name === "select"); + } +} +exports.XfaText = XfaText; + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeFilterFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; +var _base_factory = __w_pdfjs_require__(7); +; +const fetchData = function (url) { + return new Promise((resolve, reject) => { + const fs = require("fs"); + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + resolve(new Uint8Array(data)); + }); + }); +}; +class NodeFilterFactory extends _base_factory.BaseFilterFactory {} +exports.NodeFilterFactory = NodeFilterFactory; +class NodeCanvasFactory extends _base_factory.BaseCanvasFactory { + _createCanvas(width, height) { + const Canvas = require("canvas"); + return Canvas.createCanvas(width, height); + } +} +exports.NodeCanvasFactory = NodeCanvasFactory; +class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } +} +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; +class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } +} +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNodeStream = void 0; +var _util = __w_pdfjs_require__(1); +var _network_utils = __w_pdfjs_require__(22); +; +const fs = require("fs"); +const http = require("http"); +const https = require("https"); +const url = require("url"); +const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; +function parseUrl(sourceUrl) { + const parsedUrl = url.parse(sourceUrl); + if (parsedUrl.protocol === "file:" || parsedUrl.host) { + return parsedUrl; + } + if (/^[a-z]:[/\\]/i.test(sourceUrl)) { + return url.parse(`file:///${sourceUrl}`); + } + if (!parsedUrl.host) { + parsedUrl.protocol = "file:"; + } + return parsedUrl; +} +class PDFNodeStream { + constructor(source) { + this.source = source; + this.url = parseUrl(source.url); + this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; + this.isFsUrl = this.url.protocol === "file:"; + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); + this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); + return this._fullRequestReader; + } + getRangeReader(start, end) { + if (end <= this._progressiveDataLength) { + return null; + } + const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); + this._rangeRequestReaders.push(rangeReader); + return rangeReader; + } + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } +} +exports.PDFNodeStream = PDFNodeStream; +class BaseFullReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + const source = stream.source; + this._contentLength = source.length; + this._loaded = 0; + this._filename = null; + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._readableStream = null; + this._readCapability = new _util.PromiseCapability(); + this._headersCapability = new _util.PromiseCapability(); + } + get headersReady() { + return this._headersCapability.promise; + } + get filename() { + return this._filename; + } + get contentLength() { + return this._contentLength; + } + get isRangeSupported() { + return this._isRangeSupported; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + async read() { + await this._readCapability.promise; + if (this._done) { + return { + value: undefined, + done: true + }; + } + if (this._storedError) { + throw this._storedError; + } + const chunk = this._readableStream.read(); + if (chunk === null) { + this._readCapability = new _util.PromiseCapability(); + return this.read(); + } + this._loaded += chunk.length; + this.onProgress?.({ + loaded: this._loaded, + total: this._contentLength + }); + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + return; + } + this._readableStream.destroy(reason); + } + _error(reason) { + this._storedError = reason; + this._readCapability.resolve(); + } + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + if (!this._isStreamingSupported && this._isRangeSupported) { + this._error(new _util.AbortException("streaming is disabled")); + } + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } +} +class BaseRangeReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + this._loaded = 0; + this._readableStream = null; + this._readCapability = new _util.PromiseCapability(); + const source = stream.source; + this._isStreamingSupported = !source.disableStream; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + async read() { + await this._readCapability.promise; + if (this._done) { + return { + value: undefined, + done: true + }; + } + if (this._storedError) { + throw this._storedError; + } + const chunk = this._readableStream.read(); + if (chunk === null) { + this._readCapability = new _util.PromiseCapability(); + return this.read(); + } + this._loaded += chunk.length; + this.onProgress?.({ + loaded: this._loaded + }); + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + return; + } + this._readableStream.destroy(reason); + } + _error(reason) { + this._storedError = reason; + this._readCapability.resolve(); + } + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } +} +function createRequestOptions(parsedUrl, headers) { + return { + protocol: parsedUrl.protocol, + auth: parsedUrl.auth, + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.path, + method: "GET", + headers + }; +} +class PDFNodeStreamFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + this._headersCapability.reject(error); + return; + } + this._headersCapability.resolve(); + this._setReadableStream(response); + const getResponseHeader = name => { + return this._readableStream.headers[name.toLowerCase()]; + }; + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + }; + this._request = null; + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } + this._request.on("error", reason => { + this._storedError = reason; + this._headersCapability.reject(reason); + }); + this._request.end(); + } +} +class PDFNodeStreamRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + this._httpHeaders = {}; + for (const property in stream.httpHeaders) { + const value = stream.httpHeaders[property]; + if (value === undefined) { + continue; + } + this._httpHeaders[property] = value; + } + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + return; + } + this._setReadableStream(response); + }; + this._request = null; + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } + this._request.on("error", reason => { + this._storedError = reason; + }); + this._request.end(); + } +} +class PDFNodeStreamFsFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + let path = decodeURIComponent(this._url.path); + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + fs.lstat(path, (error, stat) => { + if (error) { + if (error.code === "ENOENT") { + error = new _util.MissingPDFException(`Missing PDF "${path}".`); + } + this._storedError = error; + this._headersCapability.reject(error); + return; + } + this._contentLength = stat.size; + this._setReadableStream(fs.createReadStream(path)); + this._headersCapability.resolve(); + }); + } +} +class PDFNodeStreamFsRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + let path = decodeURIComponent(this._url.path); + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + this._setReadableStream(fs.createReadStream(path, { + start, + end: end - 1 + })); + } +} + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createResponseStatusError = createResponseStatusError; +exports.extractFilenameFromHeader = extractFilenameFromHeader; +exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; +exports.validateResponseStatus = validateResponseStatus; +var _util = __w_pdfjs_require__(1); +var _content_disposition = __w_pdfjs_require__(23); +var _display_utils = __w_pdfjs_require__(6); +function validateRangeRequestCapabilities({ + getResponseHeader, + isHttp, + rangeChunkSize, + disableRange +}) { + const returnValues = { + allowRangeRequests: false, + suggestedLength: undefined + }; + const length = parseInt(getResponseHeader("Content-Length"), 10); + if (!Number.isInteger(length)) { + return returnValues; + } + returnValues.suggestedLength = length; + if (length <= 2 * rangeChunkSize) { + return returnValues; + } + if (disableRange || !isHttp) { + return returnValues; + } + if (getResponseHeader("Accept-Ranges") !== "bytes") { + return returnValues; + } + const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; + if (contentEncoding !== "identity") { + return returnValues; + } + returnValues.allowRangeRequests = true; + return returnValues; +} +function extractFilenameFromHeader(getResponseHeader) { + const contentDisposition = getResponseHeader("Content-Disposition"); + if (contentDisposition) { + let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch {} + } + if ((0, _display_utils.isPdfFile)(filename)) { + return filename; + } + } + return null; +} +function createResponseStatusError(status, url) { + if (status === 404 || status === 0 && url.startsWith("file:")) { + return new _util.MissingPDFException('Missing PDF "' + url + '".'); + } + return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); +} +function validateResponseStatus(status) { + return status === 200 || status === 206; +} + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; +var _util = __w_pdfjs_require__(1); +function getFilenameFromContentDispositionHeader(contentDisposition) { + let needsEncodingFixup = true; + let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = unescape(filename); + filename = rfc5987decode(filename); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + tmp = rfc2231getparam(contentDisposition); + if (tmp) { + const filename = rfc2047decode(tmp); + return fixupEncoding(filename); + } + tmp = toParamRegExp("filename", "i").exec(contentDisposition); + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + function toParamRegExp(attributePattern, flags) { + return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); + } + function textdecode(encoding, value) { + if (encoding) { + if (!/^[\x00-\xFF]+$/.test(value)) { + return value; + } + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = (0, _util.stringToBytes)(value); + value = decoder.decode(buffer); + needsEncodingFixup = false; + } catch {} + } + return value; + } + function fixupEncoding(value) { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textdecode("utf-8", value); + if (needsEncodingFixup) { + value = textdecode("iso-8859-1", value); + } + } + return value; + } + function rfc2231getparam(contentDispositionStr) { + const matches = []; + let match; + const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); + while ((match = iter.exec(contentDispositionStr)) !== null) { + let [, n, quot, part] = match; + n = parseInt(n, 10); + if (n in matches) { + if (n === 0) { + break; + } + continue; + } + matches[n] = [quot, part]; + } + const parts = []; + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + let [quot, part] = matches[n]; + part = rfc2616unquote(part); + if (quot) { + part = unescape(part); + if (n === 0) { + part = rfc5987decode(part); + } + } + parts.push(part); + } + return parts.join(""); + } + function rfc2616unquote(value) { + if (value.startsWith('"')) { + const parts = value.slice(1).split('\\"'); + for (let i = 0; i < parts.length; ++i) { + const quotindex = parts[i].indexOf('"'); + if (quotindex !== -1) { + parts[i] = parts[i].slice(0, quotindex); + parts.length = i + 1; + } + parts[i] = parts[i].replaceAll(/\\(.)/g, "$1"); + } + value = parts.join('"'); + } + return value; + } + function rfc5987decode(extvalue) { + const encodingend = extvalue.indexOf("'"); + if (encodingend === -1) { + return extvalue; + } + const encoding = extvalue.slice(0, encodingend); + const langvalue = extvalue.slice(encodingend + 1); + const value = langvalue.replace(/^[^']*'/, ""); + return textdecode(encoding, value); + } + function rfc2047decode(value) { + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + return value.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replaceAll("_", " "); + text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + try { + text = atob(text); + } catch {} + return textdecode(charset, text); + }); + } + return ""; +} + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNetworkStream = void 0; +var _util = __w_pdfjs_require__(1); +var _network_utils = __w_pdfjs_require__(22); +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; +function getArrayBuffer(xhr) { + const data = xhr.response; + if (typeof data !== "string") { + return data; + } + return (0, _util.stringToBytes)(data).buffer; +} +class NetworkManager { + constructor(url, args = {}) { + this.url = url; + this.isHttp = /^https?:/i.test(url); + this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null); + this.withCredentials = args.withCredentials || false; + this.currXhrId = 0; + this.pendingRequests = Object.create(null); + } + requestRange(begin, end, listeners) { + const args = { + begin, + end + }; + for (const prop in listeners) { + args[prop] = listeners[prop]; + } + return this.request(args); + } + requestFull(listeners) { + return this.request(listeners); + } + request(args) { + const xhr = new XMLHttpRequest(); + const xhrId = this.currXhrId++; + const pendingRequest = this.pendingRequests[xhrId] = { + xhr + }; + xhr.open("GET", this.url); + xhr.withCredentials = this.withCredentials; + for (const property in this.httpHeaders) { + const value = this.httpHeaders[property]; + if (value === undefined) { + continue; + } + xhr.setRequestHeader(property, value); + } + if (this.isHttp && "begin" in args && "end" in args) { + xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); + pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; + } else { + pendingRequest.expectedStatus = OK_RESPONSE; + } + xhr.responseType = "arraybuffer"; + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); + }; + } + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + } + onProgress(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + if (!pendingRequest) { + return; + } + pendingRequest.onProgress?.(evt); + } + onStateChange(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + if (!pendingRequest) { + return; + } + const xhr = pendingRequest.xhr; + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; + } + if (xhr.readyState !== 4) { + return; + } + if (!(xhrId in this.pendingRequests)) { + return; + } + delete this.pendingRequests[xhrId]; + if (xhr.status === 0 && this.isHttp) { + pendingRequest.onError?.(xhr.status); + return; + } + const xhrStatus = xhr.status || OK_RESPONSE; + const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + pendingRequest.onError?.(xhr.status); + return; + } + const chunk = getArrayBuffer(xhr); + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + const rangeHeader = xhr.getResponseHeader("Content-Range"); + const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk + }); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk + }); + } else { + pendingRequest.onError?.(xhr.status); + } + } + getRequestXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + } + isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + } + abortRequest(xhrId) { + const xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } +} +class PDFNetworkStream { + constructor(source) { + this._source = source; + this._manager = new NetworkManager(source.url, { + httpHeaders: source.httpHeaders, + withCredentials: source.withCredentials + }); + this._rangeChunkSize = source.rangeChunkSize; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + _onRangeRequestReaderClosed(reader) { + const i = this._rangeRequestReaders.indexOf(reader); + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); + } + } + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); + return this._fullRequestReader; + } + getRangeReader(begin, end) { + const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + this._rangeRequestReaders.push(reader); + return reader; + } + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } +} +exports.PDFNetworkStream = PDFNetworkStream; +class PDFNetworkStreamFullRequestReader { + constructor(manager, source) { + this._manager = manager; + const args = { + onHeadersReceived: this._onHeadersReceived.bind(this), + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = source.url; + this._fullRequestId = manager.requestFull(args); + this._headersReceivedCapability = new _util.PromiseCapability(); + this._disableRange = source.disableRange || false; + this._contentLength = source.length; + this._rangeChunkSize = source.rangeChunkSize; + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + this._isStreamingSupported = false; + this._isRangeSupported = false; + this._cachedChunks = []; + this._requests = []; + this._done = false; + this._storedError = undefined; + this._filename = null; + this.onProgress = null; + } + _onHeadersReceived() { + const fullRequestXhrId = this._fullRequestId; + const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + const getResponseHeader = name => { + return fullRequestXhr.getResponseHeader(name); + }; + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._manager.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + if (allowRangeRequests) { + this._isRangeSupported = true; + } + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + if (this._isRangeSupported) { + this._manager.abortRequest(fullRequestXhrId); + } + this._headersReceivedCapability.resolve(); + } + _onDone(data) { + if (data) { + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + requestCapability.resolve({ + value: data.chunk, + done: false + }); + } else { + this._cachedChunks.push(data.chunk); + } + } + this._done = true; + if (this._cachedChunks.length > 0) { + return; + } + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + this._requests.length = 0; + } + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + this._headersReceivedCapability.reject(this._storedError); + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + this._requests.length = 0; + this._cachedChunks.length = 0; + } + _onProgress(evt) { + this.onProgress?.({ + loaded: evt.loaded, + total: evt.lengthComputable ? evt.total : this._contentLength + }); + } + get filename() { + return this._filename; + } + get isRangeSupported() { + return this._isRangeSupported; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + get contentLength() { + return this._contentLength; + } + get headersReady() { + return this._headersReceivedCapability.promise; + } + async read() { + if (this._storedError) { + throw this._storedError; + } + if (this._cachedChunks.length > 0) { + const chunk = this._cachedChunks.shift(); + return { + value: chunk, + done: false + }; + } + if (this._done) { + return { + value: undefined, + done: true + }; + } + const requestCapability = new _util.PromiseCapability(); + this._requests.push(requestCapability); + return requestCapability.promise; + } + cancel(reason) { + this._done = true; + this._headersReceivedCapability.reject(reason); + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + this._requests.length = 0; + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); + } + this._fullRequestReader = null; + } +} +class PDFNetworkStreamRangeRequestReader { + constructor(manager, begin, end) { + this._manager = manager; + const args = { + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = manager.url; + this._requestId = manager.requestRange(begin, end, args); + this._requests = []; + this._queuedChunk = null; + this._done = false; + this._storedError = undefined; + this.onProgress = null; + this.onClosed = null; + } + _close() { + this.onClosed?.(this); + } + _onDone(data) { + const chunk = data.chunk; + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunk = chunk; + } + this._done = true; + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + this._requests.length = 0; + this._close(); + } + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + this._requests.length = 0; + this._queuedChunk = null; + } + _onProgress(evt) { + if (!this.isStreamingSupported) { + this.onProgress?.({ + loaded: evt.loaded + }); + } + } + get isStreamingSupported() { + return false; + } + async read() { + if (this._storedError) { + throw this._storedError; + } + if (this._queuedChunk !== null) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + if (this._done) { + return { + value: undefined, + done: true + }; + } + const requestCapability = new _util.PromiseCapability(); + this._requests.push(requestCapability); + return requestCapability.promise; + } + cancel(reason) { + this._done = true; + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + this._requests.length = 0; + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + this._close(); + } +} + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFetchStream = void 0; +var _util = __w_pdfjs_require__(1); +var _network_utils = __w_pdfjs_require__(22); +; +function createFetchOptions(headers, withCredentials, abortController) { + return { + method: "GET", + headers, + signal: abortController.signal, + mode: "cors", + credentials: withCredentials ? "include" : "same-origin", + redirect: "follow" + }; +} +function createHeaders(httpHeaders) { + const headers = new Headers(); + for (const property in httpHeaders) { + const value = httpHeaders[property]; + if (value === undefined) { + continue; + } + headers.append(property, value); + } + return headers; +} +function getArrayBuffer(val) { + if (val instanceof Uint8Array) { + return val.buffer; + } + if (val instanceof ArrayBuffer) { + return val; + } + (0, _util.warn)(`getArrayBuffer - unexpected data format: ${val}`); + return new Uint8Array(val).buffer; +} +class PDFFetchStream { + constructor(source) { + this.source = source; + this.isHttp = /^https?:/i.test(source.url); + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFFetchStreamReader(this); + return this._fullRequestReader; + } + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + const reader = new PDFFetchStreamRangeReader(this, begin, end); + this._rangeRequestReaders.push(reader); + return reader; + } + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } +} +exports.PDFFetchStream = PDFFetchStream; +class PDFFetchStreamReader { + constructor(stream) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + this._filename = null; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._contentLength = source.length; + this._headersCapability = new _util.PromiseCapability(); + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + this._abortController = new AbortController(); + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._headers = createHeaders(this._stream.httpHeaders); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + this._reader = response.body.getReader(); + this._headersCapability.resolve(); + const getResponseHeader = name => { + return response.headers.get(name); + }; + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _util.AbortException("Streaming is disabled.")); + } + }).catch(this._headersCapability.reject); + this.onProgress = null; + } + get headersReady() { + return this._headersCapability.promise; + } + get filename() { + return this._filename; + } + get contentLength() { + return this._contentLength; + } + get isRangeSupported() { + return this._isRangeSupported; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + async read() { + await this._headersCapability.promise; + const { + value, + done + } = await this._reader.read(); + if (done) { + return { + value, + done + }; + } + this._loaded += value.byteLength; + this.onProgress?.({ + loaded: this._loaded, + total: this._contentLength + }); + return { + value: getArrayBuffer(value), + done: false + }; + } + cancel(reason) { + this._reader?.cancel(reason); + this._abortController.abort(); + } +} +class PDFFetchStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._readCapability = new _util.PromiseCapability(); + this._isStreamingSupported = !source.disableStream; + this._abortController = new AbortController(); + this._headers = createHeaders(this._stream.httpHeaders); + this._headers.append("Range", `bytes=${begin}-${end - 1}`); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + this._readCapability.resolve(); + this._reader = response.body.getReader(); + }).catch(this._readCapability.reject); + this.onProgress = null; + } + get isStreamingSupported() { + return this._isStreamingSupported; + } + async read() { + await this._readCapability.promise; + const { + value, + done + } = await this._reader.read(); + if (done) { + return { + value, + done + }; + } + this._loaded += value.byteLength; + this.onProgress?.({ + loaded: this._loaded + }); + return { + value: getArrayBuffer(value), + done: false + }; + } + cancel(reason) { + this._reader?.cancel(reason); + this._abortController.abort(); + } +} + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerRenderTask = void 0; +exports.renderTextLayer = renderTextLayer; +exports.updateTextLayer = updateTextLayer; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +function getCtx(size, isOffscreenCanvasSupported) { + let ctx; + if (isOffscreenCanvasSupported && _util.FeatureTest.isOffscreenCanvasSupported) { + ctx = new OffscreenCanvas(size, size).getContext("2d", { + alpha: false + }); + } else { + const canvas = document.createElement("canvas"); + canvas.width = canvas.height = size; + ctx = canvas.getContext("2d", { + alpha: false + }); + } + return ctx; +} +function getAscent(fontFamily, isOffscreenCanvasSupported) { + const cachedAscent = ascentCache.get(fontFamily); + if (cachedAscent) { + return cachedAscent; + } + const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + ctx.canvas.width = ctx.canvas.height = 0; + return ratio; + } + ctx.strokeStyle = "red"; + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("g", 0, 0); + let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + descent = 0; + for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { + if (pixels[i] > 0) { + descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); + pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + ascent = 0; + for (let i = 0, ii = pixels.length; i < ii; i += 4) { + if (pixels[i] > 0) { + ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + ctx.canvas.width = ctx.canvas.height = 0; + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); + return DEFAULT_FONT_ASCENT; +} +function appendText(task, geom, styles) { + const textDiv = document.createElement("span"); + const textDivProperties = { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + fontSize: 0 + }; + task._textDivs.push(textDiv); + const tx = _util.Util.transform(task._transform, geom.transform); + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + if (style.vertical) { + angle += Math.PI / 2; + } + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(style.fontFamily, task._isOffscreenCanvasSupported); + let left, top; + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + const scaleFactorStr = "calc(var(--scale-factor)*"; + const divStyle = textDiv.style; + if (task._container === task._rootContainer) { + divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`; + divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`; + } else { + divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`; + divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`; + } + divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`; + divStyle.fontFamily = style.fontFamily; + textDivProperties.fontSize = fontHeight; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = geom.fontName; + } + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + let shouldScaleText = false; + if (geom.str.length > 1) { + shouldScaleText = true; + } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { + shouldScaleText = true; + } + } + if (shouldScaleText) { + textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width; + } + task._textDivProperties.set(textDiv, textDivProperties); + if (task._isReadableStream) { + task._layoutText(textDiv); + } +} +function layout(params) { + const { + div, + scale, + properties, + ctx, + prevFontSize, + prevFontFamily + } = params; + const { + style + } = div; + let transform = ""; + if (properties.canvasWidth !== 0 && properties.hasText) { + const { + fontFamily + } = style; + const { + canvasWidth, + fontSize + } = properties; + if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) { + ctx.font = `${fontSize * scale}px ${fontFamily}`; + params.prevFontSize = fontSize; + params.prevFontFamily = fontFamily; + } + const { + width + } = ctx.measureText(div.textContent); + if (width > 0) { + transform = `scaleX(${canvasWidth * scale / width})`; + } + } + if (properties.angle !== 0) { + transform = `rotate(${properties.angle}deg) ${transform}`; + } + if (transform.length > 0) { + style.transform = transform; + } +} +function render(task) { + if (task._canceled) { + return; + } + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + capability.resolve(); + return; + } + if (!task._isReadableStream) { + for (const textDiv of textDivs) { + task._layoutText(textDiv); + } + } + capability.resolve(); +} +class TextLayerRenderTask { + constructor({ + textContentSource, + container, + viewport, + textDivs, + textDivProperties, + textContentItemsStr, + isOffscreenCanvasSupported + }) { + this._textContentSource = textContentSource; + this._isReadableStream = textContentSource instanceof ReadableStream; + this._container = this._rootContainer = container; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._textDivProperties = textDivProperties || new WeakMap(); + this._canceled = false; + this._capability = new _util.PromiseCapability(); + this._layoutTextParams = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale: viewport.scale * (globalThis.devicePixelRatio || 1), + properties: null, + ctx: getCtx(0, isOffscreenCanvasSupported) + }; + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight]; + this._pageWidth = pageWidth; + this._pageHeight = pageHeight; + (0, _display_utils.setLayerDimensions)(container, viewport); + this._capability.promise.finally(() => { + this._layoutTextParams = null; + }).catch(() => {}); + } + get promise() { + return this._capability.promise; + } + cancel() { + this._canceled = true; + if (this._reader) { + this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {}); + this._reader = null; + } + this._capability.reject(new _util.AbortException("TextLayer task cancelled.")); + } + _processItems(items, styleCache) { + for (const item of items) { + if (item.str === undefined) { + if (item.type === "beginMarkedContentProps" || item.type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + this._container.classList.add("markedContent"); + if (item.id !== null) { + this._container.setAttribute("id", `${item.id}`); + } + parent.append(this._container); + } else if (item.type === "endMarkedContent") { + this._container = this._container.parentNode; + } + continue; + } + this._textContentItemsStr.push(item.str); + appendText(this, item, styleCache); + } + } + _layoutText(textDiv) { + const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv); + this._layoutTextParams.div = textDiv; + layout(this._layoutTextParams); + if (textDivProperties.hasText) { + this._container.append(textDiv); + } + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + this._container.append(br); + } + } + _render() { + const capability = new _util.PromiseCapability(); + let styleCache = Object.create(null); + if (this._isReadableStream) { + const pump = () => { + this._reader.read().then(({ + value, + done + }) => { + if (done) { + capability.resolve(); + return; + } + Object.assign(styleCache, value.styles); + this._processItems(value.items, styleCache); + pump(); + }, capability.reject); + }; + this._reader = this._textContentSource.getReader(); + pump(); + } else if (this._textContentSource) { + const { + items, + styles + } = this._textContentSource; + this._processItems(items, styles); + capability.resolve(); + } else { + throw new Error('No "textContentSource" parameter specified.'); + } + capability.promise.then(() => { + styleCache = null; + render(this); + }, this._capability.reject); + } +} +exports.TextLayerRenderTask = TextLayerRenderTask; +function renderTextLayer(params) { + if (!params.textContentSource && (params.textContent || params.textContentStream)) { + (0, _display_utils.deprecated)("The TextLayerRender `textContent`/`textContentStream` parameters " + "will be removed in the future, please use `textContentSource` instead."); + params.textContentSource = params.textContent || params.textContentStream; + } + const { + container, + viewport + } = params; + const style = getComputedStyle(container); + const visibility = style.getPropertyValue("visibility"); + const scaleFactor = parseFloat(style.getPropertyValue("--scale-factor")); + if (visibility === "visible" && (!scaleFactor || Math.abs(scaleFactor - viewport.scale) > 1e-5)) { + console.error("The `--scale-factor` CSS-variable must be set, " + "to the same value as `viewport.scale`, " + "either on the `container`-element itself or higher up in the DOM."); + } + const task = new TextLayerRenderTask(params); + task._render(); + return task; +} +function updateTextLayer({ + container, + viewport, + textDivs, + textDivProperties, + isOffscreenCanvasSupported, + mustRotate = true, + mustRescale = true +}) { + if (mustRotate) { + (0, _display_utils.setLayerDimensions)(container, { + rotation: viewport.rotation + }); + } + if (mustRescale) { + const ctx = getCtx(0, isOffscreenCanvasSupported); + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const params = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale, + properties: null, + ctx + }; + for (const div of textDivs) { + params.properties = textDivProperties.get(div); + params.div = div; + layout(params); + } + } +} + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayer = void 0; +var _util = __w_pdfjs_require__(1); +var _editor = __w_pdfjs_require__(4); +var _tools = __w_pdfjs_require__(5); +var _freetext = __w_pdfjs_require__(28); +var _ink = __w_pdfjs_require__(33); +var _display_utils = __w_pdfjs_require__(6); +class AnnotationEditorLayer { + #accessibilityManager; + #allowClick = false; + #annotationLayer = null; + #boundPointerup = this.pointerup.bind(this); + #boundPointerdown = this.pointerdown.bind(this); + #editors = new Map(); + #hadPointerDown = false; + #isCleaningUp = false; + #isDisabling = false; + #uiManager; + static _initialized = false; + constructor(options) { + if (!AnnotationEditorLayer._initialized) { + AnnotationEditorLayer._initialized = true; + _freetext.FreeTextEditor.initialize(options.l10n); + _ink.InkEditor.initialize(options.l10n); + } + options.uiManager.registerEditorTypes([_freetext.FreeTextEditor, _ink.InkEditor]); + this.#uiManager = options.uiManager; + this.pageIndex = options.pageIndex; + this.div = options.div; + this.#accessibilityManager = options.accessibilityManager; + this.#annotationLayer = options.annotationLayer; + this.viewport = options.viewport; + this.#uiManager.addLayer(this); + } + get isEmpty() { + return this.#editors.size === 0; + } + updateToolbar(mode) { + this.#uiManager.updateToolbar(mode); + } + updateMode(mode = this.#uiManager.getMode()) { + this.#cleanup(); + if (mode === _util.AnnotationEditorType.INK) { + this.addInkEditorIfNeeded(false); + this.disableClick(); + } else { + this.enableClick(); + } + this.#uiManager.unselectAll(); + if (mode !== _util.AnnotationEditorType.NONE) { + this.div.classList.toggle("freeTextEditing", mode === _util.AnnotationEditorType.FREETEXT); + this.div.classList.toggle("inkEditing", mode === _util.AnnotationEditorType.INK); + this.div.hidden = false; + } + } + addInkEditorIfNeeded(isCommitting) { + if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) { + return; + } + if (!isCommitting) { + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.setInBackground(); + return; + } + } + } + const editor = this.#createAndAddNewEditor({ + offsetX: 0, + offsetY: 0 + }); + editor.setInBackground(); + } + setEditingState(isEditing) { + this.#uiManager.setEditingState(isEditing); + } + addCommands(params) { + this.#uiManager.addCommands(params); + } + enable() { + this.div.style.pointerEvents = "auto"; + const annotationElementIds = new Set(); + for (const editor of this.#editors.values()) { + editor.enableEditing(); + if (editor.annotationElementId) { + annotationElementIds.add(editor.annotationElementId); + } + } + if (!this.#annotationLayer) { + return; + } + const editables = this.#annotationLayer.getEditableAnnotations(); + for (const editable of editables) { + editable.hide(); + if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) { + continue; + } + if (annotationElementIds.has(editable.data.id)) { + continue; + } + const editor = this.deserialize(editable); + if (!editor) { + continue; + } + this.addOrRebuild(editor); + editor.enableEditing(); + } + } + disable() { + this.#isDisabling = true; + this.div.style.pointerEvents = "none"; + const hiddenAnnotationIds = new Set(); + for (const editor of this.#editors.values()) { + editor.disableEditing(); + if (!editor.annotationElementId || editor.serialize() !== null) { + hiddenAnnotationIds.add(editor.annotationElementId); + continue; + } + this.getEditableAnnotation(editor.annotationElementId)?.show(); + editor.remove(); + } + if (this.#annotationLayer) { + const editables = this.#annotationLayer.getEditableAnnotations(); + for (const editable of editables) { + const { + id + } = editable.data; + if (hiddenAnnotationIds.has(id) || this.#uiManager.isDeletedAnnotationElement(id)) { + continue; + } + editable.show(); + } + } + this.#cleanup(); + if (this.isEmpty) { + this.div.hidden = true; + } + this.#isDisabling = false; + } + getEditableAnnotation(id) { + return this.#annotationLayer?.getEditableAnnotation(id) || null; + } + setActiveEditor(editor) { + const currentActive = this.#uiManager.getActive(); + if (currentActive === editor) { + return; + } + this.#uiManager.setActiveEditor(editor); + } + enableClick() { + this.div.addEventListener("pointerdown", this.#boundPointerdown); + this.div.addEventListener("pointerup", this.#boundPointerup); + } + disableClick() { + this.div.removeEventListener("pointerdown", this.#boundPointerdown); + this.div.removeEventListener("pointerup", this.#boundPointerup); + } + attach(editor) { + this.#editors.set(editor.id, editor); + const { + annotationElementId + } = editor; + if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) { + this.#uiManager.removeDeletedAnnotationElement(editor); + } + } + detach(editor) { + this.#editors.delete(editor.id); + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + if (!this.#isDisabling && editor.annotationElementId) { + this.#uiManager.addDeletedAnnotationElement(editor); + } + } + remove(editor) { + this.detach(editor); + this.#uiManager.removeEditor(editor); + editor.div.style.display = "none"; + setTimeout(() => { + editor.div.style.display = ""; + editor.div.remove(); + editor.isAttachedToDOM = false; + if (document.activeElement === document.body) { + this.#uiManager.focusMainContainer(); + } + }, 0); + if (!this.#isCleaningUp) { + this.addInkEditorIfNeeded(false); + } + } + #changeParent(editor) { + if (editor.parent === this) { + return; + } + if (editor.annotationElementId) { + this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId); + _editor.AnnotationEditor.deleteAnnotationElement(editor); + editor.annotationElementId = null; + } + this.attach(editor); + editor.parent?.detach(editor); + editor.setParent(this); + if (editor.div && editor.isAttachedToDOM) { + editor.div.remove(); + this.div.append(editor.div); + } + } + add(editor) { + this.#changeParent(editor); + this.#uiManager.addEditor(editor); + this.attach(editor); + if (!editor.isAttachedToDOM) { + const div = editor.render(); + this.div.append(div); + editor.isAttachedToDOM = true; + } + this.moveEditorInDOM(editor); + editor.onceAdded(); + this.#uiManager.addToAnnotationStorage(editor); + } + moveEditorInDOM(editor) { + this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true); + } + addOrRebuild(editor) { + if (editor.needsToBeRebuilt()) { + editor.rebuild(); + } else { + this.add(editor); + } + } + getNextId() { + return this.#uiManager.getId(); + } + #createNewEditor(params) { + switch (this.#uiManager.getMode()) { + case _util.AnnotationEditorType.FREETEXT: + return new _freetext.FreeTextEditor(params); + case _util.AnnotationEditorType.INK: + return new _ink.InkEditor(params); + } + return null; + } + deserialize(data) { + switch (data.annotationType ?? data.annotationEditorType) { + case _util.AnnotationEditorType.FREETEXT: + return _freetext.FreeTextEditor.deserialize(data, this, this.#uiManager); + case _util.AnnotationEditorType.INK: + return _ink.InkEditor.deserialize(data, this, this.#uiManager); + } + return null; + } + #createAndAddNewEditor(event) { + const id = this.getNextId(); + const editor = this.#createNewEditor({ + parent: this, + id, + x: event.offsetX, + y: event.offsetY, + uiManager: this.#uiManager + }); + if (editor) { + this.add(editor); + } + return editor; + } + setSelected(editor) { + this.#uiManager.setSelected(editor); + } + toggleSelected(editor) { + this.#uiManager.toggleSelected(editor); + } + isSelected(editor) { + return this.#uiManager.isSelected(editor); + } + unselect(editor) { + this.#uiManager.unselect(editor); + } + pointerup(event) { + const { + isMac + } = _util.FeatureTest.platform; + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + if (event.target !== this.div) { + return; + } + if (!this.#hadPointerDown) { + return; + } + this.#hadPointerDown = false; + if (!this.#allowClick) { + this.#allowClick = true; + return; + } + this.#createAndAddNewEditor(event); + } + pointerdown(event) { + const { + isMac + } = _util.FeatureTest.platform; + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + if (event.target !== this.div) { + return; + } + this.#hadPointerDown = true; + const editor = this.#uiManager.getActive(); + this.#allowClick = !editor || editor.isEmpty(); + } + drop(event) { + const id = event.dataTransfer.getData("text/plain"); + const editor = this.#uiManager.getEditor(id); + if (!editor) { + return; + } + event.preventDefault(); + event.dataTransfer.dropEffect = "move"; + this.#changeParent(editor); + const rect = this.div.getBoundingClientRect(); + const endX = event.clientX - rect.x; + const endY = event.clientY - rect.y; + editor.translate(endX - editor.startX, endY - editor.startY); + this.moveEditorInDOM(editor); + editor.div.focus(); + } + dragover(event) { + event.preventDefault(); + } + destroy() { + if (this.#uiManager.getActive()?.parent === this) { + this.#uiManager.setActiveEditor(null); + } + for (const editor of this.#editors.values()) { + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + editor.setParent(null); + editor.isAttachedToDOM = false; + editor.div.remove(); + } + this.div = null; + this.#editors.clear(); + this.#uiManager.removeLayer(this); + } + #cleanup() { + this.#isCleaningUp = true; + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.remove(); + } + } + this.#isCleaningUp = false; + } + render({ + viewport + }) { + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(this.div, viewport); + (0, _tools.bindEvents)(this, this.div, ["dragover", "drop"]); + for (const editor of this.#uiManager.getEditors(this.pageIndex)) { + this.add(editor); + } + this.updateMode(); + } + update({ + viewport + }) { + this.#uiManager.commitOrRemove(); + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(this.div, { + rotation: viewport.rotation + }); + this.updateMode(); + } + get pageDimensions() { + const { + pageWidth, + pageHeight + } = this.viewport.rawDims; + return [pageWidth, pageHeight]; + } +} +exports.AnnotationEditorLayer = AnnotationEditorLayer; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FreeTextEditor = void 0; +var _util = __w_pdfjs_require__(1); +var _tools = __w_pdfjs_require__(5); +var _editor = __w_pdfjs_require__(4); +var _annotation_layer = __w_pdfjs_require__(29); +class FreeTextEditor extends _editor.AnnotationEditor { + #boundEditorDivBlur = this.editorDivBlur.bind(this); + #boundEditorDivFocus = this.editorDivFocus.bind(this); + #boundEditorDivInput = this.editorDivInput.bind(this); + #boundEditorDivKeydown = this.editorDivKeydown.bind(this); + #color; + #content = ""; + #editorDivId = `${this.id}-editor`; + #fontSize; + #initialData = null; + static _freeTextDefaultContent = ""; + static _l10nPromise; + static _internalPadding = 0; + static _defaultColor = null; + static _defaultFontSize = 10; + static get _keyboardManager() { + return (0, _util.shadow)(this, "_keyboardManager", new _tools.KeyboardManager([[["ctrl+s", "mac+meta+s", "ctrl+p", "mac+meta+p"], FreeTextEditor.prototype.commitOrRemove, true], [["ctrl+Enter", "mac+meta+Enter", "Escape", "mac+Escape"], FreeTextEditor.prototype.commitOrRemove]])); + } + static _type = "freetext"; + constructor(params) { + super({ + ...params, + name: "freeTextEditor" + }); + this.#color = params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor; + this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize; + } + static initialize(l10n) { + this._l10nPromise = new Map(["free_text2_default_content", "editor_free_text2_aria_label"].map(str => [str, l10n.get(str)])); + const style = getComputedStyle(document.documentElement); + this._internalPadding = parseFloat(style.getPropertyValue("--freetext-padding")); + } + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + FreeTextEditor._defaultFontSize = value; + break; + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + FreeTextEditor._defaultColor = value; + break; + } + } + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + this.#updateFontSize(value); + break; + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + this.#updateColor(value); + break; + } + } + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]]; + } + get propertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]]; + } + #updateFontSize(fontSize) { + const setFontsize = size => { + this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`; + this.translate(0, -(size - this.#fontSize) * this.parentScale); + this.#fontSize = size; + this.#setEditorDimensions(); + }; + const savedFontsize = this.#fontSize; + this.addCommands({ + cmd: () => { + setFontsize(fontSize); + }, + undo: () => { + setFontsize(savedFontsize); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_SIZE, + overwriteIfSameType: true, + keepUndo: true + }); + } + #updateColor(color) { + const savedColor = this.#color; + this.addCommands({ + cmd: () => { + this.#color = this.editorDiv.style.color = color; + }, + undo: () => { + this.#color = this.editorDiv.style.color = savedColor; + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + getInitialTranslation() { + const scale = this.parentScale; + return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale]; + } + rebuild() { + super.rebuild(); + if (this.div === null) { + return; + } + if (!this.isAttachedToDOM) { + this.parent.add(this); + } + } + enableEditMode() { + if (this.isInEditMode()) { + return; + } + this.parent.setEditingState(false); + this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT); + super.enableEditMode(); + this.overlayDiv.classList.remove("enabled"); + this.editorDiv.contentEditable = true; + this.div.draggable = false; + this.div.removeAttribute("aria-activedescendant"); + this.editorDiv.addEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.addEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.addEventListener("blur", this.#boundEditorDivBlur); + this.editorDiv.addEventListener("input", this.#boundEditorDivInput); + } + disableEditMode() { + if (!this.isInEditMode()) { + return; + } + this.parent.setEditingState(true); + super.disableEditMode(); + this.overlayDiv.classList.add("enabled"); + this.editorDiv.contentEditable = false; + this.div.setAttribute("aria-activedescendant", this.#editorDivId); + this.div.draggable = true; + this.editorDiv.removeEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.removeEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.removeEventListener("blur", this.#boundEditorDivBlur); + this.editorDiv.removeEventListener("input", this.#boundEditorDivInput); + this.div.focus({ + preventScroll: true + }); + this.isEditing = false; + this.parent.div.classList.add("freeTextEditing"); + } + focusin(event) { + super.focusin(event); + if (event.target !== this.editorDiv) { + this.editorDiv.focus(); + } + } + onceAdded() { + if (this.width) { + this.#cheatInitialRect(); + return; + } + this.enableEditMode(); + this.editorDiv.focus(); + } + isEmpty() { + return !this.editorDiv || this.editorDiv.innerText.trim() === ""; + } + remove() { + this.isEditing = false; + this.parent.setEditingState(true); + this.parent.div.classList.add("freeTextEditing"); + super.remove(); + } + #extractText() { + const divs = this.editorDiv.getElementsByTagName("div"); + if (divs.length === 0) { + return this.editorDiv.innerText; + } + const buffer = []; + for (const div of divs) { + buffer.push(div.innerText.replace(/\r\n?|\n/, "")); + } + return buffer.join("\n"); + } + #setEditorDimensions() { + const [parentWidth, parentHeight] = this.parentDimensions; + let rect; + if (this.isAttachedToDOM) { + rect = this.div.getBoundingClientRect(); + } else { + const { + currentLayer, + div + } = this; + const savedDisplay = div.style.display; + div.style.display = "hidden"; + currentLayer.div.append(this.div); + rect = div.getBoundingClientRect(); + div.remove(); + div.style.display = savedDisplay; + } + this.width = rect.width / parentWidth; + this.height = rect.height / parentHeight; + } + commit() { + if (!this.isInEditMode()) { + return; + } + super.commit(); + this.disableEditMode(); + const savedText = this.#content; + const newText = this.#content = this.#extractText().trimEnd(); + if (savedText === newText) { + return; + } + const setText = text => { + this.#content = text; + if (!text) { + this.remove(); + return; + } + this.#setContent(); + this.rebuild(); + this.#setEditorDimensions(); + }; + this.addCommands({ + cmd: () => { + setText(newText); + }, + undo: () => { + setText(savedText); + }, + mustExec: false + }); + this.#setEditorDimensions(); + } + shouldGetKeyboardEvents() { + return this.isInEditMode(); + } + dblclick(event) { + this.enableEditMode(); + this.editorDiv.focus(); + } + keydown(event) { + if (event.target === this.div && event.key === "Enter") { + this.enableEditMode(); + this.editorDiv.focus(); + } + } + editorDivKeydown(event) { + FreeTextEditor._keyboardManager.exec(this, event); + } + editorDivFocus(event) { + this.isEditing = true; + } + editorDivBlur(event) { + this.isEditing = false; + } + editorDivInput(event) { + this.parent.div.classList.toggle("freeTextEditing", this.isEmpty()); + } + disableEditing() { + this.editorDiv.setAttribute("role", "comment"); + this.editorDiv.removeAttribute("aria-multiline"); + } + enableEditing() { + this.editorDiv.setAttribute("role", "textbox"); + this.editorDiv.setAttribute("aria-multiline", true); + } + render() { + if (this.div) { + return this.div; + } + let baseX, baseY; + if (this.width) { + baseX = this.x; + baseY = this.y; + } + super.render(); + this.editorDiv = document.createElement("div"); + this.editorDiv.className = "internal"; + this.editorDiv.setAttribute("id", this.#editorDivId); + this.enableEditing(); + FreeTextEditor._l10nPromise.get("editor_free_text2_aria_label").then(msg => this.editorDiv?.setAttribute("aria-label", msg)); + FreeTextEditor._l10nPromise.get("free_text2_default_content").then(msg => this.editorDiv?.setAttribute("default-content", msg)); + this.editorDiv.contentEditable = true; + const { + style + } = this.editorDiv; + style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`; + style.color = this.#color; + this.div.append(this.editorDiv); + this.overlayDiv = document.createElement("div"); + this.overlayDiv.classList.add("overlay", "enabled"); + this.div.append(this.overlayDiv); + (0, _tools.bindEvents)(this, this.div, ["dblclick", "keydown"]); + if (this.width) { + const [parentWidth, parentHeight] = this.parentDimensions; + if (this.annotationElementId) { + const [tx] = this.getInitialTranslation(); + this.setAt(baseX * parentWidth, baseY * parentHeight, tx, tx); + } else { + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + } + this.#setContent(); + this.div.draggable = true; + this.editorDiv.contentEditable = false; + } else { + this.div.draggable = false; + this.editorDiv.contentEditable = true; + } + return this.div; + } + #setContent() { + this.editorDiv.replaceChildren(); + if (!this.#content) { + return; + } + for (const line of this.#content.split("\n")) { + const div = document.createElement("div"); + div.append(line ? document.createTextNode(line) : document.createElement("br")); + this.editorDiv.append(div); + } + } + get contentDiv() { + return this.editorDiv; + } + static deserialize(data, parent, uiManager) { + let initialData = null; + if (data instanceof _annotation_layer.FreeTextAnnotationElement) { + const { + data: { + defaultAppearanceData: { + fontSize, + fontColor + }, + rect, + rotation, + id + }, + textContent, + parent: { + page: { + pageNumber + } + } + } = data; + if (!textContent || textContent.length === 0) { + return null; + } + initialData = data = { + annotationType: _util.AnnotationEditorType.FREETEXT, + color: Array.from(fontColor), + fontSize, + value: textContent.join("\n"), + pageIndex: pageNumber - 1, + rect, + rotation, + id, + deleted: false + }; + } + const editor = super.deserialize(data, parent, uiManager); + editor.#fontSize = data.fontSize; + editor.#color = _util.Util.makeHexColor(...data.color); + editor.#content = data.value; + editor.annotationElementId = data.id || null; + editor.#initialData = initialData; + return editor; + } + serialize(isForCopying = false) { + if (this.isEmpty()) { + return null; + } + if (this.deleted) { + return { + pageIndex: this.pageIndex, + id: this.annotationElementId, + deleted: true + }; + } + const padding = FreeTextEditor._internalPadding * this.parentScale; + const rect = this.getRect(padding, padding); + const color = _editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color); + const serialized = { + annotationType: _util.AnnotationEditorType.FREETEXT, + color, + fontSize: this.#fontSize, + value: this.#content, + pageIndex: this.pageIndex, + rect, + rotation: this.rotation + }; + if (isForCopying) { + return serialized; + } + if (this.annotationElementId && !this.#hasElementChanged(serialized)) { + return null; + } + serialized.id = this.annotationElementId; + return serialized; + } + #hasElementChanged(serialized) { + const { + value, + fontSize, + color, + rect, + pageIndex + } = this.#initialData; + return serialized.value !== value || serialized.fontSize !== fontSize || serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex; + } + #cheatInitialRect(delayed = false) { + if (!this.annotationElementId) { + return; + } + this.#setEditorDimensions(); + if (!delayed && (this.width === 0 || this.height === 0)) { + setTimeout(() => this.#cheatInitialRect(true), 0); + return; + } + const padding = FreeTextEditor._internalPadding * this.parentScale; + this.#initialData.rect = this.getRect(padding, padding); + } +} +exports.FreeTextEditor = FreeTextEditor; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.InkAnnotationElement = exports.FreeTextAnnotationElement = exports.AnnotationLayer = void 0; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +var _annotation_storage = __w_pdfjs_require__(3); +var _scripting_utils = __w_pdfjs_require__(30); +var _xfa_layer = __w_pdfjs_require__(31); +const DEFAULT_TAB_INDEX = 1000; +const DEFAULT_FONT_SIZE = 9; +const GetElementsByNameSet = new WeakSet(); +function getRectDims(rect) { + return { + width: rect[2] - rect[0], + height: rect[3] - rect[1] + }; +} +class AnnotationElementFactory { + static create(parameters) { + const subtype = parameters.data.annotationType; + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + case _util.AnnotationType.WIDGET: + const fieldType = parameters.data.fieldType; + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotationElement(parameters); + case "Btn": + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + return new PushButtonWidgetAnnotationElement(parameters); + case "Ch": + return new ChoiceWidgetAnnotationElement(parameters); + case "Sig": + return new SignatureWidgetAnnotationElement(parameters); + } + return new WidgetAnnotationElement(parameters); + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + case _util.AnnotationType.FREETEXT: + return new FreeTextAnnotationElement(parameters); + case _util.AnnotationType.LINE: + return new LineAnnotationElement(parameters); + case _util.AnnotationType.SQUARE: + return new SquareAnnotationElement(parameters); + case _util.AnnotationType.CIRCLE: + return new CircleAnnotationElement(parameters); + case _util.AnnotationType.POLYLINE: + return new PolylineAnnotationElement(parameters); + case _util.AnnotationType.CARET: + return new CaretAnnotationElement(parameters); + case _util.AnnotationType.INK: + return new InkAnnotationElement(parameters); + case _util.AnnotationType.POLYGON: + return new PolygonAnnotationElement(parameters); + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + case _util.AnnotationType.STAMP: + return new StampAnnotationElement(parameters); + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + default: + return new AnnotationElement(parameters); + } + } +} +class AnnotationElement { + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderForms = parameters.renderForms; + this.svgFactory = parameters.svgFactory; + this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._fieldObjects = parameters.fieldObjects; + this.parent = parameters.parent; + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + _createContainer(ignoreBorder) { + const { + data, + parent: { + page, + viewport + } + } = this; + const container = document.createElement("section"); + container.setAttribute("data-annotation-id", data.id); + container.style.zIndex = this.parent.zIndex++; + if (this.data.popupRef) { + container.setAttribute("aria-haspopup", "dialog"); + } + if (data.noRotate) { + container.classList.add("norotate"); + } + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + if (!data.rect || this instanceof PopupAnnotationElement) { + const { + rotation + } = data; + if (!data.hasOwnCanvas && rotation !== 0) { + this.setRotation(rotation, container); + } + return container; + } + const { + width, + height + } = getRectDims(data.rect); + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } else if (this instanceof RadioButtonWidgetAnnotationElement) { + const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = "solid"; + break; + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = "dashed"; + break; + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)("Unimplemented border style: beveled"); + break; + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)("Unimplemented border style: inset"); + break; + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = "solid"; + break; + default: + break; + } + const borderColor = data.borderColor || null; + if (borderColor) { + container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + container.style.left = `${100 * (rect[0] - pageX) / pageWidth}%`; + container.style.top = `${100 * (rect[1] - pageY) / pageHeight}%`; + const { + rotation + } = data; + if (data.hasOwnCanvas || rotation === 0) { + container.style.width = `${100 * width / pageWidth}%`; + container.style.height = `${100 * height / pageHeight}%`; + } else { + this.setRotation(rotation, container); + } + return container; + } + setRotation(angle, container = this.container) { + const { + pageWidth, + pageHeight + } = this.parent.viewport.rawDims; + const { + width, + height + } = getRectDims(this.data.rect); + let elementWidth, elementHeight; + if (angle % 180 === 0) { + elementWidth = 100 * width / pageWidth; + elementHeight = 100 * height / pageHeight; + } else { + elementWidth = 100 * height / pageWidth; + elementHeight = 100 * width / pageHeight; + } + container.style.width = `${elementWidth}%`; + container.style.height = `${elementHeight}%`; + container.setAttribute("data-main-rotation", (360 - angle) % 360); + } + get _commonActions() { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + }; + return (0, _util.shadow)(this, "_commonActions", { + display: event => { + const hidden = event.detail.display % 2 === 1; + this.container.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden, + print: event.detail.display === 0 || event.detail.display === 3 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + print: event.detail.print + }); + }, + hidden: event => { + this.container.style.visibility = event.detail.hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden: event.detail.hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + if (event.detail.readonly) { + event.target.setAttribute("readonly", ""); + } else { + event.target.removeAttribute("readonly"); + } + }, + required: event => { + this._setRequired(event.target, event.detail.required); + }, + bgColor: event => { + setColor("bgColor", "backgroundColor", event); + }, + fillColor: event => { + setColor("fillColor", "backgroundColor", event); + }, + fgColor: event => { + setColor("fgColor", "color", event); + }, + textColor: event => { + setColor("textColor", "color", event); + }, + borderColor: event => { + setColor("borderColor", "borderColor", event); + }, + strokeColor: event => { + setColor("strokeColor", "borderColor", event); + }, + rotation: event => { + const angle = event.detail.rotation; + this.setRotation(angle); + this.annotationStorage.setValue(this.data.id, { + rotation: angle + }); + } + }); + } + _dispatchEventFromSandbox(actions, jsEvent) { + const commonActions = this._commonActions; + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + action?.(jsEvent); + } + } + _setDefaultPropertiesFromJS(element) { + if (!this.enableScripting) { + return; + } + const storedData = this.annotationStorage.getRawValue(this.data.id); + if (!storedData) { + return; + } + const commonActions = this._commonActions; + for (const [actionName, detail] of Object.entries(storedData)) { + const action = commonActions[actionName]; + if (action) { + const eventProxy = { + detail: { + [actionName]: detail + }, + target: element + }; + action(eventProxy); + delete storedData[actionName]; + } + } + } + _createQuadrilaterals(ignoreBorder = false) { + if (!this.data.quadPoints) { + return null; + } + const quadrilaterals = []; + const savedRect = this.data.rect; + let firstQuadRect = null; + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + firstQuadRect ||= this.data.rect; + } + this.data.rect = savedRect; + this.firstQuadRect = firstQuadRect; + return quadrilaterals; + } + _createPopup() { + const { + container, + data + } = this; + container.setAttribute("aria-haspopup", "dialog"); + const popup = new PopupAnnotationElement({ + data: { + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + parentRect: this.firstQuadRect || data.rect, + borderStyle: 0, + id: `popup_${data.id}`, + rotation: data.rotation + }, + parent: this.parent, + elements: [this] + }); + this.parent.div.append(popup.render()); + } + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.classList.add(className); + } + return this.quadrilaterals; + } + render() { + (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); + } + _getElementsByName(name, skipId = null) { + const fields = []; + if (this._fieldObjects) { + const fieldObj = this._fieldObjects[name]; + if (fieldObj) { + for (const { + page, + id, + exportValues + } of fieldObj) { + if (page === -1) { + continue; + } + if (id === skipId) { + continue; + } + const exportValue = typeof exportValues === "string" ? exportValues : null; + const domElement = document.querySelector(`[data-element-id="${id}"]`); + if (domElement && !GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`); + continue; + } + fields.push({ + id, + exportValue, + domElement + }); + } + } + return fields; + } + for (const domElement of document.getElementsByName(name)) { + const { + exportValue + } = domElement; + const id = domElement.getAttribute("data-element-id"); + if (id === skipId) { + continue; + } + if (!GetElementsByNameSet.has(domElement)) { + continue; + } + fields.push({ + id, + exportValue, + domElement + }); + } + return fields; + } + show() { + if (this.container) { + this.container.hidden = false; + } + this.popup?.maybeShow(); + } + hide() { + if (this.container) { + this.container.hidden = true; + } + this.popup?.forceHide(); + } + getElementsToTriggerPopup() { + return this.quadrilaterals || this.container; + } + addHighlightArea() { + const triggers = this.getElementsToTriggerPopup(); + if (Array.isArray(triggers)) { + for (const element of triggers) { + element.classList.add("highlightArea"); + } + } else { + triggers.classList.add("highlightArea"); + } + } +} +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters, options = null) { + super(parameters, { + isRenderable: true, + ignoreBorder: !!options?.ignoreBorder, + createQuadrilaterals: true + }); + this.isTooltipOnly = parameters.data.isTooltipOnly; + } + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + link.setAttribute("data-element-id", data.id); + let isBound = false; + if (data.url) { + linkService.addLinkAttributes(link, data.url, data.newWindow); + isBound = true; + } else if (data.action) { + this._bindNamedAction(link, data.action); + isBound = true; + } else if (data.attachment) { + this._bindAttachment(link, data.attachment); + isBound = true; + } else if (data.setOCGState) { + this.#bindSetOCGState(link, data.setOCGState); + isBound = true; + } else if (data.dest) { + this._bindLink(link, data.dest); + isBound = true; + } else { + if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + this._bindJSAction(link, data); + isBound = true; + } + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + isBound = true; + } else if (this.isTooltipOnly && !isBound) { + this._bindLink(link, ""); + isBound = true; + } + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.append(linkElement); + return quadrilateral; + }); + } + this.container.classList.add("linkAnnotation"); + if (isBound) { + this.container.append(link); + } + return this.container; + } + #setInternalLink() { + this.container.setAttribute("data-internal-link", ""); + } + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + return false; + }; + if (destination || destination === "") { + this.#setInternalLink(); + } + } + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + this.#setInternalLink(); + } + _bindAttachment(link, attachment) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.downloadManager?.openOrDownloadData(this.container, attachment.content, attachment.filename); + return false; + }; + this.#setInternalLink(); + } + #bindSetOCGState(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeSetOCGState(action); + return false; + }; + this.#setInternalLink(); + } + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + if (!jsName) { + continue; + } + link[jsName] = () => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name + } + }); + return false; + }; + } + if (!link.onclick) { + link.onclick = () => false; + } + this.#setInternalLink(); + } + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + this.#setInternalLink(); + if (!this._fieldObjects) { + (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); + if (!otherClickAction) { + link.onclick = () => false; + } + return; + } + link.onclick = () => { + otherClickAction?.(); + const { + fields: resetFormFields, + refs: resetFormRefs, + include + } = resetForm; + const allFields = []; + if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) { + const fieldIds = new Set(resetFormRefs); + for (const fieldName of resetFormFields) { + const fields = this._fieldObjects[fieldName] || []; + for (const { + id + } of fields) { + fieldIds.add(id); + } + } + for (const fields of Object.values(this._fieldObjects)) { + for (const field of fields) { + if (fieldIds.has(field.id) === include) { + allFields.push(field); + } + } + } + } else { + for (const fields of Object.values(this._fieldObjects)) { + allFields.push(...fields); + } + } + const storage = this.annotationStorage; + const allIds = []; + for (const field of allFields) { + const { + id + } = field; + allIds.push(id); + switch (field.type) { + case "text": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + case "checkbox": + case "radiobutton": + { + const value = field.defaultValue === field.exportValues; + storage.setValue(id, { + value + }); + break; + } + case "combobox": + case "listbox": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + default: + continue; + } + const domElement = document.querySelector(`[data-element-id="${id}"]`); + if (!domElement) { + continue; + } else if (!GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`); + continue; + } + domElement.dispatchEvent(new Event("resetform")); + } + if (this.enableScripting) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: "app", + ids: allIds, + name: "ResetForm" + } + }); + } + return false; + }; + } +} +class TextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + render() { + this.container.classList.add("textAnnotation"); + const image = document.createElement("img"); + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.alt = "[{{type}} Annotation]"; + image.dataset.l10nId = "text_annotation_type"; + image.dataset.l10nArgs = JSON.stringify({ + type: this.data.name + }); + if (!this.data.popupRef) { + this._createPopup(); + } + this.container.append(image); + return this.container; + } +} +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + return this.container; + } + showElementAndHideCanvas(element) { + if (this.data.hasOwnCanvas) { + if (element.previousSibling?.nodeName === "CANVAS") { + element.previousSibling.hidden = true; + } + element.hidden = false; + } + } + _getKeyModifier(event) { + const { + isWin, + isMac + } = _util.FeatureTest.platform; + return isWin && event.ctrlKey || isMac && event.metaKey; + } + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event) + } + }); + }); + } + } + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + this._setEventListener(element, baseName, eventName, getter); + } + } + } + _setBackgroundColor(element) { + const color = this.data.backgroundColor || null; + element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]); + } + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontColor + } = this.data.defaultAppearanceData; + const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE; + const style = element.style; + let computedFontSize; + const BORDER_SIZE = 2; + const roundToOneDecimal = x => Math.round(10 * x) / 10; + if (this.data.multiLine) { + const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); + const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1; + const lineHeight = height / numberOfLines; + computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / _util.LINE_FACTOR)); + } else { + const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); + computedFontSize = Math.min(fontSize, roundToOneDecimal(height / _util.LINE_FACTOR)); + } + style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`; + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + } + _setRequired(element, isRequired) { + if (isRequired) { + element.setAttribute("required", true); + } else { + element.removeAttribute("required"); + } + element.setAttribute("aria-required", isRequired); + } +} +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + super(parameters, { + isRenderable + }); + } + setPropertyOnSiblings(base, key, value, keyInStorage) { + const storage = this.annotationStorage; + for (const element of this._getElementsByName(base.name, base.id)) { + if (element.domElement) { + element.domElement[key] = value; + } + storage.setValue(element.id, { + [keyInStorage]: value + }); + } + } + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.classList.add("textWidgetAnnotation"); + let element = null; + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let textContent = storedData.value || ""; + const maxLen = storage.getValue(id, { + charLimit: this.data.maxLen + }).charLimit; + if (maxLen && textContent.length > maxLen) { + textContent = textContent.slice(0, maxLen); + } + let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join("\n") || null; + if (fieldFormattedValues && this.data.comb) { + fieldFormattedValues = fieldFormattedValues.replaceAll(/\s+/g, ""); + } + const elementData = { + userValue: textContent, + formattedValue: fieldFormattedValues, + lastCommittedValue: null, + commitKey: 1 + }; + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = fieldFormattedValues ?? textContent; + if (this.data.doNotScroll) { + element.style.overflowY = "hidden"; + } + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", fieldFormattedValues ?? textContent); + if (this.data.doNotScroll) { + element.style.overflowX = "hidden"; + } + } + if (this.data.hasOwnCanvas) { + element.hidden = true; + } + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = this.data.readOnly; + element.name = this.data.baseFieldName || this.data.fieldName; + element.tabIndex = DEFAULT_TAB_INDEX; + this._setRequired(element, this.data.required); + if (maxLen) { + element.maxLength = maxLen; + } + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + elementData.formattedValue = null; + }); + element.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue ?? ""; + element.value = elementData.userValue = defaultValue; + elementData.formattedValue = null; + }); + let blurListener = event => { + const { + formattedValue + } = elementData; + if (formattedValue !== null && formattedValue !== undefined) { + event.target.value = formattedValue; + } + event.target.scrollLeft = 0; + }; + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("focus", event => { + const { + target + } = event; + if (elementData.userValue) { + target.value = elementData.userValue; + } + elementData.lastCommittedValue = target.value; + elementData.commitKey = 1; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + this.showElementAndHideCanvas(jsEvent.target); + const actions = { + value(event) { + elementData.userValue = event.detail.value ?? ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + event.target.value = elementData.userValue; + }, + formattedValue(event) { + const { + formattedValue + } = event.detail; + elementData.formattedValue = formattedValue; + if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) { + event.target.value = formattedValue; + } + storage.setValue(id, { + formattedValue + }); + }, + selRange(event) { + event.target.setSelectionRange(...event.detail.selRange); + }, + charLimit: event => { + const { + charLimit + } = event.detail; + const { + target + } = event; + if (charLimit === 0) { + target.removeAttribute("maxLength"); + return; + } + target.setAttribute("maxLength", charLimit); + let value = elementData.userValue; + if (!value || value.length <= charLimit) { + return; + } + value = value.slice(0, charLimit); + target.value = elementData.userValue = value; + storage.setValue(id, { + value + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: target.selectionStart, + selEnd: target.selectionEnd + } + }); + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + elementData.commitKey = 1; + let commitKey = -1; + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter" && !this.data.multiLine) { + commitKey = 2; + } else if (event.key === "Tab") { + elementData.commitKey = 3; + } + if (commitKey === -1) { + return; + } + const { + value + } = event.target; + if (elementData.lastCommittedValue === value) { + return; + } + elementData.lastCommittedValue = value; + elementData.userValue = value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + if (!event.relatedTarget) { + return; + } + const { + value + } = event.target; + elementData.userValue = value; + if (elementData.lastCommittedValue !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: elementData.commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + _blurListener(event); + }); + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + elementData.lastCommittedValue = null; + const { + data, + target + } = event; + const { + value, + selectionStart, + selectionEnd + } = target; + let selStart = selectionStart, + selEnd = selectionEnd; + switch (event.inputType) { + case "deleteWordBackward": + { + const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/); + if (match) { + selStart -= match[0].length; + } + break; + } + case "deleteWordForward": + { + const match = value.substring(selectionStart).match(/^[^\w]*\w*/); + if (match) { + selEnd += match[0].length; + } + break; + } + case "deleteContentBackward": + if (selectionStart === selectionEnd) { + selStart -= 1; + } + break; + case "deleteContentForward": + if (selectionStart === selectionEnd) { + selEnd += 1; + } + break; + } + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + change: data || "", + willCommit: false, + selStart, + selEnd + } + }); + }); + } + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + if (blurListener) { + element.addEventListener("blur", blurListener); + } + if (this.data.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`; + } + } else { + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; + } + this._setTextStyle(element); + this._setBackgroundColor(element); + this._setDefaultPropertiesFromJS(element); + this.container.append(element); + return this.container; + } +} +class SignatureWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: !!parameters.data.hasOwnCanvas + }); + } +} +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + render() { + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.exportValue === data.fieldValue + }).value; + if (typeof value === "string") { + value = value !== "Off"; + storage.setValue(id, { + value + }); + } + this.container.classList.add("buttonWidgetAnnotation", "checkBox"); + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + this._setRequired(element, this.data.required); + element.type = "checkbox"; + element.name = data.baseFieldName || data.fieldName; + if (value) { + element.setAttribute("checked", true); + } + element.setAttribute("exportValue", data.exportValue); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + for (const checkbox of this._getElementsByName(name, id)) { + const curChecked = checked && checkbox.exportValue === data.exportValue; + if (checkbox.domElement) { + checkbox.domElement.checked = curChecked; + } + storage.setValue(checkbox.id, { + value: curChecked + }); + } + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue || "Off"; + event.target.checked = defaultValue === data.exportValue; + }); + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + event.target.checked = event.detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + this._setBackgroundColor(element); + this._setDefaultPropertiesFromJS(element); + this.container.append(element); + return this.container; + } +} +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + render() { + this.container.classList.add("buttonWidgetAnnotation", "radioButton"); + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue === data.buttonValue + }).value; + if (typeof value === "string") { + value = value !== data.buttonValue; + storage.setValue(id, { + value + }); + } + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + this._setRequired(element, this.data.required); + element.type = "radio"; + element.name = data.baseFieldName || data.fieldName; + if (value) { + element.setAttribute("checked", true); + } + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + for (const radio of this._getElementsByName(name, id)) { + storage.setValue(radio.id, { + value: false + }); + } + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue; + event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue; + }); + if (this.enableScripting && this.hasJSActions) { + const pdfButtonValue = data.buttonValue; + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value: event => { + const checked = pdfButtonValue === event.detail.value; + for (const radio of this._getElementsByName(event.target.name)) { + const curChecked = checked && radio.id === id; + if (radio.domElement) { + radio.domElement.checked = curChecked; + } + storage.setValue(radio.id, { + value: curChecked + }); + } + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + this._setBackgroundColor(element); + this._setDefaultPropertiesFromJS(element); + this.container.append(element); + return this.container; + } +} +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + constructor(parameters) { + super(parameters, { + ignoreBorder: parameters.data.hasAppearance + }); + } + render() { + const container = super.render(); + container.classList.add("buttonWidgetAnnotation", "pushButton"); + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + const linkElement = container.lastChild; + if (this.enableScripting && this.hasJSActions && linkElement) { + this._setDefaultPropertiesFromJS(linkElement); + linkElement.addEventListener("updatefromsandbox", jsEvent => { + this._dispatchEventFromSandbox({}, jsEvent); + }); + } + return container; + } +} +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + render() { + this.container.classList.add("choiceWidgetAnnotation"); + const storage = this.annotationStorage; + const id = this.data.id; + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + const selectElement = document.createElement("select"); + GetElementsByNameSet.add(selectElement); + selectElement.setAttribute("data-element-id", id); + selectElement.disabled = this.data.readOnly; + this._setRequired(selectElement, this.data.required); + selectElement.name = this.data.baseFieldName || this.data.fieldName; + selectElement.tabIndex = DEFAULT_TAB_INDEX; + let addAnEmptyEntry = this.data.combo && this.data.options.length > 0; + if (!this.data.combo) { + selectElement.size = this.data.options.length; + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + selectElement.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue; + for (const option of selectElement.options) { + option.selected = option.value === defaultValue; + } + }); + for (const option of this.data.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + if (storedData.value.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + addAnEmptyEntry = false; + } + selectElement.append(optionElement); + } + let removeEmptyEntry = null; + if (addAnEmptyEntry) { + const noneOptionElement = document.createElement("option"); + noneOptionElement.value = " "; + noneOptionElement.setAttribute("hidden", true); + noneOptionElement.setAttribute("selected", true); + selectElement.prepend(noneOptionElement); + removeEmptyEntry = () => { + noneOptionElement.remove(); + selectElement.removeEventListener("input", removeEmptyEntry); + removeEmptyEntry = null; + }; + selectElement.addEventListener("input", removeEmptyEntry); + } + const getValue = isExport => { + const name = isExport ? "value" : "textContent"; + const { + options, + multiple + } = selectElement; + if (!multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + let selectedValues = getValue(false); + const getItems = event => { + const options = event.target.options; + return Array.prototype.map.call(options, option => { + return { + displayValue: option.textContent, + exportValue: option.value + }; + }); + }; + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + removeEmptyEntry?.(); + const value = event.detail.value; + const values = new Set(Array.isArray(value) ? value : [value]); + for (const option of selectElement.options) { + option.selected = values.has(option.value); + } + storage.setValue(id, { + value: getValue(true) + }); + selectedValues = getValue(false); + }, + multipleSelection(event) { + selectElement.multiple = true; + }, + remove(event) { + const options = selectElement.options; + const index = event.detail.remove; + options[index].selected = false; + selectElement.remove(index); + if (options.length > 0) { + const i = Array.prototype.findIndex.call(options, option => option.selected); + if (i === -1) { + options[0].selected = true; + } + } + storage.setValue(id, { + value: getValue(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + storage.setValue(id, { + value: null, + items: [] + }); + selectedValues = getValue(false); + }, + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const selectChild = selectElement.children[index]; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + if (selectChild) { + selectChild.before(optionElement); + } else { + selectElement.append(optionElement); + } + storage.setValue(id, { + value: getValue(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + items(event) { + const { + items + } = event.detail; + while (selectElement.length !== 0) { + selectElement.remove(0); + } + for (const item of items) { + const { + displayValue, + exportValue + } = item; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.append(optionElement); + } + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + storage.setValue(id, { + value: getValue(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + indices(event) { + const indices = new Set(event.detail.indices); + for (const option of event.target.options) { + option.selected = indices.has(option.index); + } + storage.setValue(id, { + value: getValue(true) + }); + selectedValues = getValue(false); + }, + editable(event) { + event.target.disabled = !event.detail.editable; + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(true); + storage.setValue(id, { + value: exportValue + }); + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: selectedValues, + changeEx: exportValue, + willCommit: false, + commitKey: 1, + keyDown: false + } + }); + }); + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"], ["input", "Validate"]], event => event.target.value); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(true) + }); + }); + } + if (this.data.combo) { + this._setTextStyle(selectElement); + } else {} + this._setBackgroundColor(selectElement); + this._setDefaultPropertiesFromJS(selectElement); + this.container.append(selectElement); + return this.container; + } +} +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + const { + data, + elements + } = parameters; + const isRenderable = !!(data.titleObj?.str || data.contentsObj?.str || data.richText?.str); + super(parameters, { + isRenderable + }); + this.elements = elements; + } + render() { + this.container.classList.add("popupAnnotation"); + const popup = new PopupElement({ + container: this.container, + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText, + rect: this.data.rect, + parentRect: this.data.parentRect || null, + parent: this.parent, + elements: this.elements, + open: this.data.open + }); + const elementIds = []; + for (const element of this.elements) { + element.popup = popup; + elementIds.push(element.data.id); + element.addHighlightArea(); + } + this.container.setAttribute("aria-controls", elementIds.join(",")); + return this.container; + } +} +class PopupElement { + #dateTimePromise = null; + #boundHide = this.#hide.bind(this); + #boundShow = this.#show.bind(this); + #boundToggle = this.#toggle.bind(this); + #color = null; + #container = null; + #contentsObj = null; + #elements = null; + #parent = null; + #parentRect = null; + #pinned = false; + #popup = null; + #rect = null; + #richText = null; + #titleObj = null; + #wasVisible = false; + constructor({ + container, + color, + elements, + titleObj, + modificationDate, + contentsObj, + richText, + parent, + rect, + parentRect, + open + }) { + this.#container = container; + this.#titleObj = titleObj; + this.#contentsObj = contentsObj; + this.#richText = richText; + this.#parent = parent; + this.#color = color; + this.#rect = rect; + this.#parentRect = parentRect; + this.#elements = elements; + const dateObject = _display_utils.PDFDateString.toDateObject(modificationDate); + if (dateObject) { + this.#dateTimePromise = parent.l10n.get("annotation_date_string", { + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + } + this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup()); + for (const element of this.trigger) { + element.addEventListener("click", this.#boundToggle); + element.addEventListener("mouseenter", this.#boundShow); + element.addEventListener("mouseleave", this.#boundHide); + } + this.#container.hidden = true; + if (open) { + this.#toggle(); + } + } + render() { + if (this.#popup) { + return; + } + const { + page: { + view + }, + viewport: { + rawDims: { + pageWidth, + pageHeight, + pageX, + pageY + } + } + } = this.#parent; + const popup = this.#popup = document.createElement("div"); + popup.className = "popup"; + if (this.#color) { + const baseColor = popup.style.outlineColor = _util.Util.makeHexColor(...this.#color); + if (CSS.supports("background-color", "color-mix(in srgb, red 30%, white)")) { + popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`; + } else { + const BACKGROUND_ENLIGHT = 0.7; + popup.style.backgroundColor = _util.Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c))); + } + } + const header = document.createElement("span"); + header.className = "header"; + const title = document.createElement("h1"); + header.append(title); + ({ + dir: title.dir, + str: title.textContent + } = this.#titleObj); + popup.append(header); + if (this.#dateTimePromise) { + const modificationDate = document.createElement("span"); + modificationDate.classList.add("popupDate"); + this.#dateTimePromise.then(localized => { + modificationDate.textContent = localized; + }); + header.append(modificationDate); + } + const contentsObj = this.#contentsObj; + const richText = this.#richText; + if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) { + _xfa_layer.XfaLayer.render({ + xfaHtml: richText.html, + intent: "richText", + div: popup + }); + popup.lastChild.classList.add("richText", "popupContent"); + } else { + const contents = this._formatContents(contentsObj); + popup.append(contents); + } + let useParentRect = !!this.#parentRect; + let rect = useParentRect ? this.#parentRect : this.#rect; + for (const element of this.#elements) { + if (!rect || _util.Util.intersect(element.data.rect, rect) !== null) { + rect = element.data.rect; + useParentRect = true; + break; + } + } + const normalizedRect = _util.Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]); + const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5; + const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0; + const popupLeft = normalizedRect[0] + parentWidth; + const popupTop = normalizedRect[1]; + const { + style + } = this.#container; + style.left = `${100 * (popupLeft - pageX) / pageWidth}%`; + style.top = `${100 * (popupTop - pageY) / pageHeight}%`; + this.#container.append(popup); + } + _formatContents({ + str, + dir + }) { + const p = document.createElement("p"); + p.classList.add("popupContent"); + p.dir = dir; + const lines = str.split(/(?:\r\n?|\n)/); + for (let i = 0, ii = lines.length; i < ii; ++i) { + const line = lines[i]; + p.append(document.createTextNode(line)); + if (i < ii - 1) { + p.append(document.createElement("br")); + } + } + return p; + } + #toggle() { + this.#pinned = !this.#pinned; + if (this.#pinned) { + this.#show(); + this.#container.addEventListener("click", this.#boundToggle); + } else { + this.#hide(); + this.#container.removeEventListener("click", this.#boundToggle); + } + } + #show() { + if (!this.#popup) { + this.render(); + } + if (!this.isVisible) { + this.#container.hidden = false; + this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000; + } else if (this.#pinned) { + this.#container.classList.add("focused"); + } + } + #hide() { + this.#container.classList.remove("focused"); + if (this.#pinned) { + return; + } + this.#container.hidden = true; + this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000; + } + forceHide() { + this.#wasVisible = this.isVisible; + if (!this.#wasVisible) { + return; + } + this.#container.hidden = true; + } + maybeShow() { + if (!this.#wasVisible) { + return; + } + this.#wasVisible = false; + this.#container.hidden = false; + } + get isVisible() { + return this.#container.hidden === false; + } +} +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.textContent = parameters.data.textContent; + this.annotationEditorType = _util.AnnotationEditorType.FREETEXT; + } + render() { + this.container.classList.add("freeTextAnnotation"); + if (this.textContent) { + const content = document.createElement("div"); + content.classList.add("annotationTextContent"); + content.setAttribute("role", "comment"); + for (const line of this.textContent) { + const lineSpan = document.createElement("span"); + lineSpan.textContent = line; + content.append(lineSpan); + } + this.container.append(content); + } + if (!this.data.popupRef) { + this._createPopup(); + } + return this.container; + } +} +exports.FreeTextAnnotationElement = FreeTextAnnotationElement; +class LineAnnotationElement extends AnnotationElement { + #line = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("lineAnnotation"); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const line = this.#line = this.svgFactory.createElement("svg:line"); + line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); + line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); + line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); + line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); + line.setAttribute("stroke-width", data.borderStyle.width || 1); + line.setAttribute("stroke", "transparent"); + line.setAttribute("fill", "transparent"); + svg.append(line); + this.container.append(svg); + if (!data.popupRef) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#line; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class SquareAnnotationElement extends AnnotationElement { + #square = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("squareAnnotation"); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const square = this.#square = this.svgFactory.createElement("svg:rect"); + square.setAttribute("x", borderWidth / 2); + square.setAttribute("y", borderWidth / 2); + square.setAttribute("width", width - borderWidth); + square.setAttribute("height", height - borderWidth); + square.setAttribute("stroke-width", borderWidth || 1); + square.setAttribute("stroke", "transparent"); + square.setAttribute("fill", "transparent"); + svg.append(square); + this.container.append(svg); + if (!data.popupRef) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#square; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class CircleAnnotationElement extends AnnotationElement { + #circle = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("circleAnnotation"); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const circle = this.#circle = this.svgFactory.createElement("svg:ellipse"); + circle.setAttribute("cx", width / 2); + circle.setAttribute("cy", height / 2); + circle.setAttribute("rx", width / 2 - borderWidth / 2); + circle.setAttribute("ry", height / 2 - borderWidth / 2); + circle.setAttribute("stroke-width", borderWidth || 1); + circle.setAttribute("stroke", "transparent"); + circle.setAttribute("fill", "transparent"); + svg.append(circle); + this.container.append(svg); + if (!data.popupRef) { + this._createPopup(); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#circle; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class PolylineAnnotationElement extends AnnotationElement { + #polyline = null; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + render() { + this.container.classList.add(this.containerClassName); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + let points = []; + for (const coordinate of data.vertices) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(x + "," + y); + } + points = points.join(" "); + const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + svg.append(polyline); + this.container.append(svg); + if (!data.popupRef) { + this._createPopup(polyline, data); + } + return this.container; + } + getElementsToTriggerPopup() { + return this.#polyline; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } +} +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("caretAnnotation"); + if (!this.data.popupRef) { + this._createPopup(); + } + return this.container; + } +} +class InkAnnotationElement extends AnnotationElement { + #polylines = []; + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + this.annotationEditorType = _util.AnnotationEditorType.INK; + } + render() { + this.container.classList.add(this.containerClassName); + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + for (const inkList of data.inkLists) { + let points = []; + for (const coordinate of inkList) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(`${x},${y}`); + } + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + this.#polylines.push(polyline); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + if (!data.popupRef) { + this._createPopup(polyline, data); + } + svg.append(polyline); + } + this.container.append(svg); + return this.container; + } + getElementsToTriggerPopup() { + return this.#polylines; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } +} +exports.InkAnnotationElement = InkAnnotationElement; +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + this.container.classList.add("highlightAnnotation"); + return this.container; + } +} +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + this.container.classList.add("underlineAnnotation"); + return this.container; + } +} +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + this.container.classList.add("squigglyAnnotation"); + return this.container; + } +} +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + render() { + if (!this.data.popupRef) { + this._createPopup(); + } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + this.container.classList.add("strikeoutAnnotation"); + return this.container; + } +} +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.popupRef || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + render() { + this.container.classList.add("stampAnnotation"); + if (!this.data.popupRef) { + this._createPopup(); + } + return this.container; + } +} +class FileAttachmentAnnotationElement extends AnnotationElement { + #trigger = null; + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename, true); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + render() { + this.container.classList.add("fileAttachmentAnnotation"); + let trigger; + if (this.data.hasAppearance) { + trigger = document.createElement("div"); + } else { + trigger = document.createElement("img"); + trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(this.data.name) ? "paperclip" : "pushpin"}.svg`; + } + trigger.classList.add("popupTriggerArea"); + trigger.addEventListener("dblclick", this._download.bind(this)); + this.#trigger = trigger; + if (!this.data.popupRef && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) { + this._createPopup(); + } + this.container.append(trigger); + return this.container; + } + getElementsToTriggerPopup() { + return this.#trigger; + } + addHighlightArea() { + this.container.classList.add("highlightArea"); + } + _download() { + this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); + } +} +class AnnotationLayer { + #accessibilityManager = null; + #annotationCanvasMap = null; + #editableAnnotations = new Map(); + constructor({ + div, + accessibilityManager, + annotationCanvasMap, + l10n, + page, + viewport + }) { + this.div = div; + this.#accessibilityManager = accessibilityManager; + this.#annotationCanvasMap = annotationCanvasMap; + this.l10n = l10n; + this.page = page; + this.viewport = viewport; + this.zIndex = 0; + const { + NullL10n + } = __w_pdfjs_require__(32); + this.l10n ||= NullL10n; + } + #appendElement(element, id) { + const contentElement = element.firstChild || element; + contentElement.id = `${_display_utils.AnnotationPrefix}${id}`; + this.div.append(element); + this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false); + } + async render(params) { + const { + annotations + } = params; + const layer = this.div; + (0, _display_utils.setLayerDimensions)(layer, this.viewport); + const popupToElements = new Map(); + const elementParams = { + data: null, + layer, + linkService: params.linkService, + downloadManager: params.downloadManager, + imageResourcesPath: params.imageResourcesPath || "", + renderForms: params.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: params.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: params.enableScripting === true, + hasJSActions: params.hasJSActions, + fieldObjects: params.fieldObjects, + parent: this, + elements: null + }; + for (const data of annotations) { + if (data.noHTML) { + continue; + } + const isPopupAnnotation = data.annotationType === _util.AnnotationType.POPUP; + if (!isPopupAnnotation) { + const { + width, + height + } = getRectDims(data.rect); + if (width <= 0 || height <= 0) { + continue; + } + } else { + const elements = popupToElements.get(data.id); + if (!elements) { + continue; + } + elementParams.elements = elements; + } + elementParams.data = data; + const element = AnnotationElementFactory.create(elementParams); + if (!element.isRenderable) { + continue; + } + if (!isPopupAnnotation && data.popupRef) { + const elements = popupToElements.get(data.popupRef); + if (!elements) { + popupToElements.set(data.popupRef, [element]); + } else { + elements.push(element); + } + } + if (element.annotationEditorType > 0) { + this.#editableAnnotations.set(element.data.id, element); + } + const rendered = element.render(); + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + this.#appendElement(renderedElement, data.id); + } + } else { + this.#appendElement(rendered, data.id); + } + } + this.#setAnnotationCanvasMap(); + await this.l10n.translate(layer); + } + update({ + viewport + }) { + const layer = this.div; + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(layer, { + rotation: viewport.rotation + }); + this.#setAnnotationCanvasMap(); + layer.hidden = false; + } + #setAnnotationCanvasMap() { + if (!this.#annotationCanvasMap) { + return; + } + const layer = this.div; + for (const [id, canvas] of this.#annotationCanvasMap) { + const element = layer.querySelector(`[data-annotation-id="${id}"]`); + if (!element) { + continue; + } + const { + firstChild + } = element; + if (!firstChild) { + element.append(canvas); + } else if (firstChild.nodeName === "CANVAS") { + firstChild.replaceWith(canvas); + } else { + firstChild.before(canvas); + } + } + this.#annotationCanvasMap.clear(); + } + getEditableAnnotations() { + return Array.from(this.#editableAnnotations.values()); + } + getEditableAnnotation(id) { + return this.#editableAnnotations.get(id); + } +} +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorConverters = void 0; +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + static RGB_HTML([r, g, b]) { + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + static T_HTML() { + return "#00000000"; + } + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + static CMYK_HTML(components) { + const rgb = this.CMYK_RGB(components).slice(1); + return this.RGB_HTML(rgb); + } + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } +} +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; +var _xfa_text = __w_pdfjs_require__(19); +class XfaLayer { + static setupStorage(html, id, element, storage, intent) { + const storedData = storage.getValue(id, { + value: null + }); + switch (element.name) { + case "textarea": + if (storedData.value !== null) { + html.textContent = storedData.value; + } + if (intent === "print") { + break; + } + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + break; + case "input": + if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { + if (storedData.value === element.attributes.xfaOn) { + html.setAttribute("checked", true); + } else if (storedData.value === element.attributes.xfaOff) { + html.removeAttribute("checked"); + } + if (intent === "print") { + break; + } + html.addEventListener("change", event => { + storage.setValue(id, { + value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff") + }); + }); + } else { + if (storedData.value !== null) { + html.setAttribute("value", storedData.value); + } + if (intent === "print") { + break; + } + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + } + break; + case "select": + if (storedData.value !== null) { + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } + } + } + html.addEventListener("input", event => { + const options = event.target.options; + const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; + storage.setValue(id, { + value + }); + }); + break; + } + } + static setAttributes({ + html, + element, + storage = null, + intent, + linkService + }) { + const { + attributes + } = element; + const isHTMLAnchorElement = html instanceof HTMLAnchorElement; + if (attributes.type === "radio") { + attributes.name = `${attributes.name}-${intent}`; + } + for (const [key, value] of Object.entries(attributes)) { + if (value === null || value === undefined) { + continue; + } + switch (key) { + case "class": + if (value.length) { + html.setAttribute(key, value.join(" ")); + } + break; + case "dataId": + break; + case "id": + html.setAttribute("data-element-id", value); + break; + case "style": + Object.assign(html.style, value); + break; + case "textContent": + html.textContent = value; + break; + default: + if (!isHTMLAnchorElement || key !== "href" && key !== "newWindow") { + html.setAttribute(key, value); + } + } + } + if (isHTMLAnchorElement) { + linkService.addLinkAttributes(html, attributes.href, attributes.newWindow); + } + if (storage && attributes.dataId) { + this.setupStorage(html, attributes.dataId, element, storage); + } + } + static render(parameters) { + const storage = parameters.annotationStorage; + const linkService = parameters.linkService; + const root = parameters.xfaHtml; + const intent = parameters.intent || "display"; + const rootHtml = document.createElement(root.name); + if (root.attributes) { + this.setAttributes({ + html: rootHtml, + element: root, + intent, + linkService + }); + } + const stack = [[root, -1, rootHtml]]; + const rootDiv = parameters.div; + rootDiv.append(rootHtml); + if (parameters.viewport) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + } + if (intent !== "richText") { + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + } + const textDivs = []; + while (stack.length > 0) { + const [parent, i, html] = stack.at(-1); + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + const child = parent.children[++stack.at(-1)[1]]; + if (child === null) { + continue; + } + const { + name + } = child; + if (name === "#text") { + const node = document.createTextNode(child.value); + textDivs.push(node); + html.append(node); + continue; + } + let childHtml; + if (child?.attributes?.xmlns) { + childHtml = document.createElementNS(child.attributes.xmlns, name); + } else { + childHtml = document.createElement(name); + } + html.append(childHtml); + if (child.attributes) { + this.setAttributes({ + html: childHtml, + element: child, + storage, + intent, + linkService + }); + } + if (child.children && child.children.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + const node = document.createTextNode(child.value); + if (_xfa_text.XfaText.shouldBuildText(name)) { + textDivs.push(node); + } + childHtml.append(node); + } + } + for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { + el.setAttribute("readOnly", true); + } + return { + textDivs + }; + } + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + parameters.div.style.transform = transform; + parameters.div.hidden = false; + } +} +exports.XfaLayer = XfaLayer; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NullL10n = void 0; +exports.getL10nFallback = getL10nFallback; +const DEFAULT_L10N_STRINGS = { + of_pages: "of {{pagesCount}}", + page_of_pages: "({{pageNumber}} of {{pagesCount}})", + document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", + document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", + document_properties_date_string: "{{date}}, {{time}}", + document_properties_page_size_unit_inches: "in", + document_properties_page_size_unit_millimeters: "mm", + document_properties_page_size_orientation_portrait: "portrait", + document_properties_page_size_orientation_landscape: "landscape", + document_properties_page_size_name_a3: "A3", + document_properties_page_size_name_a4: "A4", + document_properties_page_size_name_letter: "Letter", + document_properties_page_size_name_legal: "Legal", + document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", + document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", + document_properties_linearized_yes: "Yes", + document_properties_linearized_no: "No", + additional_layers: "Additional Layers", + page_landmark: "Page {{page}}", + thumb_page_title: "Page {{page}}", + thumb_page_canvas: "Thumbnail of Page {{page}}", + find_reached_top: "Reached top of document, continued from bottom", + find_reached_bottom: "Reached end of document, continued from top", + "find_match_count[one]": "{{current}} of {{total}} match", + "find_match_count[other]": "{{current}} of {{total}} matches", + "find_match_count_limit[one]": "More than {{limit}} match", + "find_match_count_limit[other]": "More than {{limit}} matches", + find_not_found: "Phrase not found", + page_scale_width: "Page Width", + page_scale_fit: "Page Fit", + page_scale_auto: "Automatic Zoom", + page_scale_actual: "Actual Size", + page_scale_percent: "{{scale}}%", + loading_error: "An error occurred while loading the PDF.", + invalid_file_error: "Invalid or corrupted PDF file.", + missing_file_error: "Missing PDF file.", + unexpected_response_error: "Unexpected server response.", + rendering_error: "An error occurred while rendering the page.", + annotation_date_string: "{{date}}, {{time}}", + printing_not_supported: "Warning: Printing is not fully supported by this browser.", + printing_not_ready: "Warning: The PDF is not fully loaded for printing.", + web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts.", + free_text2_default_content: "Start typing…", + editor_free_text2_aria_label: "Text Editor", + editor_ink2_aria_label: "Draw Editor", + editor_ink_canvas_aria_label: "User-created image" +}; +{ + DEFAULT_L10N_STRINGS.print_progress_percent = "{{progress}}%"; +} +function getL10nFallback(key, args) { + switch (key) { + case "find_match_count": + key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; + break; + case "find_match_count_limit": + key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; + break; + } + return DEFAULT_L10N_STRINGS[key] || ""; +} +function formatL10nValue(text, args) { + if (!args) { + return text; + } + return text.replaceAll(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { + return name in args ? args[name] : "{{" + name + "}}"; + }); +} +const NullL10n = { + async getLanguage() { + return "en-us"; + }, + async getDirection() { + return "ltr"; + }, + async get(key, args = null, fallback = getL10nFallback(key, args)) { + return formatL10nValue(fallback, args); + }, + async translate(element) {} +}; +exports.NullL10n = NullL10n; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.InkEditor = void 0; +var _util = __w_pdfjs_require__(1); +var _editor = __w_pdfjs_require__(4); +var _annotation_layer = __w_pdfjs_require__(29); +var _tools = __w_pdfjs_require__(5); +const RESIZER_SIZE = 16; +class InkEditor extends _editor.AnnotationEditor { + #aspectRatio = 0; + #baseHeight = 0; + #baseWidth = 0; + #boundCanvasContextMenu = this.canvasContextMenu.bind(this); + #boundCanvasPointermove = this.canvasPointermove.bind(this); + #boundCanvasPointerleave = this.canvasPointerleave.bind(this); + #boundCanvasPointerup = this.canvasPointerup.bind(this); + #boundCanvasPointerdown = this.canvasPointerdown.bind(this); + #currentPath2D = new Path2D(); + #disableEditing = false; + #hasSomethingToDraw = false; + #isCanvasInitialized = false; + #observer = null; + #realWidth = 0; + #realHeight = 0; + #requestFrameCallback = null; + static _defaultColor = null; + static _defaultOpacity = 1; + static _defaultThickness = 1; + static _l10nPromise; + static _type = "ink"; + constructor(params) { + super({ + ...params, + name: "inkEditor" + }); + this.color = params.color || null; + this.thickness = params.thickness || null; + this.opacity = params.opacity || null; + this.paths = []; + this.bezierPath2D = []; + this.allRawPaths = []; + this.currentPath = []; + this.scaleFactor = 1; + this.translationX = this.translationY = 0; + this.x = 0; + this.y = 0; + } + static initialize(l10n) { + this._l10nPromise = new Map(["editor_ink_canvas_aria_label", "editor_ink2_aria_label"].map(str => [str, l10n.get(str)])); + } + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + InkEditor._defaultThickness = value; + break; + case _util.AnnotationEditorParamsType.INK_COLOR: + InkEditor._defaultColor = value; + break; + case _util.AnnotationEditorParamsType.INK_OPACITY: + InkEditor._defaultOpacity = value / 100; + break; + } + } + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + this.#updateThickness(value); + break; + case _util.AnnotationEditorParamsType.INK_COLOR: + this.#updateColor(value); + break; + case _util.AnnotationEditorParamsType.INK_OPACITY: + this.#updateOpacity(value); + break; + } + } + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]]; + } + get propertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]]; + } + #updateThickness(thickness) { + const savedThickness = this.thickness; + this.addCommands({ + cmd: () => { + this.thickness = thickness; + this.#fitToContent(); + }, + undo: () => { + this.thickness = savedThickness; + this.#fitToContent(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_THICKNESS, + overwriteIfSameType: true, + keepUndo: true + }); + } + #updateColor(color) { + const savedColor = this.color; + this.addCommands({ + cmd: () => { + this.color = color; + this.#redraw(); + }, + undo: () => { + this.color = savedColor; + this.#redraw(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + #updateOpacity(opacity) { + opacity /= 100; + const savedOpacity = this.opacity; + this.addCommands({ + cmd: () => { + this.opacity = opacity; + this.#redraw(); + }, + undo: () => { + this.opacity = savedOpacity; + this.#redraw(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_OPACITY, + overwriteIfSameType: true, + keepUndo: true + }); + } + rebuild() { + super.rebuild(); + if (this.div === null) { + return; + } + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + if (!this.isAttachedToDOM) { + this.parent.add(this); + this.#setCanvasDims(); + } + this.#fitToContent(); + } + remove() { + if (this.canvas === null) { + return; + } + if (!this.isEmpty()) { + this.commit(); + } + this.canvas.width = this.canvas.height = 0; + this.canvas.remove(); + this.canvas = null; + this.#observer.disconnect(); + this.#observer = null; + super.remove(); + } + setParent(parent) { + if (!this.parent && parent) { + this._uiManager.removeShouldRescale(this); + } else if (this.parent && parent === null) { + this._uiManager.addShouldRescale(this); + } + super.setParent(parent); + } + onScaleChanging() { + const [parentWidth, parentHeight] = this.parentDimensions; + const width = this.width * parentWidth; + const height = this.height * parentHeight; + this.setDimensions(width, height); + } + enableEditMode() { + if (this.#disableEditing || this.canvas === null) { + return; + } + super.enableEditMode(); + this.div.draggable = false; + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + } + disableEditMode() { + if (!this.isInEditMode() || this.canvas === null) { + return; + } + super.disableEditMode(); + this.div.draggable = !this.isEmpty(); + this.div.classList.remove("editing"); + this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown); + } + onceAdded() { + this.div.draggable = !this.isEmpty(); + } + isEmpty() { + return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0; + } + #getInitialBBox() { + const { + parentRotation, + parentDimensions: [width, height] + } = this; + switch (parentRotation) { + case 90: + return [0, height, height, width]; + case 180: + return [width, height, width, height]; + case 270: + return [width, 0, height, width]; + default: + return [0, 0, width, height]; + } + } + #setStroke() { + const { + ctx, + color, + opacity, + thickness, + parentScale, + scaleFactor + } = this; + ctx.lineWidth = thickness * parentScale / scaleFactor; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.miterLimit = 10; + ctx.strokeStyle = `${color}${(0, _tools.opacityToHex)(opacity)}`; + } + #startDrawing(x, y) { + this.canvas.addEventListener("contextmenu", this.#boundCanvasContextMenu); + this.canvas.addEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.addEventListener("pointermove", this.#boundCanvasPointermove); + this.canvas.addEventListener("pointerup", this.#boundCanvasPointerup); + this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown); + this.isEditing = true; + if (!this.#isCanvasInitialized) { + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.thickness ||= InkEditor._defaultThickness; + this.color ||= InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor; + this.opacity ??= InkEditor._defaultOpacity; + } + this.currentPath.push([x, y]); + this.#hasSomethingToDraw = false; + this.#setStroke(); + this.#requestFrameCallback = () => { + this.#drawPoints(); + if (this.#requestFrameCallback) { + window.requestAnimationFrame(this.#requestFrameCallback); + } + }; + window.requestAnimationFrame(this.#requestFrameCallback); + } + #draw(x, y) { + const [lastX, lastY] = this.currentPath.at(-1); + if (this.currentPath.length > 1 && x === lastX && y === lastY) { + return; + } + const currentPath = this.currentPath; + let path2D = this.#currentPath2D; + currentPath.push([x, y]); + this.#hasSomethingToDraw = true; + if (currentPath.length <= 2) { + path2D.moveTo(...currentPath[0]); + path2D.lineTo(x, y); + return; + } + if (currentPath.length === 3) { + this.#currentPath2D = path2D = new Path2D(); + path2D.moveTo(...currentPath[0]); + } + this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y); + } + #endPath() { + if (this.currentPath.length === 0) { + return; + } + const lastPoint = this.currentPath.at(-1); + this.#currentPath2D.lineTo(...lastPoint); + } + #stopDrawing(x, y) { + this.#requestFrameCallback = null; + x = Math.min(Math.max(x, 0), this.canvas.width); + y = Math.min(Math.max(y, 0), this.canvas.height); + this.#draw(x, y); + this.#endPath(); + let bezier; + if (this.currentPath.length !== 1) { + bezier = this.#generateBezierPoints(); + } else { + const xy = [x, y]; + bezier = [[xy, xy.slice(), xy.slice(), xy]]; + } + const path2D = this.#currentPath2D; + const currentPath = this.currentPath; + this.currentPath = []; + this.#currentPath2D = new Path2D(); + const cmd = () => { + this.allRawPaths.push(currentPath); + this.paths.push(bezier); + this.bezierPath2D.push(path2D); + this.rebuild(); + }; + const undo = () => { + this.allRawPaths.pop(); + this.paths.pop(); + this.bezierPath2D.pop(); + if (this.paths.length === 0) { + this.remove(); + } else { + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + this.#fitToContent(); + } + }; + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + #drawPoints() { + if (!this.#hasSomethingToDraw) { + return; + } + this.#hasSomethingToDraw = false; + const thickness = Math.ceil(this.thickness * this.parentScale); + const lastPoints = this.currentPath.slice(-3); + const x = lastPoints.map(xy => xy[0]); + const y = lastPoints.map(xy => xy[1]); + const xMin = Math.min(...x) - thickness; + const xMax = Math.max(...x) + thickness; + const yMin = Math.min(...y) - thickness; + const yMax = Math.max(...y) + thickness; + const { + ctx + } = this; + ctx.save(); + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } + ctx.stroke(this.#currentPath2D); + ctx.restore(); + } + #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) { + const prevX = (x0 + x1) / 2; + const prevY = (y0 + y1) / 2; + const x3 = (x1 + x2) / 2; + const y3 = (y1 + y2) / 2; + path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3); + } + #generateBezierPoints() { + const path = this.currentPath; + if (path.length <= 2) { + return [[path[0], path[0], path.at(-1), path.at(-1)]]; + } + const bezierPoints = []; + let i; + let [x0, y0] = path[0]; + for (i = 1; i < path.length - 2; i++) { + const [x1, y1] = path[i]; + const [x2, y2] = path[i + 1]; + const x3 = (x1 + x2) / 2; + const y3 = (y1 + y2) / 2; + const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3]; + const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3]; + bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]); + [x0, y0] = [x3, y3]; + } + const [x1, y1] = path[i]; + const [x2, y2] = path[i + 1]; + const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3]; + const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3]; + bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]); + return bezierPoints; + } + #redraw() { + if (this.isEmpty()) { + this.#updateTransform(); + return; + } + this.#setStroke(); + const { + canvas, + ctx + } = this; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.clearRect(0, 0, canvas.width, canvas.height); + this.#updateTransform(); + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } + } + commit() { + if (this.#disableEditing) { + return; + } + super.commit(); + this.isEditing = false; + this.disableEditMode(); + this.setInForeground(); + this.#disableEditing = true; + this.div.classList.add("disabled"); + this.#fitToContent(true); + this.parent.addInkEditorIfNeeded(true); + this.parent.moveEditorInDOM(this); + this.div.focus({ + preventScroll: true + }); + } + focusin(event) { + super.focusin(event); + this.enableEditMode(); + } + canvasPointerdown(event) { + if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) { + return; + } + this.setInForeground(); + event.preventDefault(); + if (event.type !== "mouse") { + this.div.focus(); + } + this.#startDrawing(event.offsetX, event.offsetY); + } + canvasContextMenu(event) { + event.preventDefault(); + } + canvasPointermove(event) { + event.preventDefault(); + this.#draw(event.offsetX, event.offsetY); + } + canvasPointerup(event) { + event.preventDefault(); + this.#endDrawing(event); + } + canvasPointerleave(event) { + this.#endDrawing(event); + } + #endDrawing(event) { + this.canvas.removeEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.removeEventListener("pointermove", this.#boundCanvasPointermove); + this.canvas.removeEventListener("pointerup", this.#boundCanvasPointerup); + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + setTimeout(() => { + this.canvas.removeEventListener("contextmenu", this.#boundCanvasContextMenu); + }, 10); + this.#stopDrawing(event.offsetX, event.offsetY); + this.addToAnnotationStorage(); + this.setInBackground(); + } + #createCanvas() { + this.canvas = document.createElement("canvas"); + this.canvas.width = this.canvas.height = 0; + this.canvas.className = "inkEditorCanvas"; + InkEditor._l10nPromise.get("editor_ink_canvas_aria_label").then(msg => this.canvas?.setAttribute("aria-label", msg)); + this.div.append(this.canvas); + this.ctx = this.canvas.getContext("2d"); + } + #createObserver() { + this.#observer = new ResizeObserver(entries => { + const rect = entries[0].contentRect; + if (rect.width && rect.height) { + this.setDimensions(rect.width, rect.height); + } + }); + this.#observer.observe(this.div); + } + render() { + if (this.div) { + return this.div; + } + let baseX, baseY; + if (this.width) { + baseX = this.x; + baseY = this.y; + } + super.render(); + InkEditor._l10nPromise.get("editor_ink2_aria_label").then(msg => this.div?.setAttribute("aria-label", msg)); + const [x, y, w, h] = this.#getInitialBBox(); + this.setAt(x, y, 0, 0); + this.setDims(w, h); + this.#createCanvas(); + if (this.width) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.setDims(this.width * parentWidth, this.height * parentHeight); + this.#redraw(); + this.#setMinDims(); + this.div.classList.add("disabled"); + } else { + this.div.classList.add("editing"); + this.enableEditMode(); + } + this.#createObserver(); + return this.div; + } + #setCanvasDims() { + if (!this.#isCanvasInitialized) { + return; + } + const [parentWidth, parentHeight] = this.parentDimensions; + this.canvas.width = Math.ceil(this.width * parentWidth); + this.canvas.height = Math.ceil(this.height * parentHeight); + this.#updateTransform(); + } + setDimensions(width, height) { + const roundedWidth = Math.round(width); + const roundedHeight = Math.round(height); + if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) { + return; + } + this.#realWidth = roundedWidth; + this.#realHeight = roundedHeight; + this.canvas.style.visibility = "hidden"; + if (this.#aspectRatio && Math.abs(this.#aspectRatio - width / height) > 1e-2) { + height = Math.ceil(width / this.#aspectRatio); + this.setDims(width, height); + } + const [parentWidth, parentHeight] = this.parentDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + if (this.#disableEditing) { + this.#setScaleFactor(width, height); + } + this.#setCanvasDims(); + this.#redraw(); + this.canvas.style.visibility = "visible"; + this.fixDims(); + } + #setScaleFactor(width, height) { + const padding = this.#getPadding(); + const scaleFactorW = (width - padding) / this.#baseWidth; + const scaleFactorH = (height - padding) / this.#baseHeight; + this.scaleFactor = Math.min(scaleFactorW, scaleFactorH); + } + #updateTransform() { + const padding = this.#getPadding() / 2; + this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding); + } + static #buildPath2D(bezier) { + const path2D = new Path2D(); + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + if (i === 0) { + path2D.moveTo(...first); + } + path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]); + } + return path2D; + } + static #toPDFCoordinates(points, rect, rotation) { + const [blX, blY, trX, trY] = rect; + switch (rotation) { + case 0: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] += blX; + points[i + 1] = trY - points[i + 1]; + } + break; + case 90: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = points[i + 1] + blX; + points[i + 1] = x + blY; + } + break; + case 180: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] = trX - points[i]; + points[i + 1] += blY; + } + break; + case 270: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = trX - points[i + 1]; + points[i + 1] = trY - x; + } + break; + default: + throw new Error("Invalid rotation"); + } + return points; + } + static #fromPDFCoordinates(points, rect, rotation) { + const [blX, blY, trX, trY] = rect; + switch (rotation) { + case 0: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] -= blX; + points[i + 1] = trY - points[i + 1]; + } + break; + case 90: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = points[i + 1] - blY; + points[i + 1] = x - blX; + } + break; + case 180: + for (let i = 0, ii = points.length; i < ii; i += 2) { + points[i] = trX - points[i]; + points[i + 1] -= blY; + } + break; + case 270: + for (let i = 0, ii = points.length; i < ii; i += 2) { + const x = points[i]; + points[i] = trY - points[i + 1]; + points[i + 1] = trX - x; + } + break; + default: + throw new Error("Invalid rotation"); + } + return points; + } + #serializePaths(s, tx, ty, rect) { + const paths = []; + const padding = this.thickness / 2; + const shiftX = s * tx + padding; + const shiftY = s * ty + padding; + for (const bezier of this.paths) { + const buffer = []; + const points = []; + for (let j = 0, jj = bezier.length; j < jj; j++) { + const [first, control1, control2, second] = bezier[j]; + const p10 = s * first[0] + shiftX; + const p11 = s * first[1] + shiftY; + const p20 = s * control1[0] + shiftX; + const p21 = s * control1[1] + shiftY; + const p30 = s * control2[0] + shiftX; + const p31 = s * control2[1] + shiftY; + const p40 = s * second[0] + shiftX; + const p41 = s * second[1] + shiftY; + if (j === 0) { + buffer.push(p10, p11); + points.push(p10, p11); + } + buffer.push(p20, p21, p30, p31, p40, p41); + points.push(p20, p21); + if (j === jj - 1) { + points.push(p40, p41); + } + } + paths.push({ + bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation), + points: InkEditor.#toPDFCoordinates(points, rect, this.rotation) + }); + } + return paths; + } + #getBbox() { + let xMin = Infinity; + let xMax = -Infinity; + let yMin = Infinity; + let yMax = -Infinity; + for (const path of this.paths) { + for (const [first, control1, control2, second] of path) { + const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second); + xMin = Math.min(xMin, bbox[0]); + yMin = Math.min(yMin, bbox[1]); + xMax = Math.max(xMax, bbox[2]); + yMax = Math.max(yMax, bbox[3]); + } + } + return [xMin, yMin, xMax, yMax]; + } + #getPadding() { + return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0; + } + #fitToContent(firstTime = false) { + if (this.isEmpty()) { + return; + } + if (!this.#disableEditing) { + this.#redraw(); + return; + } + const bbox = this.#getBbox(); + const padding = this.#getPadding(); + this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]); + this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]); + const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor); + const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor); + const [parentWidth, parentHeight] = this.parentDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + this.#aspectRatio = width / height; + this.#setMinDims(); + const prevTranslationX = this.translationX; + const prevTranslationY = this.translationY; + this.translationX = -bbox[0]; + this.translationY = -bbox[1]; + this.#setCanvasDims(); + this.#redraw(); + this.#realWidth = width; + this.#realHeight = height; + this.setDims(width, height); + const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0; + this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding); + } + #setMinDims() { + const { + style + } = this.div; + if (this.#aspectRatio >= 1) { + style.minHeight = `${RESIZER_SIZE}px`; + style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`; + } else { + style.minWidth = `${RESIZER_SIZE}px`; + style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`; + } + } + static deserialize(data, parent, uiManager) { + if (data instanceof _annotation_layer.InkAnnotationElement) { + return null; + } + const editor = super.deserialize(data, parent, uiManager); + editor.thickness = data.thickness; + editor.color = _util.Util.makeHexColor(...data.color); + editor.opacity = data.opacity; + const [pageWidth, pageHeight] = editor.pageDimensions; + const width = editor.width * pageWidth; + const height = editor.height * pageHeight; + const scaleFactor = editor.parentScale; + const padding = data.thickness / 2; + editor.#aspectRatio = width / height; + editor.#disableEditing = true; + editor.#realWidth = Math.round(width); + editor.#realHeight = Math.round(height); + const { + paths, + rect, + rotation + } = data; + for (let { + bezier + } of paths) { + bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation); + const path = []; + editor.paths.push(path); + let p0 = scaleFactor * (bezier[0] - padding); + let p1 = scaleFactor * (bezier[1] - padding); + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const p10 = scaleFactor * (bezier[i] - padding); + const p11 = scaleFactor * (bezier[i + 1] - padding); + const p20 = scaleFactor * (bezier[i + 2] - padding); + const p21 = scaleFactor * (bezier[i + 3] - padding); + const p30 = scaleFactor * (bezier[i + 4] - padding); + const p31 = scaleFactor * (bezier[i + 5] - padding); + path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]); + p0 = p30; + p1 = p31; + } + const path2D = this.#buildPath2D(path); + editor.bezierPath2D.push(path2D); + } + const bbox = editor.#getBbox(); + editor.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]); + editor.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]); + editor.#setScaleFactor(width, height); + return editor; + } + serialize() { + if (this.isEmpty()) { + return null; + } + const rect = this.getRect(0, 0); + const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle); + return { + annotationType: _util.AnnotationEditorType.INK, + color, + thickness: this.thickness, + opacity: this.opacity, + paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect), + pageIndex: this.pageIndex, + rect, + rotation: this.rotation + }; + } +} +exports.InkEditor = InkEditor; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SVGGraphics = void 0; +var _display_utils = __w_pdfjs_require__(6); +var _util = __w_pdfjs_require__(1); +var _is_node = __w_pdfjs_require__(10); +; +const SVG_DEFAULTS = { + fontStyle: "normal", + fontWeight: "normal", + fillColor: "#000000" +}; +const XML_NS = "http://www.w3.org/XML/1998/namespace"; +const XLINK_NS = "http://www.w3.org/1999/xlink"; +const LINE_CAP_STYLES = ["butt", "round", "square"]; +const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; +const createObjectURL = function (data, contentType = "", forceDataSchema = false) { + if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) { + return URL.createObjectURL(new Blob([data], { + type: contentType + })); + } + const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + let buffer = `data:${contentType};base64,`; + for (let i = 0, ii = data.length; i < ii; i += 3) { + const b1 = data[i] & 0xff; + const b2 = data[i + 1] & 0xff; + const b3 = data[i + 2] & 0xff; + const d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; + const d4 = i + 2 < ii ? b3 & 0x3f : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; + } + return buffer; +}; +const convertImgDataToPng = function () { + const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + const CHUNK_WRAPPER_SIZE = 12; + const crcTable = new Int32Array(256); + for (let i = 0; i < 256; i++) { + let c = i; + for (let h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedb88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } + } + crcTable[i] = c; + } + function crc32(data, start, end) { + let crc = -1; + for (let i = start; i < end; i++) { + const a = (crc ^ data[i]) & 0xff; + const b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + return crc ^ -1; + } + function writePngChunk(type, body, data, offset) { + let p = offset; + const len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + const crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + function adler32(data, start, end) { + let a = 1; + let b = 0; + for (let i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + return b << 16 | a; + } + function deflateSync(literals) { + if (!_is_node.isNodeJS) { + return deflateSyncUncompressed(literals); + } + try { + let input; + if (parseInt(process.versions.node) >= 8) { + input = literals; + } else { + input = Buffer.from(literals); + } + const output = require("zlib").deflateSync(input, { + level: 9 + }); + return output instanceof Uint8Array ? output : new Uint8Array(output); + } catch (e) { + (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); + } + return deflateSyncUncompressed(literals); + } + function deflateSyncUncompressed(literals) { + let len = literals.length; + const maxBlockLength = 0xffff; + const deflateBlocks = Math.ceil(len / maxBlockLength); + const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + let pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + let pos = 0; + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + const adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + return idat; + } + function encode(imgData, kind, forceDataSchema, isMask) { + const width = imgData.width; + const height = imgData.height; + let bitDepth, colorType, lineSize; + const bytes = imgData.data; + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + default: + throw new Error("invalid format"); + } + const literals = new Uint8Array((1 + lineSize) * height); + let offsetLiterals = 0, + offsetBytes = 0; + for (let y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { + offsetLiterals = 0; + for (let y = 0; y < height; y++) { + offsetLiterals++; + for (let i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xff; + } + } + } + const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + const idat = deflateSync(literals); + const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + const data = new Uint8Array(pngLength); + let offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk("IHDR", ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk("IDATA", idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk("IEND", new Uint8Array(0), data, offset); + return createObjectURL(data, "image/png", forceDataSchema); + } + return function convertImgDataToPng(imgData, forceDataSchema, isMask) { + const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema, isMask); + }; +}(); +class SVGExtraState { + constructor() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textMatrixScale = 1; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = "#000000"; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ""; + this.lineCap = ""; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ""; + } + clone() { + return Object.create(this); + } + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } +} +function opListToTree(opList) { + let opTree = []; + const tmp = []; + for (const opListElement of opList) { + if (opListElement.fn === "save") { + opTree.push({ + fnId: 92, + fn: "group", + items: [] + }); + tmp.push(opTree); + opTree = opTree.at(-1).items; + continue; + } + if (opListElement.fn === "restore") { + opTree = tmp.pop(); + } else { + opTree.push(opListElement); + } + } + return opTree; +} +function pf(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + const s = value.toFixed(10); + let i = s.length - 1; + if (s[i] !== "0") { + return s; + } + do { + i--; + } while (s[i] === "0"); + return s.substring(0, s[i] === "." ? i : i + 1); +} +function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ""; + } + return `scale(${pf(m[0])} ${pf(m[3])})`; + } + if (m[0] === m[3] && m[1] === -m[2]) { + const a = Math.acos(m[0]) * 180 / Math.PI; + return `rotate(${pf(a)})`; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return `translate(${pf(m[4])} ${pf(m[5])})`; + } + } + return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; +} +let clipCount = 0; +let maskCount = 0; +let shadingCount = 0; +class SVGGraphics { + constructor(commonObjs, objs, forceDataSchema = false) { + (0, _display_utils.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future."); + this.svgFactory = new _display_utils.DOMSVGFactory(); + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingClip = null; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + this._operatorIdMapping = []; + for (const op in _util.OPS) { + this._operatorIdMapping[_util.OPS[op]] = op; + } + } + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } + return fallback; + } + save() { + this.transformStack.push(this.transformMatrix); + const old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + } + restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + } + group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + } + loadDependencies(operatorList) { + const fnArray = operatorList.fnArray; + const argsArray = operatorList.argsArray; + for (let i = 0, ii = fnArray.length; i < ii; i++) { + if (fnArray[i] !== _util.OPS.dependency) { + continue; + } + for (const obj of argsArray[i]) { + const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; + const promise = new Promise(resolve => { + objsPool.get(obj, resolve); + }); + this.current.dependencies.push(promise); + } + } + return Promise.all(this.current.dependencies); + } + transform(a, b, c, d, e, f) { + const transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + } + getSVG(operatorList, viewport) { + this.viewport = viewport; + const svgElement = this._initialize(viewport); + return this.loadDependencies(operatorList).then(() => { + this.transformMatrix = _util.IDENTITY_MATRIX; + this.executeOpTree(this.convertOpList(operatorList)); + return svgElement; + }); + } + convertOpList(operatorList) { + const operatorIdMapping = this._operatorIdMapping; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + const opList = []; + for (let i = 0, ii = fnArray.length; i < ii; i++) { + const fnId = fnArray[i]; + opList.push({ + fnId, + fn: operatorIdMapping[fnId], + args: argsArray[i] + }); + } + return opListToTree(opList); + } + executeOpTree(opTree) { + for (const opTreeElement of opTree) { + const fn = opTreeElement.fn; + const fnId = opTreeElement.fnId; + const args = opTreeElement.args; + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + case _util.OPS.dependency: + break; + case _util.OPS.setLeading: + this.setLeading(args); + break; + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + case _util.OPS.setFont: + this.setFont(args); + break; + case _util.OPS.showText: + this.showText(args[0]); + break; + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + case _util.OPS.endText: + this.endText(); + break; + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.setTextRise: + this.setTextRise(args[0]); + break; + case _util.OPS.setTextRenderingMode: + this.setTextRenderingMode(args[0]); + break; + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setStrokeColorN: + this.setStrokeColorN(args); + break; + case _util.OPS.setFillColorN: + this.setFillColorN(args); + break; + case _util.OPS.shadingFill: + this.shadingFill(args[0]); + break; + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + case _util.OPS.setRenderingIntent: + this.setRenderingIntent(args[0]); + break; + case _util.OPS.setFlatness: + this.setFlatness(args[0]); + break; + case _util.OPS.setGState: + this.setGState(args[0]); + break; + case _util.OPS.fill: + this.fill(); + break; + case _util.OPS.eoFill: + this.eoFill(); + break; + case _util.OPS.stroke: + this.stroke(); + break; + case _util.OPS.fillStroke: + this.fillStroke(); + break; + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + case _util.OPS.clip: + this.clip("nonzero"); + break; + case _util.OPS.eoClip: + this.clip("evenodd"); + break; + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + case _util.OPS.closePath: + this.closePath(); + break; + case _util.OPS.closeStroke: + this.closeStroke(); + break; + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + case _util.OPS.closeEOFillStroke: + this.closeEOFillStroke(); + break; + case _util.OPS.nextLine: + this.nextLine(); + break; + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + case _util.OPS.endPath: + this.endPath(); + break; + case 92: + this.group(opTreeElement.items); + break; + default: + (0, _util.warn)(`Unimplemented operator ${fn}`); + break; + } + } + } + setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + } + setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + } + nextLine() { + this.moveText(0, this.current.leading); + } + setTextMatrix(a, b, c, d, e, f) { + const current = this.current; + current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; + current.textMatrixScale = Math.hypot(a, b); + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtElement.append(current.tspan); + } + beginText() { + const current = this.current; + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.textMatrix = _util.IDENTITY_MATRIX; + current.lineMatrix = _util.IDENTITY_MATRIX; + current.textMatrixScale = 1; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtgrp = this.svgFactory.createElement("svg:g"); + current.xcoords = []; + current.ycoords = []; + } + moveText(x, y) { + const current = this.current; + current.x = current.lineX += x; + current.y = current.lineY += y; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + showText(glyphs) { + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + if (fontSize === 0) { + return; + } + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + let x = 0; + for (const glyph of glyphs) { + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + let scaledX, scaledY; + let width = glyph.width; + if (vertical) { + let vx; + const vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + if (glyph.isInFont || font.missingFile) { + current.xcoords.push(current.x + scaledX); + if (vertical) { + current.ycoords.push(-current.y + scaledY); + } + current.tspan.textContent += character; + } else {} + let charWidth; + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + x += charWidth; + } + current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); + if (vertical) { + current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); + } else { + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, "font-style", current.fontStyle); + } + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); + } + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, "fill", current.fillColor); + } + if (current.fillAlpha < 1) { + current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); + } + } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { + current.tspan.setAttributeNS(null, "fill", "transparent"); + } else { + current.tspan.setAttributeNS(null, "fill", "none"); + } + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + const lineWidthScale = 1 / (current.textMatrixScale || 1); + this._setStrokeAttributes(current.tspan, lineWidthScale); + } + let textMatrix = current.textMatrix; + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); + current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); + current.txtElement.append(current.tspan); + current.txtgrp.append(current.txtElement); + this._ensureTransformGroup().append(current.txtElement); + } + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + addFontStyle(fontObj) { + if (!fontObj.data) { + throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); + } + if (!this.cssStyle) { + this.cssStyle = this.svgFactory.createElement("svg:style"); + this.cssStyle.setAttributeNS(null, "type", "text/css"); + this.defs.append(this.cssStyle); + } + const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; + } + setFont(details) { + const current = this.current; + const fontObj = this.commonObjs.get(details[0]); + let size = details[1]; + current.font = fontObj; + if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + let bold = "normal"; + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + const italic = fontObj.italic ? "italic" : "normal"; + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.xcoords = []; + current.ycoords = []; + } + endText() { + const current = this.current; + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { + current.element = current.txtElement; + this.clip("nonzero"); + this.endPath(); + } + } + setLineWidth(width) { + if (width > 0) { + this.current.lineWidth = width; + } + } + setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + } + setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + } + setMiterLimit(limit) { + this.current.miterLimit = limit; + } + setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + } + setStrokeRGBColor(r, g, b) { + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); + } + setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + } + setFillRGBColor(r, g, b) { + this.current.fillColor = _util.Util.makeHexColor(r, g, b); + this.current.tspan = this.svgFactory.createElement("svg:tspan"); + this.current.xcoords = []; + this.current.ycoords = []; + } + setStrokeColorN(args) { + this.current.strokeColor = this._makeColorN_Pattern(args); + } + setFillColorN(args) { + this.current.fillColor = this._makeColorN_Pattern(args); + } + shadingFill(args) { + const { + width, + height + } = this.viewport; + const inv = _util.Util.inverseTransform(this.transformMatrix); + const [x0, y0, x1, y1] = _util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", x0); + rect.setAttributeNS(null, "y", y0); + rect.setAttributeNS(null, "width", x1 - x0); + rect.setAttributeNS(null, "height", y1 - y0); + rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); + if (this.current.fillAlpha < 1) { + rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); + } + this._ensureTransformGroup().append(rect); + } + _makeColorN_Pattern(args) { + if (args[0] === "TilingPattern") { + return this._makeTilingPattern(args); + } + return this._makeShadingPattern(args); + } + _makeTilingPattern(args) { + const color = args[1]; + const operatorList = args[2]; + const matrix = args[3] || _util.IDENTITY_MATRIX; + const [x0, y0, x1, y1] = args[4]; + const xstep = args[5]; + const ystep = args[6]; + const paintType = args[7]; + const tilingId = `shading${shadingCount++}`; + const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); + const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); + const txstep = xstep * xscale; + const tystep = ystep * yscale; + const tiling = this.svgFactory.createElement("svg:pattern"); + tiling.setAttributeNS(null, "id", tilingId); + tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); + tiling.setAttributeNS(null, "width", txstep); + tiling.setAttributeNS(null, "height", tystep); + tiling.setAttributeNS(null, "x", `${tx0}`); + tiling.setAttributeNS(null, "y", `${ty0}`); + const svg = this.svg; + const transformMatrix = this.transformMatrix; + const fillColor = this.current.fillColor; + const strokeColor = this.current.strokeColor; + const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); + this.svg = bbox; + this.transformMatrix = matrix; + if (paintType === 2) { + const cssColor = _util.Util.makeHexColor(...color); + this.current.fillColor = cssColor; + this.current.strokeColor = cssColor; + } + this.executeOpTree(this.convertOpList(operatorList)); + this.svg = svg; + this.transformMatrix = transformMatrix; + this.current.fillColor = fillColor; + this.current.strokeColor = strokeColor; + tiling.append(bbox.childNodes[0]); + this.defs.append(tiling); + return `url(#${tilingId})`; + } + _makeShadingPattern(args) { + if (typeof args === "string") { + args = this.objs.get(args); + } + switch (args[0]) { + case "RadialAxial": + const shadingId = `shading${shadingCount++}`; + const colorStops = args[3]; + let gradient; + switch (args[1]) { + case "axial": + const point0 = args[4]; + const point1 = args[5]; + gradient = this.svgFactory.createElement("svg:linearGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "x1", point0[0]); + gradient.setAttributeNS(null, "y1", point0[1]); + gradient.setAttributeNS(null, "x2", point1[0]); + gradient.setAttributeNS(null, "y2", point1[1]); + break; + case "radial": + const focalPoint = args[4]; + const circlePoint = args[5]; + const focalRadius = args[6]; + const circleRadius = args[7]; + gradient = this.svgFactory.createElement("svg:radialGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "cx", circlePoint[0]); + gradient.setAttributeNS(null, "cy", circlePoint[1]); + gradient.setAttributeNS(null, "r", circleRadius); + gradient.setAttributeNS(null, "fx", focalPoint[0]); + gradient.setAttributeNS(null, "fy", focalPoint[1]); + gradient.setAttributeNS(null, "fr", focalRadius); + break; + default: + throw new Error(`Unknown RadialAxial type: ${args[1]}`); + } + for (const colorStop of colorStops) { + const stop = this.svgFactory.createElement("svg:stop"); + stop.setAttributeNS(null, "offset", colorStop[0]); + stop.setAttributeNS(null, "stop-color", colorStop[1]); + gradient.append(stop); + } + this.defs.append(gradient); + return `url(#${shadingId})`; + case "Mesh": + (0, _util.warn)("Unimplemented pattern Mesh"); + return null; + case "Dummy": + return "hotpink"; + default: + throw new Error(`Unknown IR type: ${args[0]}`); + } + } + setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + } + constructPath(ops, args) { + const current = this.current; + let x = current.x, + y = current.y; + let d = []; + let j = 0; + for (const op of ops) { + switch (op | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); + break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push("M", pf(x), pf(y)); + break; + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push("L", pf(x), pf(y)); + break; + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + case _util.OPS.curveTo2: + d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + case _util.OPS.closePath: + d.push("Z"); + break; + } + } + d = d.join(" "); + if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { + d = current.path.getAttributeNS(null, "d") + d; + } else { + current.path = this.svgFactory.createElement("svg:path"); + this._ensureTransformGroup().append(current.path); + } + current.path.setAttributeNS(null, "d", d); + current.path.setAttributeNS(null, "fill", "none"); + current.element = current.path; + current.setCurrentPoint(x, y); + } + endPath() { + const current = this.current; + current.path = null; + if (!this.pendingClip) { + return; + } + if (!current.element) { + this.pendingClip = null; + return; + } + const clipId = `clippath${clipCount++}`; + const clipPath = this.svgFactory.createElement("svg:clipPath"); + clipPath.setAttributeNS(null, "id", clipId); + clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); + const clipElement = current.element.cloneNode(true); + if (this.pendingClip === "evenodd") { + clipElement.setAttributeNS(null, "clip-rule", "evenodd"); + } else { + clipElement.setAttributeNS(null, "clip-rule", "nonzero"); + } + this.pendingClip = null; + clipPath.append(clipElement); + this.defs.append(clipPath); + if (current.activeClipUrl) { + current.clipGroup = null; + for (const prev of this.extraStack) { + prev.clipGroup = null; + } + clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); + } + current.activeClipUrl = `url(#${clipId})`; + this.tgrp = null; + } + clip(type) { + this.pendingClip = type; + } + closePath() { + const current = this.current; + if (current.path) { + const d = `${current.path.getAttributeNS(null, "d")}Z`; + current.path.setAttributeNS(null, "d", d); + } + } + setLeading(leading) { + this.current.leading = -leading; + } + setTextRise(textRise) { + this.current.textRise = textRise; + } + setTextRenderingMode(textRenderingMode) { + this.current.textRenderingMode = textRenderingMode; + } + setHScale(scale) { + this.current.textHScale = scale / 100; + } + setRenderingIntent(intent) {} + setFlatness(flatness) {} + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + case "LC": + this.setLineCap(value); + break; + case "LJ": + this.setLineJoin(value); + break; + case "ML": + this.setMiterLimit(value); + break; + case "D": + this.setDash(value[0], value[1]); + break; + case "RI": + this.setRenderingIntent(value); + break; + case "FL": + this.setFlatness(value); + break; + case "Font": + this.setFont(value); + break; + case "CA": + this.setStrokeAlpha(value); + break; + case "ca": + this.setFillAlpha(value); + break; + default: + (0, _util.warn)(`Unimplemented graphic state operator ${key}`); + break; + } + } + } + fill() { + const current = this.current; + if (current.element) { + current.element.setAttributeNS(null, "fill", current.fillColor); + current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); + this.endPath(); + } + } + stroke() { + const current = this.current; + if (current.element) { + this._setStrokeAttributes(current.element); + current.element.setAttributeNS(null, "fill", "none"); + this.endPath(); + } + } + _setStrokeAttributes(element, lineWidthScale = 1) { + const current = this.current; + let dashArray = current.dashArray; + if (lineWidthScale !== 1 && dashArray.length > 0) { + dashArray = dashArray.map(function (value) { + return lineWidthScale * value; + }); + } + element.setAttributeNS(null, "stroke", current.strokeColor); + element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); + element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); + element.setAttributeNS(null, "stroke-linecap", current.lineCap); + element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); + element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); + element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); + element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); + } + eoFill() { + this.current.element?.setAttributeNS(null, "fill-rule", "evenodd"); + this.fill(); + } + fillStroke() { + this.stroke(); + this.fill(); + } + eoFillStroke() { + this.current.element?.setAttributeNS(null, "fill-rule", "evenodd"); + this.fillStroke(); + } + closeStroke() { + this.closePath(); + this.stroke(); + } + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + closeEOFillStroke() { + this.closePath(); + this.eoFillStroke(); + } + paintSolidColorImageMask() { + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", "1px"); + rect.setAttributeNS(null, "height", "1px"); + rect.setAttributeNS(null, "fill", this.current.fillColor); + this._ensureTransformGroup().append(rect); + } + paintImageXObject(objId) { + const imgData = this.getObject(objId); + if (!imgData) { + (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); + return; + } + this.paintInlineImageXObject(imgData); + } + paintInlineImageXObject(imgData, mask) { + const width = imgData.width; + const height = imgData.height; + const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", "0"); + cliprect.setAttributeNS(null, "y", "0"); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + const imgEl = this.svgFactory.createElement("svg:image"); + imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); + imgEl.setAttributeNS(null, "x", "0"); + imgEl.setAttributeNS(null, "y", pf(-height)); + imgEl.setAttributeNS(null, "width", pf(width) + "px"); + imgEl.setAttributeNS(null, "height", pf(height) + "px"); + imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); + if (mask) { + mask.append(imgEl); + } else { + this._ensureTransformGroup().append(imgEl); + } + } + paintImageMaskXObject(img) { + const imgData = this.getObject(img.data, img); + if (imgData.bitmap) { + (0, _util.warn)("paintImageMaskXObject: ImageBitmap support is not implemented, " + "ensure that the `isOffscreenCanvasSupported` API parameter is disabled."); + return; + } + const current = this.current; + const width = imgData.width; + const height = imgData.height; + const fillColor = current.fillColor; + current.maskId = `mask${maskCount++}`; + const mask = this.svgFactory.createElement("svg:mask"); + mask.setAttributeNS(null, "id", current.maskId); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", pf(width)); + rect.setAttributeNS(null, "height", pf(height)); + rect.setAttributeNS(null, "fill", fillColor); + rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); + this.defs.append(mask); + this._ensureTransformGroup().append(rect); + this.paintInlineImageXObject(imgData, mask); + } + paintFormXObjectBegin(matrix, bbox) { + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", bbox[0]); + cliprect.setAttributeNS(null, "y", bbox[1]); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + this.endPath(); + } + } + paintFormXObjectEnd() {} + _initialize(viewport) { + const svg = this.svgFactory.create(viewport.width, viewport.height); + const definitions = this.svgFactory.createElement("svg:defs"); + svg.append(definitions); + this.defs = definitions; + const rootGroup = this.svgFactory.createElement("svg:g"); + rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); + svg.append(rootGroup); + this.svg = rootGroup; + return svg; + } + _ensureClipGroup() { + if (!this.current.clipGroup) { + const clipGroup = this.svgFactory.createElement("svg:g"); + clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); + this.svg.append(clipGroup); + this.current.clipGroup = clipGroup; + } + return this.current.clipGroup; + } + _ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = this.svgFactory.createElement("svg:g"); + this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); + if (this.current.activeClipUrl) { + this._ensureClipGroup().append(this.tgrp); + } else { + this.svg.append(this.tgrp); + } + } + return this.tgrp; + } +} +exports.SVGGraphics = SVGGraphics; + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "AbortException", ({ + enumerable: true, + get: function () { + return _util.AbortException; + } +})); +Object.defineProperty(exports, "AnnotationEditorLayer", ({ + enumerable: true, + get: function () { + return _annotation_editor_layer.AnnotationEditorLayer; + } +})); +Object.defineProperty(exports, "AnnotationEditorParamsType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorParamsType; + } +})); +Object.defineProperty(exports, "AnnotationEditorType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorType; + } +})); +Object.defineProperty(exports, "AnnotationEditorUIManager", ({ + enumerable: true, + get: function () { + return _tools.AnnotationEditorUIManager; + } +})); +Object.defineProperty(exports, "AnnotationLayer", ({ + enumerable: true, + get: function () { + return _annotation_layer.AnnotationLayer; + } +})); +Object.defineProperty(exports, "AnnotationMode", ({ + enumerable: true, + get: function () { + return _util.AnnotationMode; + } +})); +Object.defineProperty(exports, "CMapCompressionType", ({ + enumerable: true, + get: function () { + return _util.CMapCompressionType; + } +})); +Object.defineProperty(exports, "FeatureTest", ({ + enumerable: true, + get: function () { + return _util.FeatureTest; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "ImageKind", ({ + enumerable: true, + get: function () { + return _util.ImageKind; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +Object.defineProperty(exports, "MissingPDFException", ({ + enumerable: true, + get: function () { + return _util.MissingPDFException; + } +})); +Object.defineProperty(exports, "OPS", ({ + enumerable: true, + get: function () { + return _util.OPS; + } +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ + enumerable: true, + get: function () { + return _api.PDFDataRangeTransport; + } +})); +Object.defineProperty(exports, "PDFDateString", ({ + enumerable: true, + get: function () { + return _display_utils.PDFDateString; + } +})); +Object.defineProperty(exports, "PDFWorker", ({ + enumerable: true, + get: function () { + return _api.PDFWorker; + } +})); +Object.defineProperty(exports, "PasswordResponses", ({ + enumerable: true, + get: function () { + return _util.PasswordResponses; + } +})); +Object.defineProperty(exports, "PermissionFlag", ({ + enumerable: true, + get: function () { + return _util.PermissionFlag; + } +})); +Object.defineProperty(exports, "PixelsPerInch", ({ + enumerable: true, + get: function () { + return _display_utils.PixelsPerInch; + } +})); +Object.defineProperty(exports, "PromiseCapability", ({ + enumerable: true, + get: function () { + return _util.PromiseCapability; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +exports.SVGGraphics = void 0; +Object.defineProperty(exports, "UnexpectedResponseException", ({ + enumerable: true, + get: function () { + return _util.UnexpectedResponseException; + } +})); +Object.defineProperty(exports, "Util", ({ + enumerable: true, + get: function () { + return _util.Util; + } +})); +Object.defineProperty(exports, "VerbosityLevel", ({ + enumerable: true, + get: function () { + return _util.VerbosityLevel; + } +})); +Object.defineProperty(exports, "XfaLayer", ({ + enumerable: true, + get: function () { + return _xfa_layer.XfaLayer; + } +})); +Object.defineProperty(exports, "build", ({ + enumerable: true, + get: function () { + return _api.build; + } +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ + enumerable: true, + get: function () { + return _util.createValidAbsoluteUrl; + } +})); +Object.defineProperty(exports, "getDocument", ({ + enumerable: true, + get: function () { + return _api.getDocument; + } +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getPdfFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getXfaPageViewport", ({ + enumerable: true, + get: function () { + return _display_utils.getXfaPageViewport; + } +})); +Object.defineProperty(exports, "isDataScheme", ({ + enumerable: true, + get: function () { + return _display_utils.isDataScheme; + } +})); +Object.defineProperty(exports, "isPdfFile", ({ + enumerable: true, + get: function () { + return _display_utils.isPdfFile; + } +})); +Object.defineProperty(exports, "loadScript", ({ + enumerable: true, + get: function () { + return _display_utils.loadScript; + } +})); +Object.defineProperty(exports, "normalizeUnicode", ({ + enumerable: true, + get: function () { + return _util.normalizeUnicode; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "setLayerDimensions", ({ + enumerable: true, + get: function () { + return _display_utils.setLayerDimensions; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "updateTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.updateTextLayer; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); +var _util = __w_pdfjs_require__(1); +var _api = __w_pdfjs_require__(2); +var _display_utils = __w_pdfjs_require__(6); +var _text_layer = __w_pdfjs_require__(26); +var _annotation_editor_layer = __w_pdfjs_require__(27); +var _tools = __w_pdfjs_require__(5); +var _annotation_layer = __w_pdfjs_require__(29); +var _worker_options = __w_pdfjs_require__(14); +var _xfa_layer = __w_pdfjs_require__(31); +const pdfjsVersion = '3.8.162'; +const pdfjsBuild = '2c74323e3'; +const SVGGraphics = (__w_pdfjs_require__(34).SVGGraphics); +exports.SVGGraphics = SVGGraphics; +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/ServiceHost/wwwroot/AssetsClient/libs/pdf/pdf.js.map b/ServiceHost/wwwroot/AssetsClient/libs/pdf/pdf.js.map new file mode 100644 index 00000000..f1f31269 --- /dev/null +++ b/ServiceHost/wwwroot/AssetsClient/libs/pdf/pdf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.js","mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACMA;AASA,MAAMA,eAAA,GAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB;AAzBAC,uBAAA,GAAAD,eAAA;AA0BA,MAAME,oBAAA,GAAuB,CAAC,KAAD,EAAQ,CAAR,EAAW,CAAX,EAAc,KAAd,EAAqB,CAArB,EAAwB,CAAxB,CAA7B;AA1BAD,4BAAA,GAAAC,oBAAA;AA4BA,MAAMC,uBAAA,GAA0B,IAAhC;AA5BAF,+BAAA,GAAAE,uBAAA;AAgCA,MAAMC,WAAA,GAAc,IAApB;AAhCAH,mBAAA,GAAAG,WAAA;AAiCA,MAAMC,mBAAA,GAAsB,IAA5B;AAjCAJ,2BAAA,GAAAI,mBAAA;AAkCA,MAAMC,eAAA,GAAkBD,mBAAA,GAAsBD,WAA9C;AAlCAH,uBAAA,GAAAK,eAAA;AAgDA,MAAMC,mBAAA,GAAsB;EAC1BC,GAAA,EAAK,IADqB;EAE1BC,OAAA,EAAS,IAFiB;EAG1BC,KAAA,EAAO,IAHmB;EAI1BC,IAAA,EAAM,IAJoB;EAK1BC,iBAAA,EAAmB,IALO;EAM1BC,mBAAA,EAAqB,IANK;EAO1BC,mBAAA,EAAqB,IAPK;EAQ1BC,MAAA,EAAQ;AARkB,CAA5B;AAhDAd,2BAAA,GAAAM,mBAAA;AA2DA,MAAMS,cAAA,GAAiB;EACrBC,OAAA,EAAS,CADY;EAErBC,MAAA,EAAQ,CAFa;EAGrBC,YAAA,EAAc,CAHO;EAIrBC,cAAA,EAAgB;AAJK,CAAvB;AA3DAnB,sBAAA,GAAAe,cAAA;AAkEA,MAAMK,sBAAA,GAAyB,wBAA/B;AAlEApB,8BAAA,GAAAoB,sBAAA;AAoEA,MAAMC,oBAAA,GAAuB;EAC3BL,OAAA,EAAS,CAAC,CADiB;EAE3BM,IAAA,EAAM,CAFqB;EAG3BC,QAAA,EAAU,CAHiB;EAI3BC,KAAA,EAAO,EAJoB;EAK3BC,GAAA,EAAK;AALsB,CAA7B;AApEAzB,4BAAA,GAAAqB,oBAAA;AA4EA,MAAMK,0BAAA,GAA6B;EACjCC,aAAA,EAAe,CADkB;EAEjCC,cAAA,EAAgB,CAFiB;EAGjCC,gBAAA,EAAkB,CAHe;EAIjCC,SAAA,EAAW,EAJsB;EAKjCC,aAAA,EAAe,EALkB;EAMjCC,WAAA,EAAa;AANoB,CAAnC;AA5EAhC,kCAAA,GAAA0B,0BAAA;AAsFA,MAAMO,cAAA,GAAiB;EACrBxB,KAAA,EAAO,IADc;EAErByB,eAAA,EAAiB,IAFI;EAGrBC,IAAA,EAAM,IAHe;EAIrBC,kBAAA,EAAoB,IAJC;EAKrBC,sBAAA,EAAwB,KALH;EAMrBC,sBAAA,EAAwB,KANH;EAOrBC,QAAA,EAAU,KAPW;EAQrBC,kBAAA,EAAoB;AARC,CAAvB;AAtFAxC,sBAAA,GAAAiC,cAAA;AAiGA,MAAMQ,iBAAA,GAAoB;EACxBC,IAAA,EAAM,CADkB;EAExBC,MAAA,EAAQ,CAFgB;EAGxBC,WAAA,EAAa,CAHW;EAIxBC,SAAA,EAAW,CAJa;EAKxBC,gBAAA,EAAkB,CALM;EAMxBC,kBAAA,EAAoB,CANI;EAOxBC,uBAAA,EAAyB,CAPD;EAQxBC,WAAA,EAAa,CARW;EASxBC,gBAAA,EAAkB,CATM;EAUxBC,gBAAA,EAAkB;AAVM,CAA1B;AAjGAnD,yBAAA,GAAAyC,iBAAA;AA8GA,MAAMW,SAAA,GAAY;EAChBC,cAAA,EAAgB,CADA;EAEhBC,SAAA,EAAW,CAFK;EAGhBC,UAAA,EAAY;AAHI,CAAlB;AA9GAvD,iBAAA,GAAAoD,SAAA;AAoHA,MAAMI,cAAA,GAAiB;EACrBC,IAAA,EAAM,CADe;EAErBC,IAAA,EAAM,CAFe;EAGrBnC,QAAA,EAAU,CAHW;EAIrBoC,IAAA,EAAM,CAJe;EAKrBC,MAAA,EAAQ,CALa;EAMrBC,MAAA,EAAQ,CANa;EAOrBC,OAAA,EAAS,CAPY;EAQrBC,QAAA,EAAU,CARW;EASrBC,SAAA,EAAW,CATU;EAUrBC,SAAA,EAAW,EAVU;EAWrBC,QAAA,EAAU,EAXW;EAYrBC,SAAA,EAAW,EAZU;EAarB3C,KAAA,EAAO,EAbc;EAcrB4C,KAAA,EAAO,EAdc;EAerB3C,GAAA,EAAK,EAfgB;EAgBrB4C,KAAA,EAAO,EAhBc;EAiBrBC,cAAA,EAAgB,EAjBK;EAkBrBC,KAAA,EAAO,EAlBc;EAmBrBC,KAAA,EAAO,EAnBc;EAoBrBC,MAAA,EAAQ,EApBa;EAqBrBC,MAAA,EAAQ,EArBa;EAsBrBC,WAAA,EAAa,EAtBQ;EAuBrBC,OAAA,EAAS,EAvBY;EAwBrBC,SAAA,EAAW,EAxBU;EAyBrBC,MAAA,EAAQ,EAzBa;EA0BrBC,MAAA,EAAQ;AA1Ba,CAAvB;AApHA/E,sBAAA,GAAAwD,cAAA;AAiJA,MAAMwB,mBAAA,GAAsB;EAC1BC,KAAA,EAAO,OADmB;EAE1BC,KAAA,EAAO;AAFmB,CAA5B;AAjJAlF,2BAAA,GAAAgF,mBAAA;AAsJA,MAAMG,cAAA,GAAiB;EACrBtC,SAAA,EAAW,IADU;EAErBuC,MAAA,EAAQ,IAFa;EAGrB3E,KAAA,EAAO,IAHc;EAIrB4E,MAAA,EAAQ,IAJa;EAKrBC,QAAA,EAAU,IALW;EAMrBC,MAAA,EAAQ,IANa;EAOrBC,QAAA,EAAU,IAPW;EAQrBC,MAAA,EAAQ,IARa;EASrBC,YAAA,EAAc,KATO;EAUrBC,cAAA,EAAgB;AAVK,CAAvB;AAtJA3F,sBAAA,GAAAmF,cAAA;AAmKA,MAAMS,mBAAA,GAAsB;EAC1BJ,QAAA,EAAU,SADgB;EAE1BK,QAAA,EAAU,SAFgB;EAG1BC,QAAA,EAAU,SAHgB;EAI1BC,SAAA,EAAW,SAJe;EAK1BC,QAAA,EAAU,SALgB;EAM1BC,aAAA,EAAe,SANW;EAO1BC,KAAA,EAAO,SAPmB;EAQ1BC,UAAA,EAAY,SARc;EAS1BC,KAAA,EAAO,SATmB;EAU1BC,IAAA,EAAM,SAVoB;EAW1BC,IAAA,EAAM,SAXoB;EAY1BC,UAAA,EAAY,SAZc;EAa1BC,WAAA,EAAa,SAba;EAc1BC,eAAA,EAAiB,SAdS;EAe1BC,WAAA,EAAa,SAfa;EAgB1BC,IAAA,EAAM,SAhBoB;EAiB1BC,QAAA,EAAU,SAjBgB;EAkB1BC,cAAA,EAAgB,SAlBU;EAmB1BC,iBAAA,EAAmB;AAnBO,CAA5B;AAnKA9G,2BAAA,GAAA4F,mBAAA;AAyLA,MAAMmB,yBAAA,GAA4B;EAChCC,KAAA,EAAO,CADyB;EAEhCC,MAAA,EAAQ,CAFwB;EAGhCC,OAAA,EAAS,CAHuB;EAIhCC,KAAA,EAAO,CAJyB;EAKhClD,SAAA,EAAW;AALqB,CAAlC;AAzLAjE,iCAAA,GAAA+G,yBAAA;AAiMA,MAAMK,yBAAA,GAA4B;EAChCC,CAAA,EAAG,aAD6B;EAEhCC,CAAA,EAAG,YAF6B;EAGhCC,CAAA,EAAG,YAH6B;EAIhCC,CAAA,EAAG,UAJ6B;EAKhCC,EAAA,EAAI,OAL4B;EAMhCC,EAAA,EAAI,MAN4B;EAOhCC,EAAA,EAAI,UAP4B;EAQhCC,EAAA,EAAI,WAR4B;EAShCC,EAAA,EAAI,aAT4B;EAUhCC,EAAA,EAAI,eAV4B;EAWhCC,CAAA,EAAG,WAX6B;EAYhCC,CAAA,EAAG,QAZ6B;EAahCC,CAAA,EAAG,UAb6B;EAchCC,CAAA,EAAG;AAd6B,CAAlC;AAjMAlI,iCAAA,GAAAoH,yBAAA;AAkNA,MAAMe,uBAAA,GAA0B;EAC9BC,EAAA,EAAI,WAD0B;EAE9BC,EAAA,EAAI,UAF0B;EAG9BC,EAAA,EAAI,SAH0B;EAI9BC,EAAA,EAAI,WAJ0B;EAK9BC,EAAA,EAAI;AAL0B,CAAhC;AAlNAxI,+BAAA,GAAAmI,uBAAA;AA0NA,MAAMM,mBAAA,GAAsB;EAC1BC,CAAA,EAAG,UADuB;EAE1BR,CAAA,EAAG;AAFuB,CAA5B;AA1NAlI,2BAAA,GAAAyI,mBAAA;AA+NA,MAAME,cAAA,GAAiB;EACrBC,MAAA,EAAQ,CADa;EAErBC,QAAA,EAAU,CAFW;EAGrBC,KAAA,EAAO;AAHc,CAAvB;AA/NA9I,sBAAA,GAAA2I,cAAA;AAqOA,MAAMI,mBAAA,GAAsB;EAC1BzH,IAAA,EAAM,CADoB;EAE1B0H,MAAA,EAAQ;AAFkB,CAA5B;AArOAhJ,2BAAA,GAAA+I,mBAAA;AA2OA,MAAME,GAAA,GAAM;EAKVC,UAAA,EAAY,CALF;EAMVC,YAAA,EAAc,CANJ;EAOVC,UAAA,EAAY,CAPF;EAQVC,WAAA,EAAa,CARH;EASVC,aAAA,EAAe,CATL;EAUVC,OAAA,EAAS,CAVC;EAWVC,kBAAA,EAAoB,CAXV;EAYVC,WAAA,EAAa,CAZH;EAaVC,SAAA,EAAW,CAbD;EAcVC,IAAA,EAAM,EAdI;EAeVC,OAAA,EAAS,EAfC;EAgBVC,SAAA,EAAW,EAhBD;EAiBVC,MAAA,EAAQ,EAjBE;EAkBVC,MAAA,EAAQ,EAlBE;EAmBVC,OAAA,EAAS,EAnBC;EAoBVC,QAAA,EAAU,EApBA;EAqBVC,QAAA,EAAU,EArBA;EAsBVC,SAAA,EAAW,EAtBD;EAuBVC,SAAA,EAAW,EAvBD;EAwBVC,MAAA,EAAQ,EAxBE;EAyBVC,WAAA,EAAa,EAzBH;EA0BVC,IAAA,EAAM,EA1BI;EA2BVC,MAAA,EAAQ,EA3BE;EA4BVC,UAAA,EAAY,EA5BF;EA6BVC,YAAA,EAAc,EA7BJ;EA8BVC,eAAA,EAAiB,EA9BP;EA+BVC,iBAAA,EAAmB,EA/BT;EAgCVC,OAAA,EAAS,EAhCC;EAiCVC,IAAA,EAAM,EAjCI;EAkCVC,MAAA,EAAQ,EAlCE;EAmCVC,SAAA,EAAW,EAnCD;EAoCVC,OAAA,EAAS,EApCC;EAqCVC,cAAA,EAAgB,EArCN;EAsCVC,cAAA,EAAgB,EAtCN;EAuCVC,SAAA,EAAW,EAvCD;EAwCVC,UAAA,EAAY,EAxCF;EAyCVC,OAAA,EAAS,EAzCC;EA0CVC,oBAAA,EAAsB,EA1CZ;EA2CVC,WAAA,EAAa,EA3CH;EA4CVC,QAAA,EAAU,EA5CA;EA6CVC,kBAAA,EAAoB,EA7CV;EA8CVC,aAAA,EAAe,EA9CL;EA+CVC,QAAA,EAAU,EA/CA;EAgDVC,QAAA,EAAU,EAhDA;EAiDVC,cAAA,EAAgB,EAjDN;EAkDVC,gBAAA,EAAkB,EAlDR;EAmDVC,0BAAA,EAA4B,EAnDlB;EAoDVC,YAAA,EAAc,EApDJ;EAqDVC,qBAAA,EAAuB,EArDb;EAsDVC,mBAAA,EAAqB,EAtDX;EAuDVC,iBAAA,EAAmB,EAvDT;EAwDVC,cAAA,EAAgB,EAxDN;EAyDVC,eAAA,EAAiB,EAzDP;EA0DVC,YAAA,EAAc,EA1DJ;EA2DVC,aAAA,EAAe,EA3DL;EA4DVC,aAAA,EAAe,EA5DL;EA6DVC,WAAA,EAAa,EA7DH;EA8DVC,iBAAA,EAAmB,EA9DT;EA+DVC,eAAA,EAAiB,EA/DP;EAgEVC,kBAAA,EAAoB,EAhEV;EAiEVC,gBAAA,EAAkB,EAjER;EAkEVC,WAAA,EAAa,EAlEH;EAmEVC,gBAAA,EAAkB,EAnER;EAoEVC,cAAA,EAAgB,EApEN;EAqEVC,cAAA,EAAgB,EArEN;EAsEVC,YAAA,EAAc,EAtEJ;EAuEVC,SAAA,EAAW,EAvED;EAwEVC,cAAA,EAAgB,EAxEN;EAyEVC,kBAAA,EAAoB,EAzEV;EA0EVC,uBAAA,EAAyB,EA1Ef;EA2EVC,gBAAA,EAAkB,EA3ER;EA4EVC,WAAA,EAAa,EA5EH;EA6EVC,SAAA,EAAW,EA7ED;EA8EVC,qBAAA,EAAuB,EA9Eb;EA+EVC,mBAAA,EAAqB,EA/EX;EAgFVC,UAAA,EAAY,EAhFF;EAiFVC,QAAA,EAAU,EAjFA;EAoFVC,eAAA,EAAiB,EApFP;EAqFVC,aAAA,EAAe,EArFL;EAuFVC,qBAAA,EAAuB,EAvFb;EAwFVC,0BAAA,EAA4B,EAxFlB;EAyFVC,iBAAA,EAAmB,EAzFT;EA0FVC,uBAAA,EAAyB,EA1Ff;EA2FVC,4BAAA,EAA8B,EA3FpB;EA4FVC,uBAAA,EAAyB,EA5Ff;EA6FVC,2BAAA,EAA6B,EA7FnB;EA8FVC,wBAAA,EAA0B,EA9FhB;EA+FVC,aAAA,EAAe;AA/FL,CAAZ;AA3OAzO,WAAA,GAAAiJ,GAAA;AA6UA,MAAMyF,iBAAA,GAAoB;EACxBC,aAAA,EAAe,CADS;EAExBC,kBAAA,EAAoB;AAFI,CAA1B;AA7UA5O,yBAAA,GAAA0O,iBAAA;AAkVA,IAAIG,SAAA,GAAYlG,cAAA,CAAeE,QAA/B;AAEA,SAASiG,iBAATA,CAA2BC,KAA3B,EAAkC;EAChC,IAAIC,MAAA,CAAOC,SAAP,CAAiBF,KAAjB,CAAJ,EAA6B;IAC3BF,SAAA,GAAYE,KAAZ;EAD2B;AADG;AAMlC,SAASG,iBAATA,CAAA,EAA6B;EAC3B,OAAOL,SAAP;AAD2B;AAO7B,SAASM,IAATA,CAAcC,GAAd,EAAmB;EACjB,IAAIP,SAAA,IAAalG,cAAA,CAAeG,KAAhC,EAAuC;IACrCuG,OAAA,CAAQC,GAAR,CAAa,SAAQF,GAAT,EAAZ;EADqC;AADtB;AAOnB,SAASG,IAATA,CAAcH,GAAd,EAAmB;EACjB,IAAIP,SAAA,IAAalG,cAAA,CAAeE,QAAhC,EAA0C;IACxCwG,OAAA,CAAQC,GAAR,CAAa,YAAWF,GAAZ,EAAZ;EADwC;AADzB;AAMnB,SAASI,WAATA,CAAqBJ,GAArB,EAA0B;EACxB,MAAM,IAAIK,KAAJ,CAAUL,GAAV,CAAN;AADwB;AAI1B,SAASM,MAATA,CAAgBC,IAAhB,EAAsBP,GAAtB,EAA2B;EACzB,IAAI,CAACO,IAAL,EAAW;IACTH,WAAA,CAAYJ,GAAZ;EADS;AADc;AAO3B,SAASQ,gBAATA,CAA0BC,GAA1B,EAA+B;EAC7B,QAAQA,GAAA,EAAKC,QAAb;IACE,KAAK,OAAL;IACA,KAAK,QAAL;IACA,KAAK,MAAL;IACA,KAAK,SAAL;IACA,KAAK,MAAL;MACE,OAAO,IAAP;IACF;MACE,OAAO,KAAP;EARJ;AAD6B;AAqB/B,SAASC,sBAATA,CAAgCF,GAAhC,EAAqCG,OAAA,GAAU,IAA/C,EAAqDC,OAAA,GAAU,IAA/D,EAAqE;EACnE,IAAI,CAACJ,GAAL,EAAU;IACR,OAAO,IAAP;EADQ;EAGV,IAAI;IACF,IAAII,OAAA,IAAW,OAAOJ,GAAP,KAAe,QAA9B,EAAwC;MAEtC,IAAII,OAAA,CAAQC,kBAAR,IAA8BL,GAAA,CAAIM,UAAJ,CAAe,MAAf,CAAlC,EAA0D;QACxD,MAAMC,IAAA,GAAOP,GAAA,CAAIQ,KAAJ,CAAU,KAAV,CAAb;QAGA,IAAID,IAAA,EAAME,MAAN,IAAgB,CAApB,EAAuB;UACrBT,GAAA,GAAO,UAASA,GAAV,EAAN;QADqB;MAJiC;MAW1D,IAAII,OAAA,CAAQM,kBAAZ,EAAgC;QAC9B,IAAI;UACFV,GAAA,GAAMW,kBAAA,CAAmBX,GAAnB,CAAN;QADE,CAAJ,CAEE,MAAM;MAHsB;IAbM;IAoBxC,MAAMY,WAAA,GAAcT,OAAA,GAAU,IAAIU,GAAJ,CAAQb,GAAR,EAAaG,OAAb,CAAV,GAAkC,IAAIU,GAAJ,CAAQb,GAAR,CAAtD;IACA,IAAID,gBAAA,CAAiBa,WAAjB,CAAJ,EAAmC;MACjC,OAAOA,WAAP;IADiC;EAtBjC,CAAJ,CAyBE,MAAM;EAGR,OAAO,IAAP;AAhCmE;AAmCrE,SAASE,MAATA,CAAgBC,GAAhB,EAAqBC,IAArB,EAA2BC,KAA3B,EAAkCC,eAAA,GAAkB,KAApD,EAA2D;EAOzDC,MAAA,CAAOC,cAAP,CAAsBL,GAAtB,EAA2BC,IAA3B,EAAiC;IAC/BC,KAD+B;IAE/BI,UAAA,EAAY,CAACH,eAFkB;IAG/BI,YAAA,EAAc,IAHiB;IAI/BC,QAAA,EAAU;EAJqB,CAAjC;EAMA,OAAON,KAAP;AAbyD;AAmB3D,MAAMO,aAAA,GAAiB,SAASC,oBAATA,CAAA,EAAgC;EAErD,SAASD,aAATA,CAAuBE,OAAvB,EAAgCC,IAAhC,EAAsC;IACpC,IAAI,KAAKC,WAAL,KAAqBJ,aAAzB,EAAwC;MACtC7B,WAAA,CAAY,kCAAZ;IADsC;IAGxC,KAAK+B,OAAL,GAAeA,OAAf;IACA,KAAKC,IAAL,GAAYA,IAAZ;EALoC;EAOtCH,aAAA,CAAcK,SAAd,GAA0B,IAAIjC,KAAJ,EAA1B;EACA4B,aAAA,CAAcI,WAAd,GAA4BJ,aAA5B;EAEA,OAAOA,aAAP;AAZqD,CAAjC,EAAtB;AApcArR,qBAAA,GAAAqR,aAAA;AAmdA,MAAMM,iBAAN,SAAgCN,aAAhC,CAA8C;EAC5CI,YAAYrC,GAAZ,EAAiBwC,IAAjB,EAAuB;IACrB,MAAMxC,GAAN,EAAW,mBAAX;IACA,KAAKwC,IAAL,GAAYA,IAAZ;EAFqB;AADqB;AAnd9C5R,yBAAA,GAAA2R,iBAAA;AA0dA,MAAME,qBAAN,SAAoCR,aAApC,CAAkD;EAChDI,YAAYrC,GAAZ,EAAiB0C,OAAjB,EAA0B;IACxB,MAAM1C,GAAN,EAAW,uBAAX;IACA,KAAK0C,OAAL,GAAeA,OAAf;EAFwB;AADsB;AA1dlD9R,6BAAA,GAAA6R,qBAAA;AAieA,MAAME,mBAAN,SAAkCV,aAAlC,CAAgD;EAC9CI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,qBAAX;EADe;AAD6B;AAjehDpP,2BAAA,GAAA+R,mBAAA;AAueA,MAAMC,mBAAN,SAAkCX,aAAlC,CAAgD;EAC9CI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,qBAAX;EADe;AAD6B;AAvehDpP,2BAAA,GAAAgS,mBAAA;AA6eA,MAAMC,2BAAN,SAA0CZ,aAA1C,CAAwD;EACtDI,YAAYrC,GAAZ,EAAiB8C,MAAjB,EAAyB;IACvB,MAAM9C,GAAN,EAAW,6BAAX;IACA,KAAK8C,MAAL,GAAcA,MAAd;EAFuB;AAD6B;AA7exDlS,mCAAA,GAAAiS,2BAAA;AAufA,MAAME,WAAN,SAA0Bd,aAA1B,CAAwC;EACtCI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,aAAX;EADe;AADqB;AAvfxCpP,mBAAA,GAAAmS,WAAA;AAggBA,MAAMC,cAAN,SAA6Bf,aAA7B,CAA2C;EACzCI,YAAYrC,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,gBAAX;EADe;AADwB;AAhgB3CpP,sBAAA,GAAAoS,cAAA;AAsgBA,SAASC,aAATA,CAAuBC,KAAvB,EAA8B;EAC5B,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAA,EAAOhC,MAAP,KAAkBiC,SAAnD,EAA8D;IAC5D/C,WAAA,CAAY,oCAAZ;EAD4D;EAG9D,MAAMc,MAAA,GAASgC,KAAA,CAAMhC,MAArB;EACA,MAAMkC,kBAAA,GAAqB,IAA3B;EACA,IAAIlC,MAAA,GAASkC,kBAAb,EAAiC;IAC/B,OAAOC,MAAA,CAAOC,YAAP,CAAoBC,KAApB,CAA0B,IAA1B,EAAgCL,KAAhC,CAAP;EAD+B;EAGjC,MAAMM,MAAA,GAAS,EAAf;EACA,KAAK,IAAIC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAKL,kBAAjC,EAAqD;IACnD,MAAMM,QAAA,GAAWC,IAAA,CAAKC,GAAL,CAASH,CAAA,GAAIL,kBAAb,EAAiClC,MAAjC,CAAjB;IACA,MAAM2C,KAAA,GAAQX,KAAA,CAAMY,QAAN,CAAeL,CAAf,EAAkBC,QAAlB,CAAd;IACAF,MAAA,CAAOO,IAAP,CAAYV,MAAA,CAAOC,YAAP,CAAoBC,KAApB,CAA0B,IAA1B,EAAgCM,KAAhC,CAAZ;EAHmD;EAKrD,OAAOL,MAAA,CAAOQ,IAAP,CAAY,EAAZ,CAAP;AAf4B;AAkB9B,SAASC,aAATA,CAAuBC,GAAvB,EAA4B;EAC1B,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B9D,WAAA,CAAY,oCAAZ;EAD2B;EAG7B,MAAMc,MAAA,GAASgD,GAAA,CAAIhD,MAAnB;EACA,MAAMgC,KAAA,GAAQ,IAAIiB,UAAJ,CAAejD,MAAf,CAAd;EACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4B,EAAEuC,CAA9B,EAAiC;IAC/BP,KAAA,CAAMO,CAAN,IAAWS,GAAA,CAAIE,UAAJ,CAAeX,CAAf,IAAoB,IAA/B;EAD+B;EAGjC,OAAOP,KAAP;AAT0B;AAY5B,SAASmB,QAATA,CAAkB3C,KAAlB,EAAyB;EAOvB,OAAO2B,MAAA,CAAOC,YAAP,CACJ5B,KAAA,IAAS,EAAV,GAAgB,IADX,EAEJA,KAAA,IAAS,EAAV,GAAgB,IAFX,EAGJA,KAAA,IAAS,CAAV,GAAe,IAHV,EAILA,KAAA,GAAQ,IAJH,CAAP;AAPuB;AAezB,SAAS4C,UAATA,CAAoB9C,GAApB,EAAyB;EACvB,OAAOI,MAAA,CAAO2C,IAAP,CAAY/C,GAAZ,EAAiBN,MAAxB;AADuB;AAMzB,SAASsD,aAATA,CAAuBC,GAAvB,EAA4B;EAC1B,MAAMjD,GAAA,GAAMI,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAZ;EACA,WAAW,CAACC,GAAD,EAAMjD,KAAN,CAAX,IAA2B+C,GAA3B,EAAgC;IAC9BjD,GAAA,CAAImD,GAAJ,IAAWjD,KAAX;EAD8B;EAGhC,OAAOF,GAAP;AAL0B;AAS5B,SAASoD,cAATA,CAAA,EAA0B;EACxB,MAAMC,OAAA,GAAU,IAAIV,UAAJ,CAAe,CAAf,CAAhB;EACAU,OAAA,CAAQ,CAAR,IAAa,CAAb;EACA,MAAMC,MAAA,GAAS,IAAIC,WAAJ,CAAgBF,OAAA,CAAQG,MAAxB,EAAgC,CAAhC,EAAmC,CAAnC,CAAf;EACA,OAAOF,MAAA,CAAO,CAAP,MAAc,CAArB;AAJwB;AAQ1B,SAASG,eAATA,CAAA,EAA2B;EACzB,IAAI;IACF,IAAIC,QAAJ,CAAa,EAAb;IACA,OAAO,IAAP;EAFE,CAAJ,CAGE,MAAM;IACN,OAAO,KAAP;EADM;AAJiB;AAS3B,MAAMC,WAAN,CAAkB;EAChB,WAAWP,cAAXA,CAAA,EAA4B;IAC1B,OAAOrD,MAAA,CAAO,IAAP,EAAa,gBAAb,EAA+BqD,cAAA,EAA/B,CAAP;EAD0B;EAI5B,WAAWK,eAAXA,CAAA,EAA6B;IAC3B,OAAO1D,MAAA,CAAO,IAAP,EAAa,iBAAb,EAAgC0D,eAAA,EAAhC,CAAP;EAD2B;EAI7B,WAAWG,0BAAXA,CAAA,EAAwC;IACtC,OAAO7D,MAAA,CACL,IADK,EAEL,4BAFK,EAGL,OAAO8D,eAAP,KAA2B,WAHtB,CAAP;EADsC;EAQxC,WAAWC,QAAXA,CAAA,EAAsB;IACpB,IAEE,OAAOC,SAAP,KAAqB,WAFvB,EAGE;MACA,OAAOhE,MAAA,CAAO,IAAP,EAAa,UAAb,EAAyB;QAAEiE,KAAA,EAAO,KAAT;QAAgBC,KAAA,EAAO;MAAvB,CAAzB,CAAP;IADA;IAGF,OAAOlE,MAAA,CAAO,IAAP,EAAa,UAAb,EAAyB;MAC9BiE,KAAA,EAAOD,SAAA,CAAUD,QAAV,CAAmBI,QAAnB,CAA4B,KAA5B,CADuB;MAE9BD,KAAA,EAAOF,SAAA,CAAUD,QAAV,CAAmBI,QAAnB,CAA4B,KAA5B;IAFuB,CAAzB,CAAP;EAPoB;AAjBN;AAnlBlB9U,mBAAA,GAAAuU,WAAA;AAknBA,MAAMQ,UAAA,GAAa,CAAC,GAAGC,KAAA,CAAM,GAAN,EAAWrB,IAAX,EAAJ,EAAuBE,GAAvB,CAA2BoB,CAAA,IAC5CA,CAAA,CAAEC,QAAF,CAAW,EAAX,EAAeC,QAAf,CAAwB,CAAxB,EAA2B,GAA3B,CADiB,CAAnB;AAIA,MAAMC,IAAN,CAAW;EACT,OAAOC,YAAPA,CAAoBC,CAApB,EAAuBC,CAAvB,EAA0BC,CAA1B,EAA6B;IAC3B,OAAQ,IAAGT,UAAA,CAAWO,CAAX,CAAJ,GAAoBP,UAAA,CAAWQ,CAAX,CAApB,GAAoCR,UAAA,CAAWS,CAAX,CAApC,EAAP;EAD2B;EAO7B,OAAOC,WAAPA,CAAmB5L,SAAnB,EAA8B6L,MAA9B,EAAsC;IACpC,IAAIC,IAAJ;IACA,IAAI9L,SAAA,CAAU,CAAV,CAAJ,EAAkB;MAChB,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpB8L,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;MACA6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;MAEA,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpB8L,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;MACA6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;IAfgB,CAAlB,MAgBO;MACL8L,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;MACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;MACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MACAA,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;MACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;MACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAEA,IAAI9L,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpB8L,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;MACA6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;MAEA,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpB8L,IAAA,GAAOD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYC,IAAZ;MAHoB;MAKtBD,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;MACA6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;IAtBK;IAwBP6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;IACA6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;IACA6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;IACA6L,MAAA,CAAO,CAAP,KAAa7L,SAAA,CAAU,CAAV,CAAb;EA7CoC;EAiDtC,OAAOA,SAAPA,CAAiB+L,EAAjB,EAAqBC,EAArB,EAAyB;IACvB,OAAO,CACLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CADnB,EAELD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAFnB,EAGLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAHnB,EAILD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAJnB,EAKLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAxB,GAAgCD,EAAA,CAAG,CAAH,CAL3B,EAMLA,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAxB,GAAgCD,EAAA,CAAG,CAAH,CAN3B,CAAP;EADuB;EAYzB,OAAOE,cAAPA,CAAsBC,CAAtB,EAAyBC,CAAzB,EAA4B;IAC1B,MAAMC,EAAA,GAAKF,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAP,GAAcD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,CAAvC;IACA,MAAME,EAAA,GAAKH,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAP,GAAcD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,CAAvC;IACA,OAAO,CAACC,EAAD,EAAKC,EAAL,CAAP;EAH0B;EAM5B,OAAOC,qBAAPA,CAA6BJ,CAA7B,EAAgCC,CAAhC,EAAmC;IACjC,MAAMI,CAAA,GAAIJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA/B;IACA,MAAMC,EAAA,GAAM,CAAAF,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAP,GAAcD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAnC,GAA0CA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAjD,IAAyDI,CAArE;IACA,MAAMF,EAAA,GAAM,EAACH,CAAA,CAAE,CAAF,CAAD,GAAQC,CAAA,CAAE,CAAF,CAAR,GAAeD,CAAA,CAAE,CAAF,IAAOC,CAAA,CAAE,CAAF,CAAtB,GAA6BA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAApC,GAA2CA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAlD,IAA0DI,CAAtE;IACA,OAAO,CAACH,EAAD,EAAKC,EAAL,CAAP;EAJiC;EASnC,OAAOG,0BAAPA,CAAkCf,CAAlC,EAAqCU,CAArC,EAAwC;IACtC,MAAMM,EAAA,GAAK,KAAKR,cAAL,CAAoBR,CAApB,EAAuBU,CAAvB,CAAX;IACA,MAAMO,EAAA,GAAK,KAAKT,cAAL,CAAoBR,CAAA,CAAEkB,KAAF,CAAQ,CAAR,EAAW,CAAX,CAApB,EAAmCR,CAAnC,CAAX;IACA,MAAMS,EAAA,GAAK,KAAKX,cAAL,CAAoB,CAACR,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,CAApB,EAAkCU,CAAlC,CAAX;IACA,MAAMU,EAAA,GAAK,KAAKZ,cAAL,CAAoB,CAACR,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,CAApB,EAAkCU,CAAlC,CAAX;IACA,OAAO,CACLjD,IAAA,CAAKC,GAAL,CAASsD,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CADK,EAEL3D,IAAA,CAAKC,GAAL,CAASsD,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CAFK,EAGL3D,IAAA,CAAK4D,GAAL,CAASL,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CAHK,EAIL3D,IAAA,CAAK4D,GAAL,CAASL,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBE,EAAA,CAAG,CAAH,CAAvB,EAA8BC,EAAA,CAAG,CAAH,CAA9B,CAJK,CAAP;EALsC;EAaxC,OAAOE,gBAAPA,CAAwBZ,CAAxB,EAA2B;IACzB,MAAMI,CAAA,GAAIJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA/B;IACA,OAAO,CACLA,CAAA,CAAE,CAAF,IAAOI,CADF,EAEL,CAACJ,CAAA,CAAE,CAAF,CAAD,GAAQI,CAFH,EAGL,CAACJ,CAAA,CAAE,CAAF,CAAD,GAAQI,CAHH,EAILJ,CAAA,CAAE,CAAF,IAAOI,CAJF,EAKJ,CAAAJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAArB,IAA6BI,CALzB,EAMJ,CAAAJ,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAArB,IAA6BI,CANzB,CAAP;EAFyB;EAe3B,OAAOS,6BAAPA,CAAqCb,CAArC,EAAwC;IACtC,MAAMc,SAAA,GAAY,CAACd,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,EAAaA,CAAA,CAAE,CAAF,CAAb,EAAmBA,CAAA,CAAE,CAAF,CAAnB,CAAlB;IAGA,MAAMe,CAAA,GAAIf,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IACA,MAAMtB,CAAA,GAAIQ,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IACA,MAAME,CAAA,GAAIhB,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IACA,MAAMV,CAAA,GAAIJ,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAP,GAAsBd,CAAA,CAAE,CAAF,IAAOc,SAAA,CAAU,CAAV,CAAvC;IAGA,MAAMG,KAAA,GAAS,CAAAF,CAAA,GAAIX,CAAJ,IAAS,CAAxB;IACA,MAAMc,MAAA,GAASnE,IAAA,CAAKoE,IAAL,CAAW,CAAAJ,CAAA,GAAIX,CAAJ,KAAU,CAAX,GAAe,KAAKW,CAAA,GAAIX,CAAJ,GAAQY,CAAA,GAAIxB,CAAZ,CAA9B,IAAgD,CAA/D;IACA,MAAM4B,EAAA,GAAKH,KAAA,GAAQC,MAAR,IAAkB,CAA7B;IACA,MAAMG,EAAA,GAAKJ,KAAA,GAAQC,MAAR,IAAkB,CAA7B;IAGA,OAAO,CAACnE,IAAA,CAAKoE,IAAL,CAAUC,EAAV,CAAD,EAAgBrE,IAAA,CAAKoE,IAAL,CAAUE,EAAV,CAAhB,CAAP;EAhBsC;EAuBxC,OAAOC,aAAPA,CAAqBC,IAArB,EAA2B;IACzB,MAAMjC,CAAA,GAAIiC,IAAA,CAAKf,KAAL,CAAW,CAAX,CAAV;IACA,IAAIe,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAd,EAAuB;MACrBjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;MACAjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;IAFqB;IAIvB,IAAIA,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAd,EAAuB;MACrBjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;MACAjC,CAAA,CAAE,CAAF,IAAOiC,IAAA,CAAK,CAAL,CAAP;IAFqB;IAIvB,OAAOjC,CAAP;EAVyB;EAgB3B,OAAOkC,SAAPA,CAAiBC,KAAjB,EAAwBC,KAAxB,EAA+B;IAC7B,MAAMC,IAAA,GAAO5E,IAAA,CAAK4D,GAAL,CACX5D,IAAA,CAAKC,GAAL,CAASyE,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADW,EAEX1E,IAAA,CAAKC,GAAL,CAAS0E,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFW,CAAb;IAIA,MAAME,KAAA,GAAQ7E,IAAA,CAAKC,GAAL,CACZD,IAAA,CAAK4D,GAAL,CAASc,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADY,EAEZ1E,IAAA,CAAK4D,GAAL,CAASe,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFY,CAAd;IAIA,IAAIC,IAAA,GAAOC,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAGlB,MAAMC,IAAA,GAAO9E,IAAA,CAAK4D,GAAL,CACX5D,IAAA,CAAKC,GAAL,CAASyE,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADW,EAEX1E,IAAA,CAAKC,GAAL,CAAS0E,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFW,CAAb;IAIA,MAAMI,KAAA,GAAQ/E,IAAA,CAAKC,GAAL,CACZD,IAAA,CAAK4D,GAAL,CAASc,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADY,EAEZ1E,IAAA,CAAK4D,GAAL,CAASe,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFY,CAAd;IAIA,IAAIG,IAAA,GAAOC,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAIlB,OAAO,CAACH,IAAD,EAAOE,IAAP,EAAaD,KAAb,EAAoBE,KAApB,CAAP;EAxB6B;EA4B/B,OAAOC,iBAAPA,CAAyBC,EAAzB,EAA6BC,EAA7B,EAAiCC,EAAjC,EAAqCC,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiDC,EAAjD,EAAqDC,EAArD,EAAyD;IACvD,MAAMC,OAAA,GAAU,EAAhB;MACEC,MAAA,GAAS,CAAC,EAAD,EAAK,EAAL,CADX;IAEA,IAAI1B,CAAJ,EAAOvB,CAAP,EAAUwB,CAAV,EAAa0B,CAAb,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,IAAxB,EAA8BC,QAA9B;IACA,KAAK,IAAIjG,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;MAC1B,IAAIA,CAAA,KAAM,CAAV,EAAa;QACX2C,CAAA,GAAI,IAAIwC,EAAJ,GAAS,KAAKE,EAAd,GAAmB,IAAIE,EAA3B;QACArB,CAAA,GAAI,CAAC,CAAD,GAAKiB,EAAL,GAAU,IAAIE,EAAd,GAAmB,IAAIE,EAAvB,GAA4B,IAAIE,EAApC;QACAtB,CAAA,GAAI,IAAIkB,EAAJ,GAAS,IAAIF,EAAjB;MAHW,CAAb,MAIO;QACLxC,CAAA,GAAI,IAAIyC,EAAJ,GAAS,KAAKE,EAAd,GAAmB,IAAIE,EAA3B;QACAtB,CAAA,GAAI,CAAC,CAAD,GAAKkB,EAAL,GAAU,IAAIE,EAAd,GAAmB,IAAIE,EAAvB,GAA4B,IAAIE,EAApC;QACAvB,CAAA,GAAI,IAAImB,EAAJ,GAAS,IAAIF,EAAjB;MAHK;MAKP,IAAIlF,IAAA,CAAKgG,GAAL,CAAShC,CAAT,IAAc,KAAlB,EAAyB;QACvB,IAAIhE,IAAA,CAAKgG,GAAL,CAASvD,CAAT,IAAc,KAAlB,EAAyB;UACvB;QADuB;QAGzBkD,CAAA,GAAI,CAAC1B,CAAD,GAAKxB,CAAT;QACA,IAAI,IAAIkD,CAAJ,IAASA,CAAA,GAAI,CAAjB,EAAoB;UAClBF,OAAA,CAAQrF,IAAR,CAAauF,CAAb;QADkB;QAGpB;MARuB;MAUzBG,IAAA,GAAOrD,CAAA,GAAIA,CAAJ,GAAQ,IAAIwB,CAAJ,GAAQD,CAAvB;MACA+B,QAAA,GAAW/F,IAAA,CAAKoE,IAAL,CAAU0B,IAAV,CAAX;MACA,IAAIA,IAAA,GAAO,CAAX,EAAc;QACZ;MADY;MAGdF,EAAA,GAAM,EAACnD,CAAD,GAAKsD,QAAL,KAAkB,IAAI/B,CAAJ,CAAxB;MACA,IAAI,IAAI4B,EAAJ,IAAUA,EAAA,GAAK,CAAnB,EAAsB;QACpBH,OAAA,CAAQrF,IAAR,CAAawF,EAAb;MADoB;MAGtBC,EAAA,GAAM,EAACpD,CAAD,GAAKsD,QAAL,KAAkB,IAAI/B,CAAJ,CAAxB;MACA,IAAI,IAAI6B,EAAJ,IAAUA,EAAA,GAAK,CAAnB,EAAsB;QACpBJ,OAAA,CAAQrF,IAAR,CAAayF,EAAb;MADoB;IA9BI;IAmC5B,IAAII,CAAA,GAAIR,OAAA,CAAQlI,MAAhB;MACE2I,EADF;IAEA,MAAMC,IAAA,GAAOF,CAAb;IACA,OAAOA,CAAA,EAAP,EAAY;MACVN,CAAA,GAAIF,OAAA,CAAQQ,CAAR,CAAJ;MACAC,EAAA,GAAK,IAAIP,CAAT;MACAD,MAAA,CAAO,CAAP,EAAUO,CAAV,IACEC,EAAA,GAAKA,EAAL,GAAUA,EAAV,GAAejB,EAAf,GACA,IAAIiB,EAAJ,GAASA,EAAT,GAAcP,CAAd,GAAkBR,EADlB,GAEA,IAAIe,EAAJ,GAASP,CAAT,GAAaA,CAAb,GAAiBN,EAFjB,GAGAM,CAAA,GAAIA,CAAJ,GAAQA,CAAR,GAAYJ,EAJd;MAKAG,MAAA,CAAO,CAAP,EAAUO,CAAV,IACEC,EAAA,GAAKA,EAAL,GAAUA,EAAV,GAAehB,EAAf,GACA,IAAIgB,EAAJ,GAASA,EAAT,GAAcP,CAAd,GAAkBP,EADlB,GAEA,IAAIc,EAAJ,GAASP,CAAT,GAAaA,CAAb,GAAiBL,EAFjB,GAGAK,CAAA,GAAIA,CAAJ,GAAQA,CAAR,GAAYH,EAJd;IARU;IAeZE,MAAA,CAAO,CAAP,EAAUS,IAAV,IAAkBlB,EAAlB;IACAS,MAAA,CAAO,CAAP,EAAUS,IAAV,IAAkBjB,EAAlB;IACAQ,MAAA,CAAO,CAAP,EAAUS,IAAA,GAAO,CAAjB,IAAsBZ,EAAtB;IACAG,MAAA,CAAO,CAAP,EAAUS,IAAA,GAAO,CAAjB,IAAsBX,EAAtB;IACAE,MAAA,CAAO,CAAP,EAAUnI,MAAV,GAAmBmI,MAAA,CAAO,CAAP,EAAUnI,MAAV,GAAmB4I,IAAA,GAAO,CAA7C;IAEA,OAAO,CACLnG,IAAA,CAAKC,GAAL,CAAS,GAAGyF,MAAA,CAAO,CAAP,CAAZ,CADK,EAEL1F,IAAA,CAAKC,GAAL,CAAS,GAAGyF,MAAA,CAAO,CAAP,CAAZ,CAFK,EAGL1F,IAAA,CAAK4D,GAAL,CAAS,GAAG8B,MAAA,CAAO,CAAP,CAAZ,CAHK,EAIL1F,IAAA,CAAK4D,GAAL,CAAS,GAAG8B,MAAA,CAAO,CAAP,CAAZ,CAJK,CAAP;EA/DuD;AAnLhD;AAtnBXzY,YAAA,GAAAoV,IAAA;AAi3BA,MAAM+D,uBAAA,GAA0B,CAC9B,CAD8B,EAC3B,CAD2B,EACxB,CADwB,EACrB,CADqB,EAClB,CADkB,EACf,CADe,EACZ,CADY,EACT,CADS,EACN,CADM,EACH,CADG,EACA,CADA,EACG,CADH,EACM,CADN,EACS,CADT,EACY,CADZ,EACe,CADf,EACkB,CADlB,EACqB,CADrB,EACwB,CADxB,EAC2B,CAD3B,EAC8B,CAD9B,EACiC,CADjC,EACoC,CADpC,EACuC,CADvC,EAC0C,KAD1C,EAE9B,KAF8B,EAEvB,KAFuB,EAEhB,KAFgB,EAET,KAFS,EAEF,KAFE,EAEK,KAFL,EAEY,KAFZ,EAEmB,CAFnB,EAEsB,CAFtB,EAEyB,CAFzB,EAE4B,CAF5B,EAE+B,CAF/B,EAEkC,CAFlC,EAEqC,CAFrC,EAEwC,CAFxC,EAE2C,CAF3C,EAE8C,CAF9C,EAG9B,CAH8B,EAG3B,CAH2B,EAGxB,CAHwB,EAGrB,CAHqB,EAGlB,CAHkB,EAGf,CAHe,EAGZ,CAHY,EAGT,CAHS,EAGN,CAHM,EAGH,CAHG,EAGA,CAHA,EAGG,CAHH,EAGM,CAHN,EAGS,CAHT,EAGY,CAHZ,EAGe,CAHf,EAGkB,CAHlB,EAGqB,CAHrB,EAGwB,CAHxB,EAG2B,CAH3B,EAG8B,CAH9B,EAGiC,CAHjC,EAGoC,CAHpC,EAGuC,CAHvC,EAG0C,CAH1C,EAG6C,CAH7C,EAI9B,CAJ8B,EAI3B,CAJ2B,EAIxB,CAJwB,EAIrB,CAJqB,EAIlB,CAJkB,EAIf,CAJe,EAIZ,CAJY,EAIT,CAJS,EAIN,CAJM,EAIH,CAJG,EAIA,CAJA,EAIG,CAJH,EAIM,CAJN,EAIS,CAJT,EAIY,CAJZ,EAIe,CAJf,EAIkB,CAJlB,EAIqB,CAJrB,EAIwB,CAJxB,EAI2B,CAJ3B,EAI8B,CAJ9B,EAIiC,CAJjC,EAIoC,CAJpC,EAIuC,CAJvC,EAI0C,CAJ1C,EAI6C,CAJ7C,EAK9B,CAL8B,EAK3B,CAL2B,EAKxB,CALwB,EAKrB,CALqB,EAKlB,CALkB,EAKf,CALe,EAKZ,CALY,EAKT,CALS,EAKN,CALM,EAKH,CALG,EAKA,CALA,EAKG,CALH,EAKM,CALN,EAKS,CALT,EAKY,CALZ,EAKe,CALf,EAKkB,CALlB,EAKqB,CALrB,EAKwB,CALxB,EAK2B,CAL3B,EAK8B,CAL9B,EAKiC,CALjC,EAKoC,CALpC,EAKuC,CALvC,EAK0C,CAL1C,EAK6C,CAL7C,EAM9B,CAN8B,EAM3B,CAN2B,EAMxB,CANwB,EAMrB,CANqB,EAMlB,CANkB,EAMf,CANe,EAMZ,CANY,EAMT,CANS,EAMN,MANM,EAME,MANF,EAMU,MANV,EAMkB,MANlB,EAM0B,MAN1B,EAMkC,MANlC,EAM0C,KAN1C,EAO9B,MAP8B,EAOtB,MAPsB,EAOd,MAPc,EAON,MAPM,EAOE,MAPF,EAOU,MAPV,EAOkB,MAPlB,EAO0B,MAP1B,EAOkC,MAPlC,EAQ9B,MAR8B,EAQtB,MARsB,EAQd,MARc,EAQN,MARM,EAQE,MARF,EAQU,KARV,EAQiB,KARjB,EAQwB,KARxB,EAQ+B,KAR/B,EAQsC,KARtC,EAS9B,KAT8B,EASvB,KATuB,EAShB,KATgB,EAST,KATS,EASF,KATE,EASK,CATL,EASQ,MATR,CAAhC;AAYA,SAASC,iBAATA,CAA2B9F,GAA3B,EAAgC;EAC9B,IAAIA,GAAA,CAAI,CAAJ,KAAU,MAAd,EAAsB;IACpB,IAAI+F,QAAJ;IACA,IAAI/F,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAApC,EAA4C;MAC1C+F,QAAA,GAAW,UAAX;IAD0C,CAA5C,MAEO,IAAI/F,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAApC,EAA4C;MACjD+F,QAAA,GAAW,UAAX;IADiD,CAA5C,MAEA,IAAI/F,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAAhC,IAA0CA,GAAA,CAAI,CAAJ,MAAW,MAAzD,EAAiE;MACtE+F,QAAA,GAAW,OAAX;IADsE;IAIxE,IAAIA,QAAJ,EAAc;MACZ,IAAI;QACF,MAAMC,OAAA,GAAU,IAAIC,WAAJ,CAAgBF,QAAhB,EAA0B;UAAEG,KAAA,EAAO;QAAT,CAA1B,CAAhB;QACA,MAAMpF,MAAA,GAASf,aAAA,CAAcC,GAAd,CAAf;QACA,OAAOgG,OAAA,CAAQG,MAAR,CAAerF,MAAf,CAAP;MAHE,CAAJ,CAIE,OAAOsF,EAAP,EAAW;QACXnK,IAAA,CAAM,uBAAsBmK,EAAG,IAA/B;MADW;IALD;EAVM;EAqBtB,MAAM9G,MAAA,GAAS,EAAf;EACA,KAAK,IAAIC,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKrG,GAAA,CAAIhD,MAApB,EAA4BuC,CAAA,GAAI8G,EAArC,EAAyC9G,CAAA,EAAzC,EAA8C;IAC5C,MAAMjB,IAAA,GAAOuH,uBAAA,CAAwB7F,GAAA,CAAIE,UAAJ,CAAeX,CAAf,CAAxB,CAAb;IACAD,MAAA,CAAOO,IAAP,CAAYvB,IAAA,GAAOa,MAAA,CAAOC,YAAP,CAAoBd,IAApB,CAAP,GAAmC0B,GAAA,CAAIsG,MAAJ,CAAW/G,CAAX,CAA/C;EAF4C;EAI9C,OAAOD,MAAA,CAAOQ,IAAP,CAAY,EAAZ,CAAP;AA3B8B;AA8BhC,SAAS5C,kBAATA,CAA4B8C,GAA5B,EAAiC;EAC/B,OAAOuG,kBAAA,CAAmBC,MAAA,CAAOxG,GAAP,CAAnB,CAAP;AAD+B;AAIjC,SAASyG,kBAATA,CAA4BzG,GAA5B,EAAiC;EAC/B,OAAO0G,QAAA,CAASC,kBAAA,CAAmB3G,GAAnB,CAAT,CAAP;AAD+B;AAIjC,SAAS4G,aAATA,CAAuBC,CAAvB,EAA0B;EACxB,OAAO,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAA,EAAGC,UAAH,KAAkB7H,SAAlD;AADwB;AAI1B,SAAS8H,YAATA,CAAsBC,IAAtB,EAA4BC,IAA5B,EAAkC;EAChC,IAAID,IAAA,CAAKhK,MAAL,KAAgBiK,IAAA,CAAKjK,MAAzB,EAAiC;IAC/B,OAAO,KAAP;EAD+B;EAGjC,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKW,IAAA,CAAKhK,MAArB,EAA6BuC,CAAA,GAAI8G,EAAtC,EAA0C9G,CAAA,EAA1C,EAA+C;IAC7C,IAAIyH,IAAA,CAAKzH,CAAL,MAAY0H,IAAA,CAAK1H,CAAL,CAAhB,EAAyB;MACvB,OAAO,KAAP;IADuB;EADoB;EAK/C,OAAO,IAAP;AATgC;AAYlC,SAAS2H,mBAATA,CAA6BC,IAAA,GAAO,IAAIC,IAAJ,EAApC,EAAgD;EAC9C,MAAMtG,MAAA,GAAS,CACbqG,IAAA,CAAKE,cAAL,GAAsBzF,QAAtB,EADa,EAEZ,CAAAuF,IAAA,CAAKG,WAAL,KAAqB,CAArB,EAAwB1F,QAAzB,GAAoCC,QAApC,CAA6C,CAA7C,EAAgD,GAAhD,CAFa,EAGbsF,IAAA,CAAKI,UAAL,GAAkB3F,QAAlB,GAA6BC,QAA7B,CAAsC,CAAtC,EAAyC,GAAzC,CAHa,EAIbsF,IAAA,CAAKK,WAAL,GAAmB5F,QAAnB,GAA8BC,QAA9B,CAAuC,CAAvC,EAA0C,GAA1C,CAJa,EAKbsF,IAAA,CAAKM,aAAL,GAAqB7F,QAArB,GAAgCC,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CALa,EAMbsF,IAAA,CAAKO,aAAL,GAAqB9F,QAArB,GAAgCC,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CANa,CAAf;EASA,OAAOf,MAAA,CAAOhB,IAAP,CAAY,EAAZ,CAAP;AAV8C;AAahD,MAAM6H,iBAAN,CAAwB;EACtB,CAAAC,OAAA,GAAW,KAAX;EAEAzJ,YAAA,EAAc;IAIZ,KAAK0J,OAAL,GAAe,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MAI9C,KAAKD,OAAL,GAAeE,IAAA,IAAQ;QACrB,KAAK,CAAAL,OAAL,GAAgB,IAAhB;QACAG,OAAA,CAAQE,IAAR;MAFqB,CAAvB;MAQA,KAAKD,MAAL,GAAcE,MAAA,IAAU;QAItB,KAAK,CAAAN,OAAL,GAAgB,IAAhB;QACAI,MAAA,CAAOE,MAAP;MALsB,CAAxB;IAZ8C,CAAjC,CAAf;EAJY;EA6Bd,IAAIN,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAA,OAAZ;EADY;AAhCQ;AAh8BxBlb,yBAAA,GAAAib,iBAAA;AAq+BA,IAAIQ,cAAA,GAAiB,IAArB;AACA,IAAIC,gBAAA,GAAmB,IAAvB;AACA,SAASC,gBAATA,CAA0BrI,GAA1B,EAA+B;EAC7B,IAAI,CAACmI,cAAL,EAAqB;IAOnBA,cAAA,GACE,0UADF;IAEAC,gBAAA,GAAmB,IAAIE,GAAJ,CAAQ,CAAC,CAAC,GAAD,EAAM,IAAN,CAAD,CAAR,CAAnB;EATmB;EAWrB,OAAOtI,GAAA,CAAIuI,UAAJ,CAAeJ,cAAf,EAA+B,CAACK,CAAD,EAAIxF,EAAJ,EAAQC,EAAR,KAAe;IACnD,OAAOD,EAAA,GAAKA,EAAA,CAAGyF,SAAH,CAAa,MAAb,CAAL,GAA4BL,gBAAA,CAAiBM,GAAjB,CAAqBzF,EAArB,CAAnC;EADmD,CAA9C,CAAP;AAZ6B;;;;;;;;;;;;;;ACp9B/B,IAAA0F,KAAA,GAAAC,mBAAA;AAqBA,IAAAC,mBAAA,GAAAD,mBAAA;AAKA,IAAAE,cAAA,GAAAF,mBAAA;AAaA,IAAAG,YAAA,GAAAH,mBAAA;AACA,IAAAI,OAAA,GAAAJ,mBAAA;AACA,IAAAK,eAAA,GAAAL,mBAAA;AACA,IAAAM,QAAA,GAAAN,mBAAA;AACA,IAAAO,gBAAA,GAAAP,mBAAA;AACA,IAAAQ,SAAA,GAAAR,mBAAA;AACA,IAAAS,wBAAA,GAAAT,mBAAA;AACA,IAAAU,iBAAA,GAAAV,mBAAA;AACA,IAAAW,SAAA,GAAAX,mBAAA;AAEA,MAAMY,wBAAA,GAA2B,KAAjC;AACA,MAAMC,2BAAA,GAA8B,GAApC;AACA,MAAMC,uBAAA,GAA0B,IAAhC;AAEA,MAAMC,oBAAA,GAC2DC,iBAA/D,GACIhB,2CADJ,GAEIkB,+BAHN;AAxEApd,4BAAA,GAAAid,oBAAA;AA4EA,MAAMI,wBAAA,GAC2DH,iBAA/D,GACIhB,+CADJ,GAEIqB,mCAHN;AA5EAvd,gCAAA,GAAAqd,wBAAA;AAgFA,MAAMG,oBAAA,GAC2DN,iBAA/D,GACIhB,2CADJ,GAEIwB,+BAHN;AAhFA1d,4BAAA,GAAAwd,oBAAA;AAoFA,MAAMG,8BAAA,GAC2DT,iBAA/D,GACIhB,qDADJ,GAEI2B,yCAHN;AApFA7d,sCAAA,GAAA2d,8BAAA;AAyFA,IAAIG,sBAAJ;AAc+C;EAC7C,IAAgCZ,iBAAhC,EAA0C;IACxC,MAAM;MAAEa;IAAF,IAAoB7B,mBAAA,CAAQ,EAAR,CAA1B;IAEA4B,sBAAA,GAAyBE,MAAA,IAAU;MACjC,OAAO,IAAID,aAAJ,CAAkBC,MAAlB,CAAP;IADiC,CAAnC;EAHwC,CAA1C,MAMO;IACL,MAAM;MAAEC;IAAF,IAAuB/B,mBAAA,CAAQ,EAAR,CAA7B;IACA,MAAM;MAAEgC;IAAF,IAAqBhC,mBAAA,CAAQ,EAAR,CAA3B;IAEA4B,sBAAA,GAAyBE,MAAA,IAAU;MACjC,OAAO,IAAAG,8BAAA,EAAgBH,MAAA,CAAOnO,GAAvB,IACH,IAAIqO,cAAJ,CAAmBF,MAAnB,CADG,GAEH,IAAIC,gBAAJ,CAAqBD,MAArB,CAFJ;IADiC,CAAnC;EAJK;AAPsC;AA2J/C,SAASI,WAATA,CAAqBC,GAArB,EAA0B;EAEtB,IAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAA,YAAe3N,GAA9C,EAAmD;IACjD2N,GAAA,GAAM;MAAExO,GAAA,EAAKwO;IAAP,CAAN;EADiD,CAAnD,MAEO,IAAI,IAAAnE,mBAAA,EAAcmE,GAAd,CAAJ,EAAwB;IAC7BA,GAAA,GAAM;MAAE9C,IAAA,EAAM8C;IAAR,CAAN;EAD6B;EAIjC,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B,MAAM,IAAI5O,KAAJ,CAAU,0DAAV,CAAN;EAD2B;EAG7B,IAAI,CAAC4O,GAAA,CAAIxO,GAAL,IAAY,CAACwO,GAAA,CAAI9C,IAAjB,IAAyB,CAAC8C,GAAA,CAAIC,KAAlC,EAAyC;IACvC,MAAM,IAAI7O,KAAJ,CACJ,6DADI,CAAN;EADuC;EAKzC,MAAM8O,IAAA,GAAO,IAAIC,sBAAJ,EAAb;EACA,MAAM;IAAEC;EAAF,IAAYF,IAAlB;EAEA,MAAM1O,GAAA,GAAMwO,GAAA,CAAIxO,GAAJ,GAAU6O,UAAA,CAAWL,GAAA,CAAIxO,GAAf,CAAV,GAAgC,IAA5C;EACA,MAAM0L,IAAA,GAAO8C,GAAA,CAAI9C,IAAJ,GAAWoD,WAAA,CAAYN,GAAA,CAAI9C,IAAhB,CAAX,GAAmC,IAAhD;EACA,MAAMqD,WAAA,GAAcP,GAAA,CAAIO,WAAJ,IAAmB,IAAvC;EACA,MAAMC,eAAA,GAAkBR,GAAA,CAAIQ,eAAJ,KAAwB,IAAhD;EACA,MAAMC,QAAA,GAAWT,GAAA,CAAIS,QAAJ,IAAgB,IAAjC;EACA,MAAMC,cAAA,GACJV,GAAA,CAAIC,KAAJ,YAAqBU,qBAArB,GAA6CX,GAAA,CAAIC,KAAjD,GAAyD,IAD3D;EAEA,MAAMW,cAAA,GACJjQ,MAAA,CAAOC,SAAP,CAAiBoP,GAAA,CAAIY,cAArB,KAAwCZ,GAAA,CAAIY,cAAJ,GAAqB,CAA7D,GACIZ,GAAA,CAAIY,cADR,GAEInC,wBAHN;EAIA,IAAIoC,MAAA,GAASb,GAAA,CAAIa,MAAJ,YAAsBC,SAAtB,GAAkCd,GAAA,CAAIa,MAAtC,GAA+C,IAA5D;EACA,MAAMrQ,SAAA,GAAYwP,GAAA,CAAIxP,SAAtB;EAIA,MAAMuQ,UAAA,GACJ,OAAOf,GAAA,CAAIe,UAAX,KAA0B,QAA1B,IAAsC,CAAC,IAAAC,2BAAA,EAAahB,GAAA,CAAIe,UAAjB,CAAvC,GACIf,GAAA,CAAIe,UADR,GAEI,IAHN;EAIA,MAAME,OAAA,GAAU,OAAOjB,GAAA,CAAIiB,OAAX,KAAuB,QAAvB,GAAkCjB,GAAA,CAAIiB,OAAtC,GAAgD,IAAhE;EACA,MAAMC,UAAA,GAAalB,GAAA,CAAIkB,UAAJ,KAAmB,KAAtC;EACA,MAAMC,iBAAA,GAAoBnB,GAAA,CAAImB,iBAAJ,IAAyBnC,wBAAnD;EACA,MAAMoC,mBAAA,GACJ,OAAOpB,GAAA,CAAIoB,mBAAX,KAAmC,QAAnC,GACIpB,GAAA,CAAIoB,mBADR,GAEI,IAHN;EAIA,MAAMC,uBAAA,GACJrB,GAAA,CAAIqB,uBAAJ,IAA+B/B,8BADjC;EAEA,MAAMgC,YAAA,GAAetB,GAAA,CAAIuB,YAAJ,KAAqB,IAA1C;EACA,MAAMC,YAAA,GACJ7Q,MAAA,CAAOC,SAAP,CAAiBoP,GAAA,CAAIwB,YAArB,KAAsCxB,GAAA,CAAIwB,YAAJ,GAAmB,CAAC,CAA1D,GACIxB,GAAA,CAAIwB,YADR,GAEI,CAAC,CAHP;EAIA,MAAMxL,eAAA,GAAkBgK,GAAA,CAAIhK,eAAJ,KAAwB,KAAhD;EACA,MAAMG,0BAAA,GACJ,OAAO6J,GAAA,CAAI7J,0BAAX,KAA0C,SAA1C,GACI6J,GAAA,CAAI7J,0BADR,GAEI,CAAC0I,iBAHP;EAIA,MAAM4C,oBAAA,GAAuB9Q,MAAA,CAAOC,SAAP,CAAiBoP,GAAA,CAAIyB,oBAArB,IACzBzB,GAAA,CAAIyB,oBADqB,GAEzB,CAAC,CAFL;EAGA,MAAMC,eAAA,GACJ,OAAO1B,GAAA,CAAI0B,eAAX,KAA+B,SAA/B,GAA2C1B,GAAA,CAAI0B,eAA/C,GAAiE7C,iBADnE;EAEA,MAAM8C,mBAAA,GAAsB3B,GAAA,CAAI2B,mBAAJ,KAA4B,IAAxD;EACA,MAAMC,SAAA,GAAY5B,GAAA,CAAI4B,SAAJ,KAAkB,IAApC;EACA,MAAMC,aAAA,GAAgB7B,GAAA,CAAI6B,aAAJ,IAAqBC,UAAA,CAAWC,QAAtD;EACA,MAAMC,YAAA,GAAehC,GAAA,CAAIgC,YAAJ,KAAqB,IAA1C;EACA,MAAMC,aAAA,GAAgBjC,GAAA,CAAIiC,aAAJ,KAAsB,IAA5C;EACA,MAAMC,gBAAA,GAAmBlC,GAAA,CAAIkC,gBAAJ,KAAyB,IAAlD;EACA,MAAMC,MAAA,GAASnC,GAAA,CAAImC,MAAJ,KAAe,IAA9B;EAGA,MAAMlQ,MAAA,GAASyO,cAAA,GAAiBA,cAAA,CAAezO,MAAhC,GAAyC+N,GAAA,CAAI/N,MAAJ,IAAcmQ,GAAtE;EACA,MAAMC,cAAA,GACJ,OAAOrC,GAAA,CAAIqC,cAAX,KAA8B,SAA9B,GACIrC,GAAA,CAAIqC,cADR,GAEI,CAACxD,iBAAD,IAAa,CAAC6C,eAHpB;EAIA,MAAMY,cAAA,GACJ,OAAOtC,GAAA,CAAIsC,cAAX,KAA8B,SAA9B,GACItC,GAAA,CAAIsC,cADR,GAGKnB,iBAAA,KAAsBjC,mCAAtB,IACCmC,uBAAA,KAA4B7B,yCAD7B,IAEC,IAAAM,8BAAA,EAAgBmB,OAAhB,EAAyBc,QAAA,CAASQ,OAAlC,CAFD,IAGC,IAAAzC,8BAAA,EAAgBsB,mBAAhB,EAAqCW,QAAA,CAASQ,OAA9C,CAPR;EAQA,MAAMC,aAAA,GACJxC,GAAA,CAAIwC,aAAJ,IAAqB,IAAI5D,oBAAJ,CAAyB;IAAEiD;EAAF,CAAzB,CADvB;EAEA,MAAMY,aAAA,GACJzC,GAAA,CAAIyC,aAAJ,IAAqB,IAAItD,oBAAJ,CAAyB;IAAEiB,KAAF;IAASyB;EAAT,CAAzB,CADvB;EAIA,MAAMa,YAAA,GAGA,IAHN;EAMA,IAAAjS,uBAAA,EAAkBD,SAAlB;EAIA,MAAMmS,gBAAA,GAAmB;IACvBH,aADuB;IAEvBC;EAFuB,CAAzB;EAIA,IAAI,CAACH,cAAL,EAAqB;IACnBK,gBAAA,CAAiBC,iBAAjB,GAAqC,IAAIzB,iBAAJ,CAAsB;MACzDxP,OAAA,EAASsP,OADgD;MAEzD4B,YAAA,EAAc3B;IAF2C,CAAtB,CAArC;IAIAyB,gBAAA,CAAiBG,uBAAjB,GAA2C,IAAIzB,uBAAJ,CAA4B;MACrE1P,OAAA,EAASyP;IAD4D,CAA5B,CAA3C;EALmB;EAUrB,IAAI,CAACP,MAAL,EAAa;IACX,MAAMkC,YAAA,GAAe;MACnBvS,SADmB;MAEnBwS,IAAA,EAAMC,mCAAA,CAAoBC;IAFP,CAArB;IAMArC,MAAA,GAASkC,YAAA,CAAaC,IAAb,GACLlC,SAAA,CAAUqC,QAAV,CAAmBJ,YAAnB,CADK,GAEL,IAAIjC,SAAJ,CAAciC,YAAd,CAFJ;IAGA7C,IAAA,CAAKkD,OAAL,GAAevC,MAAf;EAVW;EAab,MAAMwC,cAAA,GAAiB;IACrBjD,KADqB;IAErBkD,UAAA,EAEM,SAJe;IAMrBpG,IANqB;IAOrBuD,QAPqB;IAQrByB,gBARqB;IASrBtB,cATqB;IAUrB3O,MAVqB;IAWrB8O,UAXqB;IAYrBa,SAZqB;IAarB2B,gBAAA,EAAkB;MAChB/B,YADgB;MAEhBE,eAFgB;MAGhBJ,YAHgB;MAIhBtL,eAJgB;MAKhBG,0BALgB;MAMhBsL,oBANgB;MAOhBE,mBAPgB;MAQhBU,cARgB;MAShBpB,OAAA,EAASqB,cAAA,GAAiBrB,OAAjB,GAA2B,IATpB;MAUhBG,mBAAA,EAAqBkB,cAAA,GAAiBlB,mBAAjB,GAAuC;IAV5C;EAbG,CAAvB;EA0BA,MAAMoC,eAAA,GAAkB;IACtBlC,YADsB;IAEtBtL,eAFsB;IAGtB0L,eAHsB;IAItBC,mBAJsB;IAKtBC,SALsB;IAMtBC,aANsB;IAOtBK,gBAPsB;IAQtBC,MARsB;IAStBO;EATsB,CAAxB;EAYA7B,MAAA,CAAO/D,OAAP,CACG2G,IADH,CACQ,YAAY;IAChB,IAAIvD,IAAA,CAAKwD,SAAT,EAAoB;MAClB,MAAM,IAAItS,KAAJ,CAAU,iBAAV,CAAN;IADkB;IAIpB,MAAMuS,eAAA,GAAkBC,cAAA,CAAe/C,MAAf,EAAuBwC,cAAvB,CAAxB;IACA,MAAMQ,oBAAA,GAAuB,IAAI9G,OAAJ,CAAY,UAAUC,OAAV,EAAmB;MAC1D,IAAI8G,aAAJ;MACA,IAAIpD,cAAJ,EAAoB;QAClBoD,aAAA,GAAgB,IAAIC,wCAAJ,CACd;UACE9R,MADF;UAEE+R,WAAA,EAAatD,cAAA,CAAesD,WAF9B;UAGEC,eAAA,EAAiBvD,cAAA,CAAeuD,eAHlC;UAIEC,0BAAA,EACExD,cAAA,CAAewD,0BALnB;UAMElC,YANF;UAOEC;QAPF,CADc,EAUdvB,cAVc,CAAhB;MADkB,CAApB,MAaO,IAAI,CAACxD,IAAL,EAAW;QAIhB4G,aAAA,GAAgBrE,sBAAA,CAAuB;UACrCjO,GADqC;UAErCS,MAFqC;UAGrCsO,WAHqC;UAIrCC,eAJqC;UAKrCI,cALqC;UAMrCoB,YANqC;UAOrCC;QAPqC,CAAvB,CAAhB;MAJgB;MAclBjF,OAAA,CAAQ8G,aAAR;IA7B0D,CAA/B,CAA7B;IAgCA,OAAO/G,OAAA,CAAQoH,GAAR,CAAY,CAACR,eAAD,EAAkBE,oBAAlB,CAAZ,EAAqDJ,IAArD,CACL,UAAU,CAACW,QAAD,EAAWN,aAAX,CAAV,EAAqC;MACnC,IAAI5D,IAAA,CAAKwD,SAAT,EAAoB;QAClB,MAAM,IAAItS,KAAJ,CAAU,iBAAV,CAAN;MADkB;MAIpB,MAAMiT,cAAA,GAAiB,IAAIC,+BAAJ,CACrBlE,KADqB,EAErBgE,QAFqB,EAGrBvD,MAAA,CAAOmC,IAHc,CAAvB;MAKA,MAAMuB,SAAA,GAAY,IAAIC,eAAJ,CAChBH,cADgB,EAEhBnE,IAFgB,EAGhB4D,aAHgB,EAIhBN,eAJgB,EAKhBb,gBALgB,CAAlB;MAOAzC,IAAA,CAAKuE,UAAL,GAAkBF,SAAlB;MACAF,cAAA,CAAeK,IAAf,CAAoB,OAApB,EAA6B,IAA7B;IAlBmC,CADhC,CAAP;EAtCgB,CADpB,EA8DGC,KA9DH,CA8DSzE,IAAA,CAAK0E,WAAL,CAAiB3H,MA9D1B;EAgEA,OAAOiD,IAAP;AAtOwB;AAkP1B,eAAe0D,cAAfA,CAA8B/C,MAA9B,EAAsCgE,MAAtC,EAA8C;EAC5C,IAAIhE,MAAA,CAAO6C,SAAX,EAAsB;IACpB,MAAM,IAAItS,KAAJ,CAAU,sBAAV,CAAN;EADoB;EAGtB,MAAMgT,QAAA,GAAW,MAAMvD,MAAA,CAAOwD,cAAP,CAAsBS,eAAtB,CACrB,eADqB,EAErBD,MAFqB,EAGrBA,MAAA,CAAO3H,IAAP,GAAc,CAAC2H,MAAA,CAAO3H,IAAP,CAAYnH,MAAb,CAAd,GAAqC,IAHhB,CAAvB;EAMA,IAAI8K,MAAA,CAAO6C,SAAX,EAAsB;IACpB,MAAM,IAAItS,KAAJ,CAAU,sBAAV,CAAN;EADoB;EAGtB,OAAOgT,QAAP;AAb4C;AAgB9C,SAAS/D,UAATA,CAAoB0E,GAApB,EAAyB;EAIvB,IAAIA,GAAA,YAAe1S,GAAnB,EAAwB;IACtB,OAAO0S,GAAA,CAAIC,IAAX;EADsB;EAGxB,IAAI;IAEF,OAAO,IAAI3S,GAAJ,CAAQ0S,GAAR,EAAaE,MAAA,CAAOC,QAApB,EAA8BF,IAArC;EAFE,CAAJ,CAGE,MAAM;IACN,IAGEnG,iBAFA,IAGA,OAAOkG,GAAP,KAAe,QAJjB,EAKE;MACA,OAAOA,GAAP;IADA;EANI;EAUR,MAAM,IAAI3T,KAAJ,CACJ,2BACE,8DAFE,CAAN;AApBuB;AA0BzB,SAASkP,WAATA,CAAqByE,GAArB,EAA0B;EAExB,IAGElG,iBAFA,IAGA,OAAOsG,MAAP,KAAkB,WAHlB,IAIAJ,GAAA,YAAeI,MALjB,EAME;IACA,MAAM,IAAI/T,KAAJ,CACJ,mEADI,CAAN;EADA;EAKF,IAAI2T,GAAA,YAAe7P,UAAf,IAA6B6P,GAAA,CAAIhJ,UAAJ,KAAmBgJ,GAAA,CAAIhP,MAAJ,CAAWgG,UAA/D,EAA2E;IAIzE,OAAOgJ,GAAP;EAJyE;EAM3E,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B,OAAO,IAAA/P,mBAAA,EAAc+P,GAAd,CAAP;EAD2B;EAG7B,IAAK,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACK,KAAA,CAAML,GAAA,EAAK9S,MAAX,CAA7B,IAAoD,IAAA4J,mBAAA,EAAckJ,GAAd,CAAxD,EAA4E;IAC1E,OAAO,IAAI7P,UAAJ,CAAe6P,GAAf,CAAP;EAD0E;EAG5E,MAAM,IAAI3T,KAAJ,CACJ,iDACE,gEAFE,CAAN;AAzBwB;AA0C1B,MAAM+O,sBAAN,CAA6B;EAC3B,OAAO,CAAAC,KAAP,GAAgB,CAAhB;EAEAhN,YAAA,EAAc;IACZ,KAAKwR,WAAL,GAAmB,IAAIhI,uBAAJ,EAAnB;IACA,KAAK6H,UAAL,GAAkB,IAAlB;IACA,KAAKrB,OAAL,GAAe,IAAf;IAMA,KAAKhD,KAAL,GAAc,IAAGD,sBAAA,CAAuB,CAAAC,KAAvB,EAAJ,EAAb;IAMA,KAAKsD,SAAL,GAAiB,KAAjB;IAQA,KAAK2B,UAAL,GAAkB,IAAlB;IAQA,KAAKC,UAAL,GAAkB,IAAlB;EA/BY;EAsCd,IAAIxI,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK8H,WAAL,CAAiB9H,OAAxB;EADY;EASd,MAAMyI,OAANA,CAAA,EAAgB;IACd,KAAK7B,SAAL,GAAiB,IAAjB;IACA,MAAM,KAAKe,UAAL,EAAiBc,OAAjB,EAAN;IAEA,KAAKd,UAAL,GAAkB,IAAlB;IACA,IAAI,KAAKrB,OAAT,EAAkB;MAChB,KAAKA,OAAL,CAAamC,OAAb;MACA,KAAKnC,OAAL,GAAe,IAAf;IAFgB;EALJ;AAlDW;AAxkB7BzhB,8BAAA,GAAAwe,sBAAA;AA6oBA,MAAMQ,qBAAN,CAA4B;EAO1BvN,YACEnB,MADF,EAEE+R,WAFF,EAGEC,eAAA,GAAkB,KAHpB,EAIEC,0BAAA,GAA6B,IAJ/B,EAKE;IACA,KAAKjS,MAAL,GAAcA,MAAd;IACA,KAAK+R,WAAL,GAAmBA,WAAnB;IACA,KAAKC,eAAL,GAAuBA,eAAvB;IACA,KAAKC,0BAAL,GAAkCA,0BAAlC;IAEA,KAAKsB,eAAL,GAAuB,EAAvB;IACA,KAAKC,kBAAL,GAA0B,EAA1B;IACA,KAAKC,yBAAL,GAAiC,EAAjC;IACA,KAAKC,yBAAL,GAAiC,EAAjC;IACA,KAAKC,gBAAL,GAAwB,IAAIhJ,uBAAJ,EAAxB;EAVA;EAgBFiJ,iBAAiBC,QAAjB,EAA2B;IACzB,KAAKN,eAAL,CAAqB1Q,IAArB,CAA0BgR,QAA1B;EADyB;EAO3BC,oBAAoBD,QAApB,EAA8B;IAC5B,KAAKL,kBAAL,CAAwB3Q,IAAxB,CAA6BgR,QAA7B;EAD4B;EAO9BE,2BAA2BF,QAA3B,EAAqC;IACnC,KAAKJ,yBAAL,CAA+B5Q,IAA/B,CAAoCgR,QAApC;EADmC;EAOrCG,2BAA2BH,QAA3B,EAAqC;IACnC,KAAKH,yBAAL,CAA+B7Q,IAA/B,CAAoCgR,QAApC;EADmC;EAQrCI,YAAYC,KAAZ,EAAmBvR,KAAnB,EAA0B;IACxB,WAAWkR,QAAX,IAAuB,KAAKN,eAA5B,EAA6C;MAC3CM,QAAA,CAASK,KAAT,EAAgBvR,KAAhB;IAD2C;EADrB;EAU1BwR,eAAeC,MAAf,EAAuBC,KAAvB,EAA8B;IAC5B,KAAKV,gBAAL,CAAsB9I,OAAtB,CAA8B2G,IAA9B,CAAmC,MAAM;MACvC,WAAWqC,QAAX,IAAuB,KAAKL,kBAA5B,EAAgD;QAC9CK,QAAA,CAASO,MAAT,EAAiBC,KAAjB;MAD8C;IADT,CAAzC;EAD4B;EAW9BC,sBAAsB3R,KAAtB,EAA6B;IAC3B,KAAKgR,gBAAL,CAAsB9I,OAAtB,CAA8B2G,IAA9B,CAAmC,MAAM;MACvC,WAAWqC,QAAX,IAAuB,KAAKJ,yBAA5B,EAAuD;QACrDI,QAAA,CAASlR,KAAT;MADqD;IADhB,CAAzC;EAD2B;EAQ7B4R,sBAAA,EAAwB;IACtB,KAAKZ,gBAAL,CAAsB9I,OAAtB,CAA8B2G,IAA9B,CAAmC,MAAM;MACvC,WAAWqC,QAAX,IAAuB,KAAKH,yBAA5B,EAAuD;QACrDG,QAAA;MADqD;IADhB,CAAzC;EADsB;EAQxBW,eAAA,EAAiB;IACf,KAAKb,gBAAL,CAAsB5I,OAAtB;EADe;EAQjB0J,iBAAiBP,KAAjB,EAAwBQ,GAAxB,EAA6B;IAC3B,IAAAxV,iBAAA,EAAY,wDAAZ;EAD2B;EAI7ByV,MAAA,EAAQ;AA1GkB;AA7oB5BjlB,6BAAA,GAAAgf,qBAAA;AA6vBA,MAAMkG,gBAAN,CAAuB;EACrBzT,YAAY0T,OAAZ,EAAqBvC,SAArB,EAAgC;IAC9B,KAAKwC,QAAL,GAAgBD,OAAhB;IACA,KAAKrC,UAAL,GAAkBF,SAAlB;EAF8B;EA2BhC,IAAIyC,iBAAJA,CAAA,EAAwB;IACtB,OAAO,KAAKvC,UAAL,CAAgBuC,iBAAvB;EADsB;EAOxB,IAAIvE,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKgC,UAAL,CAAgBhC,aAAvB;EADkB;EAOpB,IAAIwE,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKF,QAAL,CAAcE,QAArB;EADa;EAUf,IAAIC,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKH,QAAL,CAAcG,YAArB;EADiB;EAOnB,IAAIC,SAAJA,CAAA,EAAgB;IACd,OAAO,IAAA7U,YAAA,EAAO,IAAP,EAAa,WAAb,EAA0B,CAAC,CAAC,KAAKmS,UAAL,CAAgB2C,WAA5C,CAAP;EADc;EAUhB,IAAIC,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAK5C,UAAL,CAAgB2C,WAAvB;EADe;EASjBE,QAAQC,UAAR,EAAoB;IAClB,OAAO,KAAK9C,UAAL,CAAgB6C,OAAhB,CAAwBC,UAAxB,CAAP;EADkB;EASpBC,aAAaC,GAAb,EAAkB;IAChB,OAAO,KAAKhD,UAAL,CAAgB+C,YAAhB,CAA6BC,GAA7B,CAAP;EADgB;EAUlBC,gBAAA,EAAkB;IAChB,OAAO,KAAKjD,UAAL,CAAgBiD,eAAhB,EAAP;EADgB;EAUlBC,eAAeC,EAAf,EAAmB;IACjB,OAAO,KAAKnD,UAAL,CAAgBkD,cAAhB,CAA+BC,EAA/B,CAAP;EADiB;EASnBC,cAAA,EAAgB;IACd,OAAO,KAAKpD,UAAL,CAAgBoD,aAAhB,EAAP;EADc;EAQhBC,cAAA,EAAgB;IACd,OAAO,KAAKrD,UAAL,CAAgBqD,aAAhB,EAAP;EADc;EAQhBC,YAAA,EAAc;IACZ,OAAO,KAAKtD,UAAL,CAAgBsD,WAAhB,EAAP;EADY;EASdC,qBAAA,EAAuB;IACrB,OAAO,KAAKvD,UAAL,CAAgBuD,oBAAhB,EAAP;EADqB;EASvBC,cAAA,EAAgB;IACd,OAAO,KAAKxD,UAAL,CAAgBwD,aAAhB,EAAP;EADc;EAQhBC,eAAA,EAAiB;IACf,OAAO,KAAKzD,UAAL,CAAgByD,cAAhB,EAAP;EADe;EASjBC,cAAA,EAAgB;IACd,OAAO,KAAK1D,UAAL,CAAgB0D,aAAhB,EAAP;EADc;EAWhBC,aAAA,EAAe;IACb,OAAO,KAAK3D,UAAL,CAAgB4D,eAAhB,EAAP;EADa;EAuBfC,WAAA,EAAa;IACX,OAAO,KAAK7D,UAAL,CAAgB6D,UAAhB,EAAP;EADW;EASbC,yBAAA,EAA2B;IACzB,OAAO,KAAK9D,UAAL,CAAgB8D,wBAAhB,EAAP;EADyB;EAS3BC,eAAA,EAAiB;IACf,OAAO,KAAK/D,UAAL,CAAgB+D,cAAhB,EAAP;EADe;EAWjBC,YAAA,EAAc;IACZ,OAAO,KAAKhE,UAAL,CAAgBgE,WAAhB,EAAP;EADY;EAiBdC,YAAA,EAAc;IACZ,OAAO,KAAKjE,UAAL,CAAgBiE,WAAhB,EAAP;EADY;EAQdC,QAAA,EAAU;IACR,OAAO,KAAKlE,UAAL,CAAgBkE,OAAhB,EAAP;EADQ;EAQVC,aAAA,EAAe;IACb,OAAO,KAAKnE,UAAL,CAAgBmE,YAAhB,EAAP;EADa;EASfC,gBAAA,EAAkB;IAChB,OAAO,KAAKpE,UAAL,CAAgBqE,sBAAhB,CAAuChM,OAA9C;EADgB;EAgBlBiM,QAAQC,eAAA,GAAkB,KAA1B,EAAiC;IAC/B,OAAO,KAAKvE,UAAL,CAAgBwE,YAAhB,CAA6BD,eAAA,IAAmB,KAAK7B,SAArD,CAAP;EAD+B;EAOjC5B,QAAA,EAAU;IACR,OAAO,KAAK2D,WAAL,CAAiB3D,OAAjB,EAAP;EADQ;EAQV,IAAI4D,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK1E,UAAL,CAAgB0E,aAAvB;EADkB;EAOpB,IAAID,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAKzE,UAAL,CAAgByE,WAAvB;EADgB;EASlBE,gBAAA,EAAkB;IAChB,OAAO,KAAK3E,UAAL,CAAgB2E,eAAhB,EAAP;EADgB;EAQlBC,aAAA,EAAe;IACb,OAAO,KAAK5E,UAAL,CAAgB4E,YAAhB,EAAP;EADa;EASfC,uBAAA,EAAyB;IACvB,OAAO,KAAK7E,UAAL,CAAgB6E,sBAAhB,EAAP;EADuB;AAhVJ;AA7vBvB3nB,wBAAA,GAAAklB,gBAAA;AAmwCA,MAAM0C,YAAN,CAAmB;EACjB,CAAAC,qBAAA,GAAyB,IAAzB;EAEA,CAAAC,cAAA,GAAkB,KAAlB;EAEArW,YAAYsW,SAAZ,EAAuBC,QAAvB,EAAiCpF,SAAjC,EAA4CpC,MAAA,GAAS,KAArD,EAA4D;IAC1D,KAAKyH,UAAL,GAAkBF,SAAlB;IACA,KAAKG,SAAL,GAAiBF,QAAjB;IACA,KAAKlF,UAAL,GAAkBF,SAAlB;IACA,KAAKuF,MAAL,GAAc3H,MAAA,GAAS,IAAI4H,wBAAJ,EAAT,GAA2B,IAAzC;IACA,KAAKC,OAAL,GAAe7H,MAAf;IAEA,KAAK8H,UAAL,GAAkB1F,SAAA,CAAU0F,UAA5B;IACA,KAAKC,IAAL,GAAY,IAAIC,UAAJ,EAAZ;IAEA,KAAKC,wBAAL,GAAgC,KAAhC;IACA,KAAKC,aAAL,GAAqB,IAAI9M,GAAJ,EAArB;IACA,KAAKmG,SAAL,GAAiB,KAAjB;EAZ0D;EAkB5D,IAAI6D,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKqC,UAAL,GAAkB,CAAzB;EADe;EAOjB,IAAIU,MAAJA,CAAA,EAAa;IACX,OAAO,KAAKT,SAAL,CAAeS,MAAtB;EADW;EAOb,IAAI7C,GAAJA,CAAA,EAAU;IACR,OAAO,KAAKoC,SAAL,CAAepC,GAAtB;EADQ;EAOV,IAAI8C,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKV,SAAL,CAAeU,QAAtB;EADa;EAQf,IAAIC,IAAJA,CAAA,EAAW;IACT,OAAO,KAAKX,SAAL,CAAeW,IAAtB;EADS;EASXC,YAAY;IACVC,KADU;IAEVC,QAAA,GAAW,KAAKL,MAFN;IAGVM,OAAA,GAAU,CAHA;IAIVC,OAAA,GAAU,CAJA;IAKVC,QAAA,GAAW;EALD,IAMR,EANJ,EAMQ;IACN,OAAO,IAAIC,2BAAJ,CAAiB;MACtBC,OAAA,EAAS,KAAKR,IADQ;MAEtBE,KAFsB;MAGtBC,QAHsB;MAItBC,OAJsB;MAKtBC,OALsB;MAMtBC;IANsB,CAAjB,CAAP;EADM;EAgBRG,eAAe;IAAEC,MAAA,GAAS;EAAX,IAAyB,EAAxC,EAA4C;IAC1C,MAAMC,UAAA,GAAa,KAAK1G,UAAL,CAAgB2G,kBAAhB,CAAmCF,MAAnC,CAAnB;IAEA,OAAO,KAAKzG,UAAL,CAAgBwG,cAAhB,CACL,KAAKrB,UADA,EAELuB,UAAA,CAAWE,eAFN,CAAP;EAH0C;EAa5CjD,aAAA,EAAe;IACb,OAAO,KAAK3D,UAAL,CAAgB6G,gBAAhB,CAAiC,KAAK1B,UAAtC,CAAP;EADa;EAOf,IAAInH,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKgC,UAAL,CAAgBhC,aAAvB;EADkB;EAOpB,IAAI0E,SAAJA,CAAA,EAAgB;IACd,OAAO,IAAA7U,YAAA,EAAO,IAAP,EAAa,WAAb,EAA0B,CAAC,CAAC,KAAKmS,UAAL,CAAgB2C,WAA5C,CAAP;EADc;EAUhB,MAAMmE,MAANA,CAAA,EAAe;IACb,OAAO,KAAK9G,UAAL,CAAgB2C,WAAhB,EAA6BoE,QAA7B,CAAsC,KAAK5B,UAA3C,KAA0D,IAAjE;EADa;EAWf6B,OAAO;IACLC,aADK;IAELC,QAFK;IAGLT,MAAA,GAAS,SAHJ;IAILU,cAAA,GAAiBlpB,oBAAA,CAAeE,MAJ3B;IAKL4I,SAAA,GAAY,IALP;IAMLqgB,UAAA,GAAa,IANR;IAOLC,4BAAA,GAA+B,IAP1B;IAQLC,mBAAA,GAAsB,IARjB;IASLC,UAAA,GAAa,IATR;IAULC,sBAAA,GAAyB;EAVpB,CAAP,EAWG;IACD,KAAKnC,MAAL,EAAaoC,IAAb,CAAkB,SAAlB;IAEA,MAAMf,UAAA,GAAa,KAAK1G,UAAL,CAAgB2G,kBAAhB,CACjBF,MADiB,EAEjBU,cAFiB,EAGjBK,sBAHiB,CAAnB;IAOA,KAAK,CAAAxC,cAAL,GAAuB,KAAvB;IAEA,KAAK,CAAA0C,mBAAL;IAEA,IAAI,CAACL,4BAAL,EAAmC;MACjCA,4BAAA,GAA+B,KAAKrH,UAAL,CAAgB8D,wBAAhB,EAA/B;IADiC;IAInC,IAAI6D,WAAA,GAAc,KAAK/B,aAAL,CAAmB1M,GAAnB,CAAuBwN,UAAA,CAAWkB,QAAlC,CAAlB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChBA,WAAA,GAAczZ,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAd;MACA,KAAK4U,aAAL,CAAmBiC,GAAnB,CAAuBnB,UAAA,CAAWkB,QAAlC,EAA4CD,WAA5C;IAFgB;IAMlB,IAAIA,WAAA,CAAYG,yBAAhB,EAA2C;MACzCC,YAAA,CAAaJ,WAAA,CAAYG,yBAAzB;MACAH,WAAA,CAAYG,yBAAZ,GAAwC,IAAxC;IAFyC;IAK3C,MAAME,WAAA,GAAc,CAAC,EACnBtB,UAAA,CAAWE,eAAX,GAA6BppB,yBAAA,CAAoBG,KAAjD,CADF;IAMA,IAAI,CAACgqB,WAAA,CAAYM,sBAAjB,EAAyC;MACvCN,WAAA,CAAYM,sBAAZ,GAAqC,IAAI9P,uBAAJ,EAArC;MACAwP,WAAA,CAAYO,YAAZ,GAA2B;QACzBC,OAAA,EAAS,EADgB;QAEzBC,SAAA,EAAW,EAFc;QAGzBC,SAAA,EAAW,KAHc;QAIzBC,cAAA,EAAgB;MAJS,CAA3B;MAOA,KAAKjD,MAAL,EAAaoC,IAAb,CAAkB,cAAlB;MACA,KAAKc,iBAAL,CAAuB7B,UAAvB;IAVuC;IAazC,MAAM8B,QAAA,GAAWC,KAAA,IAAS;MACxBd,WAAA,CAAYe,WAAZ,CAAwBC,MAAxB,CAA+BC,kBAA/B;MAIA,IAAI,KAAKjD,wBAAL,IAAiCqC,WAArC,EAAkD;QAChD,KAAK,CAAAhD,cAAL,GAAuB,IAAvB;MADgD;MAGlD,KAAK,CAAA6D,UAAL,CAAiC,CAACb,WAAlC;MAEA,IAAIS,KAAJ,EAAW;QACTG,kBAAA,CAAmBE,UAAnB,CAA8BtQ,MAA9B,CAAqCiQ,KAArC;QAEA,KAAKM,kBAAL,CAAwB;UACtBpB,WADsB;UAEtBjP,MAAA,EAAQ+P,KAAA,YAAiB9b,KAAjB,GAAyB8b,KAAzB,GAAiC,IAAI9b,KAAJ,CAAU8b,KAAV;QAFnB,CAAxB;MAHS,CAAX,MAOO;QACLG,kBAAA,CAAmBE,UAAnB,CAA8BvQ,OAA9B;MADK;MAIP,KAAK8M,MAAL,EAAa2D,OAAb,CAAqB,WAArB;MACA,KAAK3D,MAAL,EAAa2D,OAAb,CAAqB,SAArB;IAtBwB,CAA1B;IAyBA,MAAMJ,kBAAA,GAAqB,IAAIK,kBAAJ,CAAuB;MAChDC,QAAA,EAAUV,QADsC;MAGhDtN,MAAA,EAAQ;QACN+L,aADM;QAENC,QAFM;QAGNngB,SAHM;QAINqgB;MAJM,CAHwC;MAShD3B,IAAA,EAAM,KAAKA,IATqC;MAUhDD,UAAA,EAAY,KAAKA,UAV+B;MAWhD8B,mBAXgD;MAYhDY,YAAA,EAAcP,WAAA,CAAYO,YAZsB;MAahDjD,SAAA,EAAW,KAAKE,UAbgC;MAchDpH,aAAA,EAAe,KAAKiC,UAAL,CAAgBjC,aAdiB;MAehDC,aAAA,EAAe,KAAKgC,UAAL,CAAgBhC,aAfiB;MAgBhDmL,wBAAA,EAA0B,CAACnB,WAhBqB;MAiBhDtK,MAAA,EAAQ,KAAK6H,OAjBmC;MAkBhDgC;IAlBgD,CAAvB,CAA3B;IAqBC,CAAAI,WAAA,CAAYe,WAAZ,KAA4B,IAAIU,GAAJ,EAA5B,EAAuCC,GAAxC,CAA4CT,kBAA5C;IACA,MAAMU,UAAA,GAAaV,kBAAA,CAAmBnN,IAAtC;IAEAnD,OAAA,CAAQoH,GAAR,CAAY,CACViI,WAAA,CAAYM,sBAAZ,CAAmC5P,OADzB,EAEVgP,4BAFU,CAAZ,EAIGrI,IAJH,CAIQ,CAAC,CAACuK,YAAD,EAAeC,qBAAf,CAAD,KAA2C;MAC/C,IAAI,KAAKvK,SAAT,EAAoB;QAClBuJ,QAAA;QACA;MAFkB;MAIpB,KAAKnD,MAAL,EAAaoC,IAAb,CAAkB,WAAlB;MAEAmB,kBAAA,CAAmBa,kBAAnB,CAAsC;QACpCF,YADoC;QAEpCC;MAFoC,CAAtC;MAIAZ,kBAAA,CAAmBc,mBAAnB;IAX+C,CAJnD,EAiBGxJ,KAjBH,CAiBSsI,QAjBT;IAmBA,OAAOc,UAAP;EArHC;EA8HHK,gBAAgB;IACdlD,MAAA,GAAS,SADK;IAEdU,cAAA,GAAiBlpB,oBAAA,CAAeE,MAFlB;IAGdqpB,sBAAA,GAAyB;EAHX,IAIZ,EAJJ,EAIQ;IAIN,SAASkC,mBAATA,CAAA,EAA+B;MAC7B,IAAI/B,WAAA,CAAYO,YAAZ,CAAyBG,SAA7B,EAAwC;QACtCV,WAAA,CAAYiC,oBAAZ,CAAiCrR,OAAjC,CAAyCoP,WAAA,CAAYO,YAArD;QAEAP,WAAA,CAAYe,WAAZ,CAAwBC,MAAxB,CAA+BkB,UAA/B;MAHsC;IADX;IAQ/B,MAAMnD,UAAA,GAAa,KAAK1G,UAAL,CAAgB2G,kBAAhB,CACjBF,MADiB,EAEjBU,cAFiB,EAGjBK,sBAHiB,EAIA,IAJA,CAAnB;IAMA,IAAIG,WAAA,GAAc,KAAK/B,aAAL,CAAmB1M,GAAnB,CAAuBwN,UAAA,CAAWkB,QAAlC,CAAlB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChBA,WAAA,GAAczZ,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAd;MACA,KAAK4U,aAAL,CAAmBiC,GAAnB,CAAuBnB,UAAA,CAAWkB,QAAlC,EAA4CD,WAA5C;IAFgB;IAIlB,IAAIkC,UAAJ;IAEA,IAAI,CAAClC,WAAA,CAAYiC,oBAAjB,EAAuC;MACrCC,UAAA,GAAa3b,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAb;MACA6Y,UAAA,CAAWH,mBAAX,GAAiCA,mBAAjC;MACA/B,WAAA,CAAYiC,oBAAZ,GAAmC,IAAIzR,uBAAJ,EAAnC;MACC,CAAAwP,WAAA,CAAYe,WAAZ,KAA4B,IAAIU,GAAJ,EAA5B,EAAuCC,GAAxC,CAA4CQ,UAA5C;MACAlC,WAAA,CAAYO,YAAZ,GAA2B;QACzBC,OAAA,EAAS,EADgB;QAEzBC,SAAA,EAAW,EAFc;QAGzBC,SAAA,EAAW,KAHc;QAIzBC,cAAA,EAAgB;MAJS,CAA3B;MAOA,KAAKjD,MAAL,EAAaoC,IAAb,CAAkB,cAAlB;MACA,KAAKc,iBAAL,CAAuB7B,UAAvB;IAbqC;IAevC,OAAOiB,WAAA,CAAYiC,oBAAZ,CAAiCvR,OAAxC;EAxCM;EAkDRyR,kBAAkB;IAChBC,oBAAA,GAAuB,KADP;IAEhBC,oBAAA,GAAuB;EAFP,IAGd,EAHJ,EAGQ;IACN,MAAMC,uBAAA,GAA0B,GAAhC;IAEA,OAAO,KAAKjK,UAAL,CAAgBJ,cAAhB,CAA+BsK,cAA/B,CACL,gBADK,EAEL;MACEjF,SAAA,EAAW,KAAKE,UADlB;MAEE4E,oBAAA,EAAsBA,oBAAA,KAAyB,IAFjD;MAGEC,oBAAA,EAAsBA,oBAAA,KAAyB;IAHjD,CAFK,EAOL;MACEG,aAAA,EAAeF,uBADjB;MAEEG,KAAKC,WAAL,EAAkB;QAChB,OAAOA,WAAA,CAAYC,KAAZ,CAAkB9c,MAAzB;MADgB;IAFpB,CAPK,CAAP;EAHM;EA2BR+c,eAAerP,MAAA,GAAS,EAAxB,EAA4B;IAC1B,IAAI,KAAK8E,UAAL,CAAgB2C,WAApB,EAAiC;MAG/B,OAAO,KAAKmE,MAAL,GAAc9H,IAAd,CAAmBwL,GAAA,IAAO;QAC/B,OAAOC,iBAAA,CAAQJ,WAAR,CAAoBG,GAApB,CAAP;MAD+B,CAA1B,CAAP;IAH+B;IAOjC,MAAME,cAAA,GAAiB,KAAKZ,iBAAL,CAAuB5O,MAAvB,CAAvB;IAEA,OAAO,IAAI5C,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;MAC5C,SAASmS,IAATA,CAAA,EAAgB;QACdC,MAAA,CAAOC,IAAP,GAAc7L,IAAd,CAAmB,UAAU;UAAEhR,KAAF;UAAS8c;QAAT,CAAV,EAA2B;UAC5C,IAAIA,IAAJ,EAAU;YACRvS,OAAA,CAAQ8R,WAAR;YACA;UAFQ;UAIVnc,MAAA,CAAO6c,MAAP,CAAcV,WAAA,CAAYW,MAA1B,EAAkChd,KAAA,CAAMgd,MAAxC;UACAX,WAAA,CAAYC,KAAZ,CAAkBja,IAAlB,CAAuB,GAAGrC,KAAA,CAAMsc,KAAhC;UACAK,IAAA;QAP4C,CAA9C,EAQGnS,MARH;MADc;MAYhB,MAAMoS,MAAA,GAASF,cAAA,CAAeO,SAAf,EAAf;MACA,MAAMZ,WAAA,GAAc;QAClBC,KAAA,EAAO,EADW;QAElBU,MAAA,EAAQ9c,MAAA,CAAO8C,MAAP,CAAc,IAAd;MAFU,CAApB;MAIA2Z,IAAA;IAlB4C,CAAvC,CAAP;EAV0B;EAqC5BO,cAAA,EAAgB;IACd,OAAO,KAAKlL,UAAL,CAAgBkL,aAAhB,CAA8B,KAAK/F,UAAnC,CAAP;EADc;EAQhBgG,SAAA,EAAW;IACT,KAAKlM,SAAL,GAAiB,IAAjB;IAEA,MAAMmM,MAAA,GAAS,EAAf;IACA,WAAWzD,WAAX,IAA0B,KAAK/B,aAAL,CAAmByF,MAAnB,EAA1B,EAAuD;MACrD,KAAKtC,kBAAL,CAAwB;QACtBpB,WADsB;QAEtBjP,MAAA,EAAQ,IAAI/L,KAAJ,CAAU,qBAAV,CAFc;QAGtB2e,KAAA,EAAO;MAHe,CAAxB;MAMA,IAAI3D,WAAA,CAAYiC,oBAAhB,EAAsC;QAEpC;MAFoC;MAItC,WAAWhB,kBAAX,IAAiCjB,WAAA,CAAYe,WAA7C,EAA0D;QACxD0C,MAAA,CAAO/a,IAAP,CAAYuY,kBAAA,CAAmB2C,SAA/B;QACA3C,kBAAA,CAAmB4C,MAAnB;MAFwD;IAXL;IAgBvD,KAAK/F,IAAL,CAAUgG,KAAV;IACA,KAAK,CAAAzG,cAAL,GAAuB,KAAvB;IACA,KAAK,CAAA0C,mBAAL;IAEA,OAAOpP,OAAA,CAAQoH,GAAR,CAAY0L,MAAZ,CAAP;EAxBS;EAkCX9G,QAAQoH,UAAA,GAAa,KAArB,EAA4B;IAC1B,KAAK,CAAA1G,cAAL,GAAuB,IAAvB;IACA,MAAM2G,OAAA,GAAU,KAAK,CAAA9C,UAAL,CAAiC,KAAjC,CAAhB;IAEA,IAAI6C,UAAA,IAAcC,OAAlB,EAA2B;MACzB,KAAKtG,MAAL,KAAgB,IAAIC,wBAAJ,EAAhB;IADyB;IAG3B,OAAOqG,OAAP;EAP0B;EAiB5B,CAAA9C,WAAY+C,OAAA,GAAU,KAAtB,EAA6B;IAC3B,KAAK,CAAAlE,mBAAL;IAEA,IAAI,CAAC,KAAK,CAAA1C,cAAN,IAAyB,KAAK/F,SAAlC,EAA6C;MAC3C,OAAO,KAAP;IAD2C;IAG7C,IAAI2M,OAAJ,EAAa;MACX,KAAK,CAAA7G,qBAAL,GAA8B8G,UAAA,CAAW,MAAM;QAC7C,KAAK,CAAA9G,qBAAL,GAA8B,IAA9B;QACA,KAAK,CAAA8D,UAAL,CAAiC,KAAjC;MAF6C,CAAjB,EAG3B3O,uBAH2B,CAA9B;MAKA,OAAO,KAAP;IANW;IAQb,WAAW;MAAEwO,WAAF;MAAeR;IAAf,CAAX,IAA4C,KAAKtC,aAAL,CAAmByF,MAAnB,EAA5C,EAAyE;MACvE,IAAI3C,WAAA,CAAY0B,IAAZ,GAAmB,CAAnB,IAAwB,CAAClC,YAAA,CAAaG,SAA1C,EAAqD;QACnD,OAAO,KAAP;MADmD;IADkB;IAKzE,KAAKzC,aAAL,CAAmB6F,KAAnB;IACA,KAAKhG,IAAL,CAAUgG,KAAV;IACA,KAAK,CAAAzG,cAAL,GAAuB,KAAvB;IACA,OAAO,IAAP;EAtB2B;EAyB7B,CAAA0C,oBAAA,EAAuB;IACrB,IAAI,KAAK,CAAA3C,qBAAT,EAAiC;MAC/BgD,YAAA,CAAa,KAAK,CAAAhD,qBAAlB;MACA,KAAK,CAAAA,qBAAL,GAA8B,IAA9B;IAF+B;EADZ;EAUvB+G,iBAAiBvC,YAAjB,EAA+B3B,QAA/B,EAAyC;IACvC,MAAMD,WAAA,GAAc,KAAK/B,aAAL,CAAmB1M,GAAnB,CAAuB0O,QAAvB,CAApB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChB;IADgB;IAGlB,KAAKtC,MAAL,EAAa2D,OAAb,CAAqB,cAArB;IAIArB,WAAA,CAAYM,sBAAZ,EAAoC1P,OAApC,CAA4CgR,YAA5C;EATuC;EAezCwC,iBAAiBC,iBAAjB,EAAoCrE,WAApC,EAAiD;IAE/C,KAAK,IAAI5X,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKmV,iBAAA,CAAkBxe,MAAlC,EAA0CuC,CAAA,GAAI8G,EAAnD,EAAuD9G,CAAA,EAAvD,EAA4D;MAC1D4X,WAAA,CAAYO,YAAZ,CAAyBC,OAAzB,CAAiC9X,IAAjC,CAAsC2b,iBAAA,CAAkB7D,OAAlB,CAA0BpY,CAA1B,CAAtC;MACA4X,WAAA,CAAYO,YAAZ,CAAyBE,SAAzB,CAAmC/X,IAAnC,CAAwC2b,iBAAA,CAAkB5D,SAAlB,CAA4BrY,CAA5B,CAAxC;IAF0D;IAI5D4X,WAAA,CAAYO,YAAZ,CAAyBG,SAAzB,GAAqC2D,iBAAA,CAAkB3D,SAAvD;IACAV,WAAA,CAAYO,YAAZ,CAAyBI,cAAzB,GAA0C0D,iBAAA,CAAkB1D,cAA5D;IAGA,WAAWM,kBAAX,IAAiCjB,WAAA,CAAYe,WAA7C,EAA0D;MACxDE,kBAAA,CAAmBc,mBAAnB;IADwD;IAI1D,IAAIsC,iBAAA,CAAkB3D,SAAtB,EAAiC;MAC/B,KAAK,CAAAQ,UAAL,CAAiC,IAAjC;IAD+B;EAdc;EAsBjDN,kBAAkB;IAChB3B,eADgB;IAEhBgB,QAFgB;IAGhBqE;EAHgB,CAAlB,EAIG;IAOD,MAAM;MAAElb,GAAF;MAAOmb;IAAP,IAAqBD,6BAA3B;IAEA,MAAMvB,cAAA,GAAiB,KAAK1K,UAAL,CAAgBJ,cAAhB,CAA+BsK,cAA/B,CACrB,iBADqB,EAErB;MACEjF,SAAA,EAAW,KAAKE,UADlB;MAEEsB,MAAA,EAAQG,eAFV;MAGEgB,QAHF;MAIErF,iBAAA,EAAmBxR;IAJrB,CAFqB,EAQrBmb,SARqB,CAAvB;IAUA,MAAMtB,MAAA,GAASF,cAAA,CAAeO,SAAf,EAAf;IAEA,MAAMtD,WAAA,GAAc,KAAK/B,aAAL,CAAmB1M,GAAnB,CAAuB0O,QAAvB,CAApB;IACAD,WAAA,CAAYwE,YAAZ,GAA2BvB,MAA3B;IAEA,MAAMD,IAAA,GAAOA,CAAA,KAAM;MACjBC,MAAA,CAAOC,IAAP,GAAc7L,IAAd,CACE,CAAC;QAAEhR,KAAF;QAAS8c;MAAT,CAAD,KAAqB;QACnB,IAAIA,IAAJ,EAAU;UACRnD,WAAA,CAAYwE,YAAZ,GAA2B,IAA3B;UACA;QAFQ;QAIV,IAAI,KAAKnM,UAAL,CAAgBf,SAApB,EAA+B;UAC7B;QAD6B;QAG/B,KAAK8M,gBAAL,CAAsB/d,KAAtB,EAA6B2Z,WAA7B;QACAgD,IAAA;MATmB,CADvB,EAYEjS,MAAA,IAAU;QACRiP,WAAA,CAAYwE,YAAZ,GAA2B,IAA3B;QAEA,IAAI,KAAKnM,UAAL,CAAgBf,SAApB,EAA+B;UAC7B;QAD6B;QAG/B,IAAI0I,WAAA,CAAYO,YAAhB,EAA8B;UAE5BP,WAAA,CAAYO,YAAZ,CAAyBG,SAAzB,GAAqC,IAArC;UAEA,WAAWO,kBAAX,IAAiCjB,WAAA,CAAYe,WAA7C,EAA0D;YACxDE,kBAAA,CAAmBc,mBAAnB;UADwD;UAG1D,KAAK,CAAAb,UAAL,CAAiC,IAAjC;QAP4B;QAU9B,IAAIlB,WAAA,CAAYM,sBAAhB,EAAwC;UACtCN,WAAA,CAAYM,sBAAZ,CAAmCzP,MAAnC,CAA0CE,MAA1C;QADsC,CAAxC,MAEO,IAAIiP,WAAA,CAAYiC,oBAAhB,EAAsC;UAC3CjC,WAAA,CAAYiC,oBAAZ,CAAiCpR,MAAjC,CAAwCE,MAAxC;QAD2C,CAAtC,MAEA;UACL,MAAMA,MAAN;QADK;MApBC,CAZZ;IADiB,CAAnB;IAuCAiS,IAAA;EA/DC;EAqEH5B,mBAAmB;IAAEpB,WAAF;IAAejP,MAAf;IAAuB4S,KAAA,GAAQ;EAA/B,CAAnB,EAA2D;IAQzD,IAAI,CAAC3D,WAAA,CAAYwE,YAAjB,EAA+B;MAC7B;IAD6B;IAI/B,IAAIxE,WAAA,CAAYG,yBAAhB,EAA2C;MACzCC,YAAA,CAAaJ,WAAA,CAAYG,yBAAzB;MACAH,WAAA,CAAYG,yBAAZ,GAAwC,IAAxC;IAFyC;IAK3C,IAAI,CAACwD,KAAL,EAAY;MAGV,IAAI3D,WAAA,CAAYe,WAAZ,CAAwB0B,IAAxB,GAA+B,CAAnC,EAAsC;QACpC;MADoC;MAMtC,IAAI1R,MAAA,YAAkB0T,0CAAtB,EAAmD;QACjD,IAAIC,KAAA,GAAQpS,2BAAZ;QACA,IAAIvB,MAAA,CAAO4T,UAAP,GAAoB,CAApB,IAAyB5T,MAAA,CAAO4T,UAAP,GAA+B,IAA5D,EAAkE;UAEhED,KAAA,IAAS3T,MAAA,CAAO4T,UAAhB;QAFgE;QAKlE3E,WAAA,CAAYG,yBAAZ,GAAwC+D,UAAA,CAAW,MAAM;UACvDlE,WAAA,CAAYG,yBAAZ,GAAwC,IAAxC;UACA,KAAKiB,kBAAL,CAAwB;YAAEpB,WAAF;YAAejP,MAAf;YAAuB4S,KAAA,EAAO;UAA9B,CAAxB;QAFuD,CAAjB,EAGrCe,KAHqC,CAAxC;QAIA;MAXiD;IATzC;IAuBZ1E,WAAA,CAAYwE,YAAZ,CACGX,MADH,CACU,IAAIlc,oBAAJ,CAAmBoJ,MAAA,CAAOjK,OAA1B,CADV,EAEGyR,KAFH,CAES,MAAM,EAFf;IAKAyH,WAAA,CAAYwE,YAAZ,GAA2B,IAA3B;IAEA,IAAI,KAAKnM,UAAL,CAAgBf,SAApB,EAA+B;MAC7B;IAD6B;IAK/B,WAAW,CAACsN,WAAD,EAAcC,cAAd,CAAX,IAA4C,KAAK5G,aAAjD,EAAgE;MAC9D,IAAI4G,cAAA,KAAmB7E,WAAvB,EAAoC;QAClC,KAAK/B,aAAL,CAAmB+C,MAAnB,CAA0B4D,WAA1B;QACA;MAFkC;IAD0B;IAOhE,KAAKjI,OAAL;EA3DyD;EAkE3D,IAAImI,KAAJA,CAAA,EAAY;IACV,OAAO,KAAKpH,MAAZ;EADU;AAnpBK;AAnwCnBnoB,oBAAA,GAAA4nB,YAAA;AA25DA,MAAM4H,YAAN,CAAmB;EACjB,CAAAC,SAAA,GAAa,IAAIvD,GAAJ,EAAb;EAEA,CAAAwD,QAAA,GAAYtU,OAAA,CAAQC,OAAR,EAAZ;EAEAsU,YAAY/e,GAAZ,EAAiBgf,QAAjB,EAA2B;IACzB,MAAMC,KAAA,GAAQ;MACZtU,IAAA,EAAMuU,eAAA,CACJlf,GADI,EAIFgf,QAFF,GAGI;QAAEA;MAAF,CAHJ,GAII,IANA;IADM,CAAd;IAWA,KAAK,CAAAF,QAAL,CAAe5N,IAAf,CAAoB,MAAM;MACxB,WAAWqC,QAAX,IAAuB,KAAK,CAAAsL,SAA5B,EAAwC;QACtCtL,QAAA,CAAS4L,IAAT,CAAc,IAAd,EAAoBF,KAApB;MADsC;IADhB,CAA1B;EAZyB;EAmB3BG,iBAAiBxe,IAAjB,EAAuB2S,QAAvB,EAAiC;IAC/B,KAAK,CAAAsL,SAAL,CAAgBtD,GAAhB,CAAoBhI,QAApB;EAD+B;EAIjC8L,oBAAoBze,IAApB,EAA0B2S,QAA1B,EAAoC;IAClC,KAAK,CAAAsL,SAAL,CAAgBhE,MAAhB,CAAuBtH,QAAvB;EADkC;EAIpC+L,UAAA,EAAY;IACV,KAAK,CAAAT,SAAL,CAAgBlB,KAAhB;EADU;AAhCK;AA35DnBvuB,oBAAA,GAAAwvB,YAAA;AAw8DA,MAAMW,aAAA,GAAgB;EACpBC,gBAAA,EAAkB,KADE;EAEpBC,iBAAA,EAAmB,IAFC;EAGpBC,YAAA,EAAc;AAHM,CAAtB;AAx8DAtwB,qBAAA,GAAAmwB,aAAA;AA68DiE;EAE/D,IAAIjT,iBAAA,IAAY,OAAOqT,OAAP,KAAmC,UAAnD,EAA+D;IAE7DJ,aAAA,CAAcC,gBAAd,GAAiC,IAAjC;IAEAD,aAAA,CAAcE,iBAAd,GAEI,iBAFJ;EAJ6D,CAA/D,MAOO,IAAI,OAAOjQ,QAAP,KAAoB,QAAxB,EAAkC;IACvC,MAAMoQ,aAAA,GAAgBpQ,QAAA,EAAUqQ,aAAV,EAAyBpS,GAA/C;IACA,IAAImS,aAAJ,EAAmB;MACjBL,aAAA,CAAcE,iBAAd,GAAkCG,aAAA,CAAcE,OAAd,CAChC,2BADgC,EAEhC,aAFgC,CAAlC;IADiB;EAFoB;EAWzCP,aAAA,CAAcQ,YAAd,GAA6B,UAAU3gB,OAAV,EAAmB4gB,QAAnB,EAA6B;IACxD,IAAIC,IAAJ;IACA,IAAI;MACFA,IAAA,GAAO,IAAIngB,GAAJ,CAAQV,OAAR,CAAP;MACA,IAAI,CAAC6gB,IAAA,CAAKC,MAAN,IAAgBD,IAAA,CAAKC,MAAL,KAAgB,MAApC,EAA4C;QAC1C,OAAO,KAAP;MAD0C;IAF1C,CAAJ,CAKE,MAAM;MACN,OAAO,KAAP;IADM;IAIR,MAAMC,KAAA,GAAQ,IAAIrgB,GAAJ,CAAQkgB,QAAR,EAAkBC,IAAlB,CAAd;IACA,OAAOA,IAAA,CAAKC,MAAL,KAAgBC,KAAA,CAAMD,MAA7B;EAZwD,CAA1D;EAeAX,aAAA,CAAca,gBAAd,GAAiC,UAAUnhB,GAAV,EAAe;IAI9C,MAAMohB,OAAA,GAAW,kBAAiBphB,GAAI,KAAtC;IACA,OAAOa,GAAA,CAAIwgB,eAAJ,CAAoB,IAAIC,IAAJ,CAAS,CAACF,OAAD,CAAT,CAApB,CAAP;EAL8C,CAAhD;AAnC+D;AAoDjE,MAAM9R,SAAN,CAAgB;EACd,OAAO,CAAAiS,WAAP,GAAsB,IAAIC,OAAJ,EAAtB;EAEA5f,YAAY;IACVD,IAAA,GAAO,IADG;IAEV6P,IAAA,GAAO,IAFG;IAGVxS,SAAA,GAAY,IAAAK,uBAAA;EAHF,IAIR,EAJJ,EAIQ;IACN,IAAImS,IAAA,IAAQlC,SAAA,CAAU,CAAAiS,WAAV,CAAuBE,GAAvB,CAA2BjQ,IAA3B,CAAZ,EAA8C;MAC5C,MAAM,IAAI5R,KAAJ,CAAU,8CAAV,CAAN;IAD4C;IAI9C,KAAK+B,IAAL,GAAYA,IAAZ;IACA,KAAKuQ,SAAL,GAAiB,KAAjB;IACA,KAAKlT,SAAL,GAAiBA,SAAjB;IAEA,KAAKoV,gBAAL,GAAwB,IAAIhJ,uBAAJ,EAAxB;IACA,KAAKsW,KAAL,GAAa,IAAb;IACA,KAAKC,UAAL,GAAkB,IAAlB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IAEA,IAAIpQ,IAAJ,EAAU;MACRlC,SAAA,CAAU,CAAAiS,WAAV,CAAuBzG,GAAvB,CAA2BtJ,IAA3B,EAAiC,IAAjC;MACA,KAAKqQ,mBAAL,CAAyBrQ,IAAzB;MACA;IAHQ;IAKV,KAAKsQ,WAAL;EAnBM;EA0BR,IAAIxW,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK8I,gBAAL,CAAsB9I,OAA7B;EADY;EAQd,IAAIkG,IAAJA,CAAA,EAAW;IACT,OAAO,KAAKkQ,KAAZ;EADS;EAQX,IAAI7O,cAAJA,CAAA,EAAqB;IACnB,OAAO,KAAK+O,eAAZ;EADmB;EAIrBC,oBAAoBrQ,IAApB,EAA0B;IACxB,KAAKkQ,KAAL,GAAalQ,IAAb;IACA,KAAKoQ,eAAL,GAAuB,IAAI9O,+BAAJ,CAAmB,MAAnB,EAA2B,QAA3B,EAAqCtB,IAArC,CAAvB;IACA,KAAKoQ,eAAL,CAAqBG,EAArB,CAAwB,OAAxB,EAAiC,YAAY,EAA7C;IAIA,KAAK3N,gBAAL,CAAsB5I,OAAtB;IAEA,KAAKoW,eAAL,CAAqB1O,IAArB,CAA0B,WAA1B,EAAuC;MACrClU,SAAA,EAAW,KAAKA;IADqB,CAAvC;EATwB;EAc1B8iB,YAAA,EAAc;IAMZ,IACE,CAACxB,aAAA,CAAcC,gBAAf,IACA,CAACjR,SAAA,CAAU0S,+BAFb,EAGE;MACA,IAAI;QAAEC;MAAF,IAAgB3S,SAApB;MAEA,IAAI;QAGF,IAGE,CAACgR,aAAA,CAAcQ,YAAd,CAA2BrN,MAAA,CAAOC,QAAP,CAAgBF,IAA3C,EAAiDyO,SAAjD,CAHH,EAIE;UACAA,SAAA,GAAY3B,aAAA,CAAca,gBAAd,CACV,IAAItgB,GAAJ,CAAQohB,SAAR,EAAmBxO,MAAA,CAAOC,QAA1B,EAAoCF,IAD1B,CAAZ;QADA;QAMF,MAAMnE,MAAA,GAIA,IAAI6S,MAAJ,CAAWD,SAAX,CAJN;QAKA,MAAMpP,cAAA,GAAiB,IAAIC,+BAAJ,CAAmB,MAAnB,EAA2B,QAA3B,EAAqCzD,MAArC,CAAvB;QACA,MAAM8S,cAAA,GAAiBA,CAAA,KAAM;UAC3B9S,MAAA,CAAO+Q,mBAAP,CAA2B,OAA3B,EAAoCgC,aAApC;UACAvP,cAAA,CAAekB,OAAf;UACA1E,MAAA,CAAOgR,SAAP;UACA,IAAI,KAAKnO,SAAT,EAAoB;YAClB,KAAKkC,gBAAL,CAAsB3I,MAAtB,CAA6B,IAAI7L,KAAJ,CAAU,sBAAV,CAA7B;UADkB,CAApB,MAEO;YAGL,KAAKyiB,gBAAL;UAHK;QANoB,CAA7B;QAaA,MAAMD,aAAA,GAAgBA,CAAA,KAAM;UAC1B,IAAI,CAAC,KAAKT,UAAV,EAAsB;YAGpBQ,cAAA;UAHoB;QADI,CAA5B;QAOA9S,MAAA,CAAO8Q,gBAAP,CAAwB,OAAxB,EAAiCiC,aAAjC;QAEAvP,cAAA,CAAekP,EAAf,CAAkB,MAAlB,EAA0BrW,IAAA,IAAQ;UAChC2D,MAAA,CAAO+Q,mBAAP,CAA2B,OAA3B,EAAoCgC,aAApC;UACA,IAAI,KAAKlQ,SAAT,EAAoB;YAClBiQ,cAAA;YACA;UAFkB;UAIpB,IAAIzW,IAAJ,EAAU;YACR,KAAKkW,eAAL,GAAuB/O,cAAvB;YACA,KAAK6O,KAAL,GAAarS,MAAb;YACA,KAAKsS,UAAL,GAAkBtS,MAAlB;YAEA,KAAK+E,gBAAL,CAAsB5I,OAAtB;YAEAqH,cAAA,CAAeK,IAAf,CAAoB,WAApB,EAAiC;cAC/BlU,SAAA,EAAW,KAAKA;YADe,CAAjC;UAPQ,CAAV,MAUO;YACL,KAAKqjB,gBAAL;YACAxP,cAAA,CAAekB,OAAf;YACA1E,MAAA,CAAOgR,SAAP;UAHK;QAhByB,CAAlC;QAuBAxN,cAAA,CAAekP,EAAf,CAAkB,OAAlB,EAA2BrW,IAAA,IAAQ;UACjC2D,MAAA,CAAO+Q,mBAAP,CAA2B,OAA3B,EAAoCgC,aAApC;UACA,IAAI,KAAKlQ,SAAT,EAAoB;YAClBiQ,cAAA;YACA;UAFkB;UAIpB,IAAI;YACFG,QAAA;UADE,CAAJ,CAEE,MAAM;YAEN,KAAKD,gBAAL;UAFM;QARyB,CAAnC;QAcA,MAAMC,QAAA,GAAWA,CAAA,KAAM;UACrB,MAAMC,OAAA,GAAU,IAAI7e,UAAJ,EAAhB;UAEAmP,cAAA,CAAeK,IAAf,CAAoB,MAApB,EAA4BqP,OAA5B,EAAqC,CAACA,OAAA,CAAQhe,MAAT,CAArC;QAHqB,CAAvB;QASA+d,QAAA;QACA;MAxFE,CAAJ,CAyFE,MAAM;QACN,IAAAhjB,UAAA,EAAK,+BAAL;MADM;IA5FR;IAkGF,KAAK+iB,gBAAL;EA3GY;EA8GdA,iBAAA,EAAmB;IACjB,IAAI,CAAC/B,aAAA,CAAcC,gBAAnB,EAAqC;MACnC,IAAA7gB,UAAA,EAAK,yBAAL;MACA4gB,aAAA,CAAcC,gBAAd,GAAiC,IAAjC;IAFmC;IAKrCjR,SAAA,CAAUkT,sBAAV,CACGvQ,IADH,CACQwQ,oBAAA,IAAwB;MAC5B,IAAI,KAAKvQ,SAAT,EAAoB;QAClB,KAAKkC,gBAAL,CAAsB3I,MAAtB,CAA6B,IAAI7L,KAAJ,CAAU,sBAAV,CAA7B;QACA;MAFkB;MAIpB,MAAM4R,IAAA,GAAO,IAAImO,YAAJ,EAAb;MACA,KAAK+B,KAAL,GAAalQ,IAAb;MAGA,MAAM4E,EAAA,GAAM,OAAMkK,aAAA,CAAcG,YAAd,EAAP,EAAX;MAIA,MAAMiC,aAAA,GAAgB,IAAI5P,+BAAJ,CAAmBsD,EAAA,GAAK,SAAxB,EAAmCA,EAAnC,EAAuC5E,IAAvC,CAAtB;MACAiR,oBAAA,CAAqBE,KAArB,CAA2BD,aAA3B,EAA0ClR,IAA1C;MAEA,MAAMqB,cAAA,GAAiB,IAAIC,+BAAJ,CAAmBsD,EAAnB,EAAuBA,EAAA,GAAK,SAA5B,EAAuC5E,IAAvC,CAAvB;MACA,KAAKoQ,eAAL,GAAuB/O,cAAvB;MACA,KAAKuB,gBAAL,CAAsB5I,OAAtB;MAEAqH,cAAA,CAAeK,IAAf,CAAoB,WAApB,EAAiC;QAC/BlU,SAAA,EAAW,KAAKA;MADe,CAAjC;IApB4B,CADhC,EAyBGmU,KAzBH,CAyBSxH,MAAA,IAAU;MACf,KAAKyI,gBAAL,CAAsB3I,MAAtB,CACE,IAAI7L,KAAJ,CAAW,mCAAkC+L,MAAA,CAAOjK,OAAQ,IAA5D,CADF;IADe,CAzBnB;EANiB;EAyCnBqS,QAAA,EAAU;IACR,KAAK7B,SAAL,GAAiB,IAAjB;IACA,IAAI,KAAKyP,UAAT,EAAqB;MAEnB,KAAKA,UAAL,CAAgBtB,SAAhB;MACA,KAAKsB,UAAL,GAAkB,IAAlB;IAHmB;IAKrBrS,SAAA,CAAU,CAAAiS,WAAV,CAAuB3F,MAAvB,CAA8B,KAAK8F,KAAnC;IACA,KAAKA,KAAL,GAAa,IAAb;IACA,IAAI,KAAKE,eAAT,EAA0B;MACxB,KAAKA,eAAL,CAAqB7N,OAArB;MACA,KAAK6N,eAAL,GAAuB,IAAvB;IAFwB;EATlB;EAkBV,OAAOjQ,QAAPA,CAAgBxD,MAAhB,EAAwB;IACtB,IAAI,CAACA,MAAA,EAAQqD,IAAb,EAAmB;MACjB,MAAM,IAAI5R,KAAJ,CAAU,gDAAV,CAAN;IADiB;IAGnB,IAAI,KAAK,CAAA2hB,WAAL,CAAkBE,GAAlB,CAAsBtT,MAAA,CAAOqD,IAA7B,CAAJ,EAAwC;MACtC,OAAO,KAAK,CAAA+P,WAAL,CAAkBpV,GAAlB,CAAsBgC,MAAA,CAAOqD,IAA7B,CAAP;IADsC;IAGxC,OAAO,IAAIlC,SAAJ,CAAcnB,MAAd,CAAP;EAPsB;EAcxB,WAAW8T,SAAXA,CAAA,EAAuB;IACrB,IAAIxQ,mCAAA,CAAoBwQ,SAAxB,EAAmC;MACjC,OAAOxQ,mCAAA,CAAoBwQ,SAA3B;IADiC;IAGnC,IAEE3B,aAAA,CAAcE,iBAAd,KAAoC,IAFtC,EAGE;MACA,IAAI,CAACnT,iBAAL,EAAe;QACb,IAAAuV,yBAAA,EAAW,+CAAX;MADa;MAGf,OAAOtC,aAAA,CAAcE,iBAArB;IAJA;IAMF,MAAM,IAAI5gB,KAAJ,CAAU,+CAAV,CAAN;EAbqB;EAgBvB,WAAWoiB,+BAAXA,CAAA,EAA6C;IAC3C,IAAI;MACF,OAAO1R,UAAA,CAAWuS,WAAX,EAAwBJ,oBAAxB,IAAgD,IAAvD;IADE,CAAJ,CAEE,MAAM;MACN,OAAO,IAAP;IADM;EAHmC;EAS7C,WAAWD,sBAAXA,CAAA,EAAoC;IAClC,MAAMM,MAAA,GAAS,MAAAA,CAAA,KAAY;MACzB,MAAMC,wBAAA,GAA2B,KAAKf,+BAAtC;MAEA,IAAIe,wBAAJ,EAA8B;QAE5B,OAAOA,wBAAP;MAF4B;MAQ9B,IAEE1V,iBADA,IAGA,OAAOqT,OAAP,KAAmC,UAJrC,EAKE;QAcA,MAAMrR,MAAA,GAAS2T,IAAA,CAAK,SAAL,EAAgB,KAAKf,SAArB,CAAf;QACA,OAAO5S,MAAA,CAAOoT,oBAAd;MAfA;MAiBF,MAAM,IAAAQ,yBAAA,EAAW,KAAKhB,SAAhB,CAAN;MACA,OAAOxO,MAAA,CAAOoP,WAAP,CAAmBJ,oBAA1B;IAlCyB,CAA3B;IAqCA,OAAO,IAAA3hB,YAAA,EAAO,IAAP,EAAa,wBAAb,EAAuCgiB,MAAA,EAAvC,CAAP;EAtCkC;AAnRtB;AAjgEhB3yB,iBAAA,GAAAmf,SAAA;AAk0EA,MAAM0D,eAAN,CAAsB;EACpB,CAAAkQ,cAAA,GAAkB,IAAInX,GAAJ,EAAlB;EAEA,CAAAoX,SAAA,GAAa,IAAIpX,GAAJ,EAAb;EAEA,CAAAqX,YAAA,GAAgB,IAAIrX,GAAJ,EAAhB;EAEAnK,YAAYiR,cAAZ,EAA4B6E,WAA5B,EAAyCpF,aAAzC,EAAwDnE,MAAxD,EAAgEkV,OAAhE,EAAyE;IACvE,KAAKxQ,cAAL,GAAsBA,cAAtB;IACA,KAAK6E,WAAL,GAAmBA,WAAnB;IACA,KAAKe,UAAL,GAAkB,IAAIE,UAAJ,EAAlB;IACA,KAAK2K,UAAL,GAAkB,IAAIC,uBAAJ,CAAe;MAC/BlT,aAAA,EAAelC,MAAA,CAAOkC,aADS;MAE/Ba,YAAA,EAAc/C,MAAA,CAAO+C;IAFU,CAAf,CAAlB;IAIA,KAAKsS,OAAL,GAAerV,MAAf;IAEA,KAAK6C,aAAL,GAAqBqS,OAAA,CAAQrS,aAA7B;IACA,KAAKC,aAAL,GAAqBoS,OAAA,CAAQpS,aAA7B;IACA,KAAKG,iBAAL,GAAyBiS,OAAA,CAAQjS,iBAAjC;IACA,KAAKE,uBAAL,GAA+B+R,OAAA,CAAQ/R,uBAAvC;IAEA,KAAKY,SAAL,GAAiB,KAAjB;IACA,KAAKuR,iBAAL,GAAyB,IAAzB;IACA,KAAKC,mBAAL,GAA2B,IAA3B;IAEA,KAAKC,cAAL,GAAsBrR,aAAtB;IACA,KAAKsR,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKvM,sBAAL,GAA8B,IAAIlM,uBAAJ,EAA9B;IAEA,KAAK0Y,mBAAL;EAxBuE;EAgDzE,CAAAC,kBAAmBpiB,IAAnB,EAAyB+J,IAAA,GAAO,IAAhC,EAAsC;IACpC,MAAMsY,aAAA,GAAgB,KAAK,CAAAd,cAAL,CAAqB/W,GAArB,CAAyBxK,IAAzB,CAAtB;IACA,IAAIqiB,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAM1Y,OAAA,GAAU,KAAKuH,cAAL,CAAoBS,eAApB,CAAoC3R,IAApC,EAA0C+J,IAA1C,CAAhB;IAEA,KAAK,CAAAwX,cAAL,CAAqBpI,GAArB,CAAyBnZ,IAAzB,EAA+B2J,OAA/B;IACA,OAAOA,OAAP;EARoC;EAWtC,IAAIkK,iBAAJA,CAAA,EAAwB;IACtB,OAAO,IAAA1U,YAAA,EAAO,IAAP,EAAa,mBAAb,EAAkC,IAAImjB,qCAAJ,EAAlC,CAAP;EADsB;EAIxBrK,mBACEF,MADF,EAEEU,cAAA,GAAiBlpB,oBAAA,CAAeE,MAFlC,EAGEqpB,sBAAA,GAAyB,IAH3B,EAIEyJ,QAAA,GAAW,KAJb,EAKE;IACA,IAAIrK,eAAA,GAAkBppB,yBAAA,CAAoBE,OAA1C;IACA,IAAIuuB,6BAAA,GAAgCiF,qCAApC;IAEA,QAAQzK,MAAR;MACE,KAAK,KAAL;QACEG,eAAA,GAAkBppB,yBAAA,CAAoBC,GAAtC;QACA;MACF,KAAK,SAAL;QACE;MACF,KAAK,OAAL;QACEmpB,eAAA,GAAkBppB,yBAAA,CAAoBG,KAAtC;QACA;MACF;QACE,IAAA8O,UAAA,EAAM,wCAAuCga,MAAxC,EAAL;IAVJ;IAaA,QAAQU,cAAR;MACE,KAAKlpB,oBAAA,CAAeC,OAApB;QACE0oB,eAAA,IAAmBppB,yBAAA,CAAoBO,mBAAvC;QACA;MACF,KAAKE,oBAAA,CAAeE,MAApB;QACE;MACF,KAAKF,oBAAA,CAAeG,YAApB;QACEwoB,eAAA,IAAmBppB,yBAAA,CAAoBK,iBAAvC;QACA;MACF,KAAKI,oBAAA,CAAeI,cAApB;QACEuoB,eAAA,IAAmBppB,yBAAA,CAAoBM,mBAAvC;QAEA,MAAMykB,iBAAA,GACJqE,eAAA,GAAkBppB,yBAAA,CAAoBG,KAAtC,IACA6pB,sBAAA,YAAkC2J,0CADlC,GAEI3J,sBAFJ,GAGI,KAAKjF,iBAJX;QAMA0J,6BAAA,GAAgC1J,iBAAA,CAAkB6O,YAAlD;QACA;MACF;QACE,IAAA3kB,UAAA,EAAM,gDAA+C0a,cAAhD,EAAL;IArBJ;IAwBA,IAAI8J,QAAJ,EAAc;MACZrK,eAAA,IAAmBppB,yBAAA,CAAoBQ,MAAvC;IADY;IAId,OAAO;MACL4oB,eADK;MAELgB,QAAA,EAAU,GAAGhB,eAAgB,IAAGqF,6BAAA,CAA8BoF,IAApD,EAFL;MAGLpF;IAHK,CAAP;EA7CA;EAoDFnL,QAAA,EAAU;IACR,IAAI,KAAK0P,iBAAT,EAA4B;MAC1B,OAAO,KAAKA,iBAAL,CAAuBnY,OAA9B;IAD0B;IAI5B,KAAK4G,SAAL,GAAiB,IAAjB;IACA,KAAKuR,iBAAL,GAAyB,IAAIrY,uBAAJ,EAAzB;IAEA,IAAI,KAAKsY,mBAAT,EAA8B;MAC5B,KAAKA,mBAAL,CAAyBjY,MAAzB,CACE,IAAI7L,KAAJ,CAAU,iDAAV,CADF;IAD4B;IAM9B,MAAMye,MAAA,GAAS,EAAf;IAGA,WAAWkG,IAAX,IAAmB,KAAK,CAAApB,SAAL,CAAgB7E,MAAhB,EAAnB,EAA6C;MAC3CD,MAAA,CAAO/a,IAAP,CAAYihB,IAAA,CAAKnG,QAAL,EAAZ;IAD2C;IAG7C,KAAK,CAAA+E,SAAL,CAAgBzE,KAAhB;IACA,KAAK,CAAA0E,YAAL,CAAmB1E,KAAnB;IAEA,IAAI,KAAK8F,cAAL,CAAoB,mBAApB,CAAJ,EAA8C;MAC5C,KAAKhP,iBAAL,CAAuBiP,aAAvB;IAD4C;IAI9C,MAAMC,UAAA,GAAa,KAAK7R,cAAL,CAAoBS,eAApB,CAAoC,WAApC,EAAiD,IAAjD,CAAnB;IACA+K,MAAA,CAAO/a,IAAP,CAAYohB,UAAZ;IAEAnZ,OAAA,CAAQoH,GAAR,CAAY0L,MAAZ,EAAoBpM,IAApB,CAAyB,MAAM;MAC7B,KAAKwG,UAAL,CAAgBiG,KAAhB;MACA,KAAK4E,UAAL,CAAgB5E,KAAhB;MACA,KAAK,CAAAwE,cAAL,CAAqBxE,KAArB;MACA,KAAKzN,aAAL,CAAmB8C,OAAnB;MAEA,IAAI,KAAK4P,cAAT,EAAyB;QACvB,KAAKA,cAAL,CAAoBgB,iBAApB,CACE,IAAIpiB,oBAAJ,CAAmB,wBAAnB,CADF;MADuB;MAMzB,IAAI,KAAKsQ,cAAT,EAAyB;QACvB,KAAKA,cAAL,CAAoBkB,OAApB;QACA,KAAKlB,cAAL,GAAsB,IAAtB;MAFuB;MAIzB,KAAK4Q,iBAAL,CAAuBjY,OAAvB;IAhB6B,CAA/B,EAiBG,KAAKiY,iBAAL,CAAuBhY,MAjB1B;IAkBA,OAAO,KAAKgY,iBAAL,CAAuBnY,OAA9B;EAhDQ;EAmDVwY,oBAAA,EAAsB;IACpB,MAAM;MAAEjR,cAAF;MAAkB6E;IAAlB,IAAkC,IAAxC;IAEA7E,cAAA,CAAekP,EAAf,CAAkB,WAAlB,EAA+B,CAACrW,IAAD,EAAOkZ,IAAP,KAAgB;MAC7C,IAAA/kB,YAAA,EACE,KAAK8jB,cADP,EAEE,iDAFF;MAIA,KAAKC,WAAL,GAAmB,KAAKD,cAAL,CAAoBkB,aAApB,EAAnB;MACA,KAAKjB,WAAL,CAAiB9P,UAAjB,GAA8BgR,GAAA,IAAO;QACnC,KAAKjB,aAAL,GAAqB;UACnBhP,MAAA,EAAQiQ,GAAA,CAAIjQ,MADO;UAEnBC,KAAA,EAAOgQ,GAAA,CAAIhQ;QAFQ,CAArB;MADmC,CAArC;MAMA8P,IAAA,CAAKG,MAAL,GAAc,MAAM;QAClB,KAAKnB,WAAL,CACG9F,IADH,GAEG7L,IAFH,CAEQ,UAAU;UAAEhR,KAAF;UAAS8c;QAAT,CAAV,EAA2B;UAC/B,IAAIA,IAAJ,EAAU;YACR6G,IAAA,CAAKI,KAAL;YACA;UAFQ;UAIV,IAAAnlB,YAAA,EACEoB,KAAA,YAAiBgkB,WADnB,EAEE,sCAFF;UAMAL,IAAA,CAAKM,OAAL,CAAa,IAAIxhB,UAAJ,CAAezC,KAAf,CAAb,EAAoC,CAApC,EAAuC,CAACA,KAAD,CAAvC;QAX+B,CAFnC,EAeGkS,KAfH,CAeSxH,MAAA,IAAU;UACfiZ,IAAA,CAAKlJ,KAAL,CAAW/P,MAAX;QADe,CAfnB;MADkB,CAApB;MAqBAiZ,IAAA,CAAKO,QAAL,GAAgBxZ,MAAA,IAAU;QACxB,KAAKiY,WAAL,CAAiBnF,MAAjB,CAAwB9S,MAAxB;QAEAiZ,IAAA,CAAKQ,KAAL,CAAWjS,KAAX,CAAiBkS,WAAA,IAAe;UAC9B,IAAI,KAAKnT,SAAT,EAAoB;YAClB;UADkB;UAGpB,MAAMmT,WAAN;QAJ8B,CAAhC;MAHwB,CAA1B;IAjC6C,CAA/C;IA6CAxS,cAAA,CAAekP,EAAf,CAAkB,oBAAlB,EAAwCrW,IAAA,IAAQ;MAC9C,MAAM4Z,iBAAA,GAAoB,IAAIla,uBAAJ,EAA1B;MACA,MAAMma,UAAA,GAAa,KAAK3B,WAAxB;MACA2B,UAAA,CAAWC,YAAX,CAAwBvT,IAAxB,CAA6B,MAAM;QAGjC,IAAI,CAACsT,UAAA,CAAWE,oBAAZ,IAAoC,CAACF,UAAA,CAAWG,gBAApD,EAAsE;UACpE,IAAI,KAAK7B,aAAT,EAAwB;YACtBnM,WAAA,CAAY5D,UAAZ,GAAyB,KAAK+P,aAA9B;UADsB;UAGxB0B,UAAA,CAAWzR,UAAX,GAAwBgR,GAAA,IAAO;YAC7BpN,WAAA,CAAY5D,UAAZ,GAAyB;cACvBe,MAAA,EAAQiQ,GAAA,CAAIjQ,MADW;cAEvBC,KAAA,EAAOgQ,GAAA,CAAIhQ;YAFY,CAAzB;UAD6B,CAA/B;QAJoE;QAYtEwQ,iBAAA,CAAkB9Z,OAAlB,CAA0B;UACxBia,oBAAA,EAAsBF,UAAA,CAAWE,oBADT;UAExBC,gBAAA,EAAkBH,UAAA,CAAWG,gBAFL;UAGxBC,aAAA,EAAeJ,UAAA,CAAWI;QAHF,CAA1B;MAfiC,CAAnC,EAoBGL,iBAAA,CAAkB7Z,MApBrB;MAsBA,OAAO6Z,iBAAA,CAAkBha,OAAzB;IAzB8C,CAAhD;IA4BAuH,cAAA,CAAekP,EAAf,CAAkB,gBAAlB,EAAoC,CAACrW,IAAD,EAAOkZ,IAAP,KAAgB;MAClD,IAAA/kB,YAAA,EACE,KAAK8jB,cADP,EAEE,sDAFF;MAIA,MAAMiC,WAAA,GAAc,KAAKjC,cAAL,CAAoBkC,cAApB,CAClBna,IAAA,CAAKiJ,KADa,EAElBjJ,IAAA,CAAKyJ,GAFa,CAApB;MAeA,IAAI,CAACyQ,WAAL,EAAkB;QAChBhB,IAAA,CAAKI,KAAL;QACA;MAFgB;MAKlBJ,IAAA,CAAKG,MAAL,GAAc,MAAM;QAClBa,WAAA,CACG9H,IADH,GAEG7L,IAFH,CAEQ,UAAU;UAAEhR,KAAF;UAAS8c;QAAT,CAAV,EAA2B;UAC/B,IAAIA,IAAJ,EAAU;YACR6G,IAAA,CAAKI,KAAL;YACA;UAFQ;UAIV,IAAAnlB,YAAA,EACEoB,KAAA,YAAiBgkB,WADnB,EAEE,2CAFF;UAIAL,IAAA,CAAKM,OAAL,CAAa,IAAIxhB,UAAJ,CAAezC,KAAf,CAAb,EAAoC,CAApC,EAAuC,CAACA,KAAD,CAAvC;QAT+B,CAFnC,EAaGkS,KAbH,CAaSxH,MAAA,IAAU;UACfiZ,IAAA,CAAKlJ,KAAL,CAAW/P,MAAX;QADe,CAbnB;MADkB,CAApB;MAmBAiZ,IAAA,CAAKO,QAAL,GAAgBxZ,MAAA,IAAU;QACxBia,WAAA,CAAYnH,MAAZ,CAAmB9S,MAAnB;QAEAiZ,IAAA,CAAKQ,KAAL,CAAWjS,KAAX,CAAiBkS,WAAA,IAAe;UAC9B,IAAI,KAAKnT,SAAT,EAAoB;YAClB;UADkB;UAGpB,MAAMmT,WAAN;QAJ8B,CAAhC;MAHwB,CAA1B;IA5CkD,CAApD;IAwDAxS,cAAA,CAAekP,EAAf,CAAkB,QAAlB,EAA4B,CAAC;MAAEzM;IAAF,CAAD,KAAiB;MAC3C,KAAKwQ,SAAL,GAAiBxQ,OAAA,CAAQG,QAAzB;MACA,KAAKG,WAAL,GAAmBN,OAAA,CAAQyQ,UAA3B;MACA,OAAOzQ,OAAA,CAAQyQ,UAAf;MACArO,WAAA,CAAYtE,WAAZ,CAAwB5H,OAAxB,CAAgC,IAAI6J,gBAAJ,CAAqBC,OAArB,EAA8B,IAA9B,CAAhC;IAJ2C,CAA7C;IAOAzC,cAAA,CAAekP,EAAf,CAAkB,cAAlB,EAAkC,UAAUlY,EAAV,EAAc;MAC9C,IAAI8B,MAAJ;MACA,QAAQ9B,EAAA,CAAGlI,IAAX;QACE,KAAK,mBAAL;UACEgK,MAAA,GAAS,IAAI7J,uBAAJ,CAAsB+H,EAAA,CAAGnI,OAAzB,EAAkCmI,EAAA,CAAG9H,IAArC,CAAT;UACA;QACF,KAAK,qBAAL;UACE4J,MAAA,GAAS,IAAIzJ,yBAAJ,CAAwB2H,EAAA,CAAGnI,OAA3B,CAAT;UACA;QACF,KAAK,qBAAL;UACEiK,MAAA,GAAS,IAAIxJ,yBAAJ,CAAwB0H,EAAA,CAAGnI,OAA3B,CAAT;UACA;QACF,KAAK,6BAAL;UACEiK,MAAA,GAAS,IAAIvJ,iCAAJ,CAAgCyH,EAAA,CAAGnI,OAAnC,EAA4CmI,EAAA,CAAGxH,MAA/C,CAAT;UACA;QACF,KAAK,uBAAL;UACEsJ,MAAA,GAAS,IAAI3J,2BAAJ,CAA0B6H,EAAA,CAAGnI,OAA7B,EAAsCmI,EAAA,CAAG5H,OAAzC,CAAT;UACA;QACF;UACE,IAAAtC,iBAAA,EAAY,wCAAZ;MAjBJ;MAmBA+X,WAAA,CAAYtE,WAAZ,CAAwB3H,MAAxB,CAA+BE,MAA/B;IArB8C,CAAhD;IAwBAkH,cAAA,CAAekP,EAAf,CAAkB,iBAAlB,EAAqCiE,SAAA,IAAa;MAChD,KAAKtC,mBAAL,GAA2B,IAAItY,uBAAJ,EAA3B;MAEA,IAAIsM,WAAA,CAAY7D,UAAhB,EAA4B;QAC1B,MAAMoS,cAAA,GAAiBhX,QAAA,IAAY;UACjC,IAAIA,QAAA,YAAoBrP,KAAxB,EAA+B;YAC7B,KAAK8jB,mBAAL,CAAyBjY,MAAzB,CAAgCwD,QAAhC;UAD6B,CAA/B,MAEO;YACL,KAAKyU,mBAAL,CAAyBlY,OAAzB,CAAiC;cAAEyD;YAAF,CAAjC;UADK;QAH0B,CAAnC;QAOA,IAAI;UACFyI,WAAA,CAAY7D,UAAZ,CAAuBoS,cAAvB,EAAuCD,SAAA,CAAUjkB,IAAjD;QADE,CAAJ,CAEE,OAAO8H,EAAP,EAAW;UACX,KAAK6Z,mBAAL,CAAyBjY,MAAzB,CAAgC5B,EAAhC;QADW;MAVa,CAA5B,MAaO;QACL,KAAK6Z,mBAAL,CAAyBjY,MAAzB,CACE,IAAI3J,uBAAJ,CAAsBkkB,SAAA,CAAUtkB,OAAhC,EAAyCskB,SAAA,CAAUjkB,IAAnD,CADF;MADK;MAKP,OAAO,KAAK2hB,mBAAL,CAAyBpY,OAAhC;IArBgD,CAAlD;IAwBAuH,cAAA,CAAekP,EAAf,CAAkB,YAAlB,EAAgCrW,IAAA,IAAQ;MAGtCgM,WAAA,CAAY5D,UAAZ,GAAyB;QACvBe,MAAA,EAAQnJ,IAAA,CAAKjL,MADU;QAEvBqU,KAAA,EAAOpJ,IAAA,CAAKjL;MAFW,CAAzB;MAKA,KAAK6W,sBAAL,CAA4B9L,OAA5B,CAAoCE,IAApC;IARsC,CAAxC;IAWAmH,cAAA,CAAekP,EAAf,CAAkB,iBAAlB,EAAqCrW,IAAA,IAAQ;MAC3C,IAAI,KAAKwG,SAAT,EAAoB;QAClB;MADkB;MAIpB,MAAMqS,IAAA,GAAO,KAAK,CAAApB,SAAL,CAAgBhX,GAAhB,CAAoBT,IAAA,CAAKwM,SAAzB,CAAb;MACAqM,IAAA,CAAKxF,gBAAL,CAAsBrT,IAAA,CAAK8Q,YAA3B,EAAyC9Q,IAAA,CAAKmP,QAA9C;IAN2C,CAA7C;IASAhI,cAAA,CAAekP,EAAf,CAAkB,WAAlB,EAA+B,CAAC,CAAC3L,EAAD,EAAK8P,IAAL,EAAWC,YAAX,CAAD,KAA8B;MAC3D,IAAI,KAAKjU,SAAT,EAAoB;QAClB;MADkB;MAIpB,IAAI,KAAKuG,UAAL,CAAgBgJ,GAAhB,CAAoBrL,EAApB,CAAJ,EAA6B;QAC3B;MAD2B;MAI7B,QAAQ8P,IAAR;QACE,KAAK,MAAL;UACE,MAAM/X,MAAA,GAAS,KAAKqV,OAApB;UAEA,IAAI,WAAW2C,YAAf,EAA6B;YAC3B,MAAMC,aAAA,GAAgBD,YAAA,CAAazK,KAAnC;YACA,IAAAhc,UAAA,EAAM,8BAA6B0mB,aAA9B,EAAL;YACA,KAAK3N,UAAL,CAAgBjN,OAAhB,CAAwB4K,EAAxB,EAA4BgQ,aAA5B;YACA;UAJ2B;UAO7B,MAAMC,WAAA,GACJlY,MAAA,CAAOwC,MAAP,IAAiBL,UAAA,CAAWgW,aAAX,EAA0BC,OAA3C,GACI,CAACC,IAAD,EAAOxmB,GAAP,KAAesQ,UAAA,CAAWgW,aAAX,CAAyBG,SAAzB,CAAmCD,IAAnC,EAAyCxmB,GAAzC,CADnB,GAEI,IAHN;UAIA,MAAMwmB,IAAA,GAAO,IAAIE,2BAAJ,CAAmBP,YAAnB,EAAiC;YAC5C3hB,eAAA,EAAiB2J,MAAA,CAAO3J,eADoB;YAE5C0L,eAAA,EAAiB/B,MAAA,CAAO+B,eAFoB;YAG5CJ,YAAA,EAAc3B,MAAA,CAAO2B,YAHuB;YAI5CuW;UAJ4C,CAAjC,CAAb;UAOA,KAAK/C,UAAL,CACGqD,IADH,CACQH,IADR,EAEGrT,KAFH,CAESxH,MAAA,IAAU;YACf,OAAOkH,cAAA,CAAeS,eAAf,CAA+B,cAA/B,EAA+C;cAAE8C;YAAF,CAA/C,CAAP;UADe,CAFnB,EAKGwQ,OALH,CAKW,MAAM;YACb,IAAI,CAACzY,MAAA,CAAOgC,mBAAR,IAA+BqW,IAAA,CAAK9a,IAAxC,EAA8C;cAM5C8a,IAAA,CAAK9a,IAAL,GAAY,IAAZ;YAN4C;YAQ9C,KAAK+M,UAAL,CAAgBjN,OAAhB,CAAwB4K,EAAxB,EAA4BoQ,IAA5B;UATa,CALjB;UAgBA;QACF,KAAK,UAAL;QACA,KAAK,OAAL;QACA,KAAK,SAAL;UACE,KAAK/N,UAAL,CAAgBjN,OAAhB,CAAwB4K,EAAxB,EAA4B+P,YAA5B;UACA;QACF;UACE,MAAM,IAAIvmB,KAAJ,CAAW,kCAAiCsmB,IAAlC,EAAV,CAAN;MA7CJ;IAT2D,CAA7D;IA0DArT,cAAA,CAAekP,EAAf,CAAkB,KAAlB,EAAyB,CAAC,CAAC3L,EAAD,EAAK8B,SAAL,EAAgBgO,IAAhB,EAAsBW,SAAtB,CAAD,KAAsC;MAC7D,IAAI,KAAK3U,SAAT,EAAoB;QAElB;MAFkB;MAKpB,MAAM4U,SAAA,GAAY,KAAK,CAAA3D,SAAL,CAAgBhX,GAAhB,CAAoB+L,SAApB,CAAlB;MACA,IAAI4O,SAAA,CAAUpO,IAAV,CAAe+I,GAAf,CAAmBrL,EAAnB,CAAJ,EAA4B;QAC1B;MAD0B;MAI5B,QAAQ8P,IAAR;QACE,KAAK,OAAL;UACEY,SAAA,CAAUpO,IAAV,CAAelN,OAAf,CAAuB4K,EAAvB,EAA2ByQ,SAA3B;UAGA,IAAIA,SAAJ,EAAe;YACb,IAAIpmB,MAAJ;YACA,IAAIomB,SAAA,CAAUE,MAAd,EAAsB;cACpB,MAAM;gBAAEC,KAAF;gBAASC;cAAT,IAAoBJ,SAA1B;cACApmB,MAAA,GAASumB,KAAA,GAAQC,MAAR,GAAiB,CAA1B;YAFoB,CAAtB,MAGO;cACLxmB,MAAA,GAASomB,SAAA,CAAUnb,IAAV,EAAgBjL,MAAhB,IAA0B,CAAnC;YADK;YAIP,IAAIA,MAAA,GAASpQ,6BAAb,EAAsC;cACpCy2B,SAAA,CAAUlO,wBAAV,GAAqC,IAArC;YADoC;UATzB;UAaf;QACF,KAAK,SAAL;UACEkO,SAAA,CAAUpO,IAAV,CAAelN,OAAf,CAAuB4K,EAAvB,EAA2ByQ,SAA3B;UACA;QACF;UACE,MAAM,IAAIjnB,KAAJ,CAAW,2BAA0BsmB,IAA3B,EAAV,CAAN;MAvBJ;IAX6D,CAA/D;IAsCArT,cAAA,CAAekP,EAAf,CAAkB,aAAlB,EAAiCrW,IAAA,IAAQ;MACvC,IAAI,KAAKwG,SAAT,EAAoB;QAClB;MADkB;MAGpBwF,WAAA,CAAY5D,UAAZ,GAAyB;QACvBe,MAAA,EAAQnJ,IAAA,CAAKmJ,MADU;QAEvBC,KAAA,EAAOpJ,IAAA,CAAKoJ;MAFW,CAAzB;IAJuC,CAAzC;IAUAjC,cAAA,CAAekP,EAAf,CAAkB,kBAAlB,EAAsCrW,IAAA,IAAQ;MAC5C,IAAI,KAAKwG,SAAT,EAAoB;QAClB,OAAO3G,OAAA,CAAQE,MAAR,CAAe,IAAI7L,KAAJ,CAAU,uBAAV,CAAf,CAAP;MADkB;MAGpB,IAAI,CAAC,KAAKwR,iBAAV,EAA6B;QAC3B,OAAO7F,OAAA,CAAQE,MAAR,CACL,IAAI7L,KAAJ,CACE,wEADF,CADK,CAAP;MAD2B;MAO7B,OAAO,KAAKwR,iBAAL,CAAuB8V,KAAvB,CAA6Bxb,IAA7B,CAAP;IAX4C,CAA9C;IAcAmH,cAAA,CAAekP,EAAf,CAAkB,uBAAlB,EAA2CrW,IAAA,IAAQ;MACjD,IAAI,KAAKwG,SAAT,EAAoB;QAClB,OAAO3G,OAAA,CAAQE,MAAR,CAAe,IAAI7L,KAAJ,CAAU,uBAAV,CAAf,CAAP;MADkB;MAGpB,IAAI,CAAC,KAAK0R,uBAAV,EAAmC;QACjC,OAAO/F,OAAA,CAAQE,MAAR,CACL,IAAI7L,KAAJ,CACE,8EADF,CADK,CAAP;MADiC;MAOnC,OAAO,KAAK0R,uBAAL,CAA6B4V,KAA7B,CAAmCxb,IAAnC,CAAP;IAXiD,CAAnD;EAvUoB;EAsVtByL,QAAA,EAAU;IACR,OAAO,KAAKtE,cAAL,CAAoBS,eAApB,CAAoC,SAApC,EAA+C,IAA/C,CAAP;EADQ;EAIV8D,aAAA,EAAe;IACb,IAAI,KAAK5B,iBAAL,CAAuB6H,IAAvB,IAA+B,CAAnC,EAAsC;MACpC,IAAA3d,UAAA,EACE,6DACE,wCAFJ;IADoC;IAMtC,MAAM;MAAEsE,GAAF;MAAOmb;IAAP,IAAqB,KAAK3J,iBAAL,CAAuB6O,YAAlD;IAEA,OAAO,KAAKxR,cAAL,CACJS,eADI,CAEH,cAFG,EAGH;MACEqC,SAAA,EAAW,CAAC,CAAC,KAAKC,WADpB;MAEEH,QAAA,EAAU,KAAKqQ,SAFjB;MAGEtQ,iBAAA,EAAmBxR,GAHrB;MAIEmjB,QAAA,EAAU,KAAKvD,WAAL,EAAkBuD,QAAlB,IAA8B;IAJ1C,CAHG,EASHhI,SATG,EAWJyH,OAXI,CAWI,MAAM;MACb,KAAKpR,iBAAL,CAAuBiP,aAAvB;IADa,CAXV,CAAP;EATa;EAyBf3O,QAAQC,UAAR,EAAoB;IAClB,IACE,CAAC5W,MAAA,CAAOC,SAAP,CAAiB2W,UAAjB,CAAD,IACAA,UAAA,IAAc,CADd,IAEAA,UAAA,GAAa,KAAK+P,SAHpB,EAIE;MACA,OAAOva,OAAA,CAAQE,MAAR,CAAe,IAAI7L,KAAJ,CAAU,uBAAV,CAAf,CAAP;IADA;IAIF,MAAMsY,SAAA,GAAYnC,UAAA,GAAa,CAA/B;MACEiO,aAAA,GAAgB,KAAK,CAAAZ,YAAL,CAAmBjX,GAAnB,CAAuB+L,SAAvB,CADlB;IAEA,IAAI8L,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAM1Y,OAAA,GAAU,KAAKuH,cAAL,CACbS,eADa,CACG,SADH,EACc;MAC1B4E;IAD0B,CADd,EAIbjG,IAJa,CAIRkG,QAAA,IAAY;MAChB,IAAI,KAAKjG,SAAT,EAAoB;QAClB,MAAM,IAAItS,KAAJ,CAAU,qBAAV,CAAN;MADkB;MAGpB,MAAM2kB,IAAA,GAAO,IAAIxM,YAAJ,CACXG,SADW,EAEXC,QAFW,EAGX,IAHW,EAIX,KAAKqL,OAAL,CAAa7S,MAJF,CAAb;MAMA,KAAK,CAAAwS,SAAL,CAAgBrI,GAAhB,CAAoB5C,SAApB,EAA+BqM,IAA/B;MACA,OAAOA,IAAP;IAXgB,CAJJ,CAAhB;IAiBA,KAAK,CAAAnB,YAAL,CAAmBtI,GAAnB,CAAuB5C,SAAvB,EAAkC5M,OAAlC;IACA,OAAOA,OAAP;EAhCkB;EAmCpB0K,aAAaC,GAAb,EAAkB;IAChB,IACE,OAAOA,GAAP,KAAe,QAAf,IACAA,GAAA,KAAQ,IADR,IAEA,CAAC9W,MAAA,CAAOC,SAAP,CAAiB6W,GAAA,CAAImR,GAArB,CAFD,IAGAnR,GAAA,CAAImR,GAAJ,GAAU,CAHV,IAIA,CAACjoB,MAAA,CAAOC,SAAP,CAAiB6W,GAAA,CAAIoR,GAArB,CAJD,IAKApR,GAAA,CAAIoR,GAAJ,GAAU,CANZ,EAOE;MACA,OAAO9b,OAAA,CAAQE,MAAR,CAAe,IAAI7L,KAAJ,CAAU,4BAAV,CAAf,CAAP;IADA;IAGF,OAAO,KAAKiT,cAAL,CAAoBS,eAApB,CAAoC,cAApC,EAAoD;MACzD8T,GAAA,EAAKnR,GAAA,CAAImR,GADgD;MAEzDC,GAAA,EAAKpR,GAAA,CAAIoR;IAFgD,CAApD,CAAP;EAXgB;EAiBlB5N,eAAevB,SAAf,EAA0BwB,MAA1B,EAAkC;IAChC,OAAO,KAAK7G,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD;MAC3D4E,SAD2D;MAE3DwB;IAF2D,CAAtD,CAAP;EADgC;EAOlC9B,gBAAA,EAAkB;IAChB,OAAO,KAAK,CAAAmM,iBAAL,CAAwB,iBAAxB,CAAP;EADgB;EAIlBlM,aAAA,EAAe;IACb,OAAO,KAAK,CAAAkM,iBAAL,CAAwB,cAAxB,CAAP;EADa;EAIfjM,uBAAA,EAAyB;IACvB,OAAO,KAAKjF,cAAL,CAAoBS,eAApB,CAAoC,wBAApC,EAA8D,IAA9D,CAAP;EADuB;EAIzB4C,gBAAA,EAAkB;IAChB,OAAO,KAAKrD,cAAL,CAAoBS,eAApB,CAAoC,iBAApC,EAAuD,IAAvD,CAAP;EADgB;EAIlB6C,eAAeC,EAAf,EAAmB;IACjB,IAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;MAC1B,OAAO7K,OAAA,CAAQE,MAAR,CAAe,IAAI7L,KAAJ,CAAU,8BAAV,CAAf,CAAP;IAD0B;IAG5B,OAAO,KAAKiT,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD;MAC3D8C;IAD2D,CAAtD,CAAP;EAJiB;EASnBC,cAAA,EAAgB;IACd,OAAO,KAAKxD,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBgD,cAAA,EAAgB;IACd,OAAO,KAAKzD,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBiD,YAAA,EAAc;IACZ,OAAO,KAAK1D,cAAL,CAAoBS,eAApB,CAAoC,aAApC,EAAmD,IAAnD,CAAP;EADY;EAIdkD,qBAAA,EAAuB;IACrB,OAAO,KAAK3D,cAAL,CAAoBS,eAApB,CAAoC,sBAApC,EAA4D,IAA5D,CAAP;EADqB;EAIvBmD,cAAA,EAAgB;IACd,OAAO,KAAK5D,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBoD,eAAA,EAAiB;IACf,OAAO,KAAK7D,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD,IAAtD,CAAP;EADe;EAIjBqD,cAAA,EAAgB;IACd,OAAO,KAAK9D,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBuD,gBAAA,EAAkB;IAChB,OAAO,KAAKhE,cAAL,CAAoBS,eAApB,CAAoC,iBAApC,EAAuD,IAAvD,CAAP;EADgB;EAIlBwG,iBAAiB5B,SAAjB,EAA4B;IAC1B,OAAO,KAAKrF,cAAL,CAAoBS,eAApB,CAAoC,kBAApC,EAAwD;MAC7D4E;IAD6D,CAAxD,CAAP;EAD0B;EAM5BiG,cAAcjG,SAAd,EAAyB;IACvB,OAAO,KAAKrF,cAAL,CAAoBS,eAApB,CAAoC,eAApC,EAAqD;MAC1D4E;IAD0D,CAArD,CAAP;EADuB;EAMzBpB,WAAA,EAAa;IACX,OAAO,KAAKjE,cAAL,CAAoBS,eAApB,CAAoC,YAApC,EAAkD,IAAlD,CAAP;EADW;EAIbyD,yBAAA,EAA2B;IACzB,OAAO,KAAKlE,cAAL,CACJS,eADI,CACY,0BADZ,EACwC,IADxC,EAEJrB,IAFI,CAECqV,OAAA,IAAW;MACf,OAAO,IAAIC,8CAAJ,CAA0BD,OAA1B,CAAP;IADe,CAFZ,CAAP;EADyB;EAQ3BtQ,eAAA,EAAiB;IACf,OAAO,KAAKnE,cAAL,CAAoBS,eAApB,CAAoC,gBAApC,EAAsD,IAAtD,CAAP;EADe;EAIjB2D,YAAA,EAAc;IACZ,MAAMtV,IAAA,GAAO,aAAb;MACEqiB,aAAA,GAAgB,KAAK,CAAAd,cAAL,CAAqB/W,GAArB,CAAyBxK,IAAzB,CADlB;IAEA,IAAIqiB,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAM1Y,OAAA,GAAU,KAAKuH,cAAL,CACbS,eADa,CACG3R,IADH,EACS,IADT,EAEbsQ,IAFa,CAERqV,OAAA,IAAW;MACf,OAAO;QACLhoB,IAAA,EAAMgoB,OAAA,CAAQ,CAAR,CADD;QAELE,QAAA,EAAUF,OAAA,CAAQ,CAAR,IAAa,IAAIG,kBAAJ,CAAaH,OAAA,CAAQ,CAAR,CAAb,CAAb,GAAwC,IAF7C;QAGL5U,0BAAA,EAA4B,KAAKkR,WAAL,EAAkBuD,QAAlB,IAA8B,IAHrD;QAILxB,aAAA,EAAe,KAAK/B,WAAL,EAAkB+B,aAAlB,IAAmC;MAJ7C,CAAP;IADe,CAFH,CAAhB;IAUA,KAAK,CAAAzC,cAAL,CAAqBpI,GAArB,CAAyBnZ,IAAzB,EAA+B2J,OAA/B;IACA,OAAOA,OAAP;EAjBY;EAoBd4L,YAAA,EAAc;IACZ,OAAO,KAAKrE,cAAL,CAAoBS,eAApB,CAAoC,aAApC,EAAmD,IAAnD,CAAP;EADY;EAId,MAAMmE,YAANA,CAAmBD,eAAA,GAAkB,KAArC,EAA4C;IAC1C,IAAI,KAAKtF,SAAT,EAAoB;MAClB;IADkB;IAGpB,MAAM,KAAKW,cAAL,CAAoBS,eAApB,CAAoC,SAApC,EAA+C,IAA/C,CAAN;IAEA,WAAWiR,IAAX,IAAmB,KAAK,CAAApB,SAAL,CAAgB7E,MAAhB,EAAnB,EAA6C;MAC3C,MAAMoJ,iBAAA,GAAoBnD,IAAA,CAAKhN,OAAL,EAA1B;MAEA,IAAI,CAACmQ,iBAAL,EAAwB;QACtB,MAAM,IAAI9nB,KAAJ,CACH,sBAAqB2kB,IAAA,CAAKxO,UAAW,0BADlC,CAAN;MADsB;IAHmB;IAS7C,KAAK0C,UAAL,CAAgBiG,KAAhB;IACA,IAAI,CAAClH,eAAL,EAAsB;MACpB,KAAK8L,UAAL,CAAgB5E,KAAhB;IADoB;IAGtB,KAAK,CAAAwE,cAAL,CAAqBxE,KAArB;IACA,KAAKzN,aAAL,CAAmB8C,OAAnB,CAA2C,IAA3C;EApB0C;EAuB5C,IAAI4D,aAAJA,CAAA,EAAoB;IAClB,MAAM;MAAEjH,gBAAF;MAAoBN;IAApB,IAAkC,KAAKoT,OAA7C;IACA,OAAO,IAAA1iB,YAAA,EAAO,IAAP,EAAa,eAAb,EAA8B;MACnC4P,gBADmC;MAEnCN;IAFmC,CAA9B,CAAP;EAFkB;AApuBA;AAkvBtB,MAAMuI,UAAN,CAAiB;EACf,CAAAD,IAAA,GAAQvX,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAR;EAQA,CAAA0jB,UAAWC,KAAX,EAAkB;IAChB,MAAM7mB,GAAA,GAAM,KAAK,CAAA2X,IAAL,CAAWkP,KAAX,CAAZ;IACA,IAAI7mB,GAAJ,EAAS;MACP,OAAOA,GAAP;IADO;IAGT,OAAQ,KAAK,CAAA2X,IAAL,CAAWkP,KAAX,IAAoB;MAC1B7L,UAAA,EAAY,IAAI3Q,uBAAJ,EADc;MAE1BM,IAAA,EAAM;IAFoB,CAA5B;EALgB;EAuBlBS,IAAIyb,KAAJ,EAAWzL,QAAA,GAAW,IAAtB,EAA4B;IAG1B,IAAIA,QAAJ,EAAc;MACZ,MAAMpb,GAAA,GAAM,KAAK,CAAA4mB,SAAL,CAAgBC,KAAhB,CAAZ;MACA7mB,GAAA,CAAIgb,UAAJ,CAAezQ,OAAf,CAAuB2G,IAAvB,CAA4B,MAAMkK,QAAA,CAASpb,GAAA,CAAI2K,IAAb,CAAlC;MACA,OAAO,IAAP;IAHY;IAOd,MAAM3K,GAAA,GAAM,KAAK,CAAA2X,IAAL,CAAWkP,KAAX,CAAZ;IAGA,IAAI,CAAC7mB,GAAA,EAAKgb,UAAL,CAAgB1Q,OAArB,EAA8B;MAC5B,MAAM,IAAIzL,KAAJ,CAAW,6CAA4CgoB,KAAM,GAA7D,CAAN;IAD4B;IAG9B,OAAO7mB,GAAA,CAAI2K,IAAX;EAhB0B;EAuB5B+V,IAAImG,KAAJ,EAAW;IACT,MAAM7mB,GAAA,GAAM,KAAK,CAAA2X,IAAL,CAAWkP,KAAX,CAAZ;IACA,OAAO7mB,GAAA,EAAKgb,UAAL,CAAgB1Q,OAAhB,IAA2B,KAAlC;EAFS;EAWXG,QAAQoc,KAAR,EAAelc,IAAA,GAAO,IAAtB,EAA4B;IAC1B,MAAM3K,GAAA,GAAM,KAAK,CAAA4mB,SAAL,CAAgBC,KAAhB,CAAZ;IACA7mB,GAAA,CAAI2K,IAAJ,GAAWA,IAAX;IACA3K,GAAA,CAAIgb,UAAJ,CAAevQ,OAAf;EAH0B;EAM5BkT,MAAA,EAAQ;IACN,WAAWkJ,KAAX,IAAoB,KAAK,CAAAlP,IAAzB,EAAgC;MAC9B,MAAM;QAAEhN;MAAF,IAAW,KAAK,CAAAgN,IAAL,CAAWkP,KAAX,CAAjB;MACAlc,IAAA,EAAMqb,MAAN,EAAc/B,KAAd;IAF8B;IAIhC,KAAK,CAAAtM,IAAL,GAAavX,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAb;EALM;AAxEO;AAoFjB,MAAM4jB,UAAN,CAAiB;EACf,CAAAhM,kBAAA,GAAsB,IAAtB;EAEAja,YAAYia,kBAAZ,EAAgC;IAC9B,KAAK,CAAAA,kBAAL,GAA2BA,kBAA3B;IAQA,KAAKiM,UAAL,GAAkB,IAAlB;EAT8B;EAgBhC,IAAIxc,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAuQ,kBAAL,CAAyBE,UAAzB,CAAoCzQ,OAA3C;EADY;EAWdmT,OAAOc,UAAA,GAAa,CAApB,EAAuB;IACrB,KAAK,CAAA1D,kBAAL,CAAyB4C,MAAzB,CAA8C,IAA9C,EAAoDc,UAApD;EADqB;EAQvB,IAAIhE,cAAJA,CAAA,EAAqB;IACnB,MAAM;MAAEA;IAAF,IAAqB,KAAK,CAAAM,kBAAL,CAAyBV,YAApD;IACA,IAAI,CAACI,cAAL,EAAqB;MACnB,OAAO,KAAP;IADmB;IAGrB,MAAM;MAAEhB;IAAF,IAA0B,KAAK,CAAAsB,kBAArC;IACA,OACEN,cAAA,CAAewM,IAAf,IACCxM,cAAA,CAAeyM,MAAf,IAAyBzN,mBAAA,EAAqB8C,IAArB,GAA4B,CAFxD;EANmB;AAtCN;AAxoGjBltB,kBAAA,GAAA03B,UAAA;AA+rGA,MAAM3L,kBAAN,CAAyB;EACvB,OAAO,CAAA+L,WAAP,GAAsB,IAAIC,OAAJ,EAAtB;EAEAtmB,YAAY;IACVua,QADU;IAEVhO,MAFU;IAGVuK,IAHU;IAIVD,UAJU;IAKV8B,mBALU;IAMVY,YANU;IAOVjD,SAPU;IAQVlH,aARU;IASVC,aATU;IAUVmL,wBAAA,GAA2B,KAVjB;IAWVzL,MAAA,GAAS,KAXC;IAYV6J,UAAA,GAAa;EAZH,CAAZ,EAaG;IACD,KAAK2B,QAAL,GAAgBA,QAAhB;IACA,KAAKhO,MAAL,GAAcA,MAAd;IACA,KAAKuK,IAAL,GAAYA,IAAZ;IACA,KAAKD,UAAL,GAAkBA,UAAlB;IACA,KAAK8B,mBAAL,GAA2BA,mBAA3B;IACA,KAAK4N,eAAL,GAAuB,IAAvB;IACA,KAAKhN,YAAL,GAAoBA,YAApB;IACA,KAAK/C,UAAL,GAAkBF,SAAlB;IACA,KAAKlH,aAAL,GAAqBA,aAArB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAKuH,OAAL,GAAe7H,MAAf;IACA,KAAK6J,UAAL,GAAkBA,UAAlB;IAEA,KAAK4N,OAAL,GAAe,KAAf;IACA,KAAKC,qBAAL,GAA6B,IAA7B;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKC,yBAAL,GACEnM,wBAAA,KAA6B,IAA7B,IAAqC,OAAO3I,MAAP,KAAkB,WADzD;IAEA,KAAK+U,SAAL,GAAiB,KAAjB;IACA,KAAKzM,UAAL,GAAkB,IAAI3Q,uBAAJ,EAAlB;IACA,KAAKsD,IAAL,GAAY,IAAImZ,UAAJ,CAAe,IAAf,CAAZ;IAEA,KAAKY,YAAL,GAAoB,KAAKhK,MAAL,CAAYkI,IAAZ,CAAiB,IAAjB,CAApB;IACA,KAAK+B,cAAL,GAAsB,KAAKC,SAAL,CAAehC,IAAf,CAAoB,IAApB,CAAtB;IACA,KAAKiC,kBAAL,GAA0B,KAAKC,aAAL,CAAmBlC,IAAnB,CAAwB,IAAxB,CAA1B;IACA,KAAKmC,UAAL,GAAkB,KAAKC,KAAL,CAAWpC,IAAX,CAAgB,IAAhB,CAAlB;IACA,KAAKla,OAAL,GAAe0B,MAAA,CAAO+L,aAAP,CAAqB8N,MAApC;EA3BC;EA8BH,IAAIxJ,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAKzC,UAAL,CAAgBzQ,OAAhB,CAAwB6H,KAAxB,CAA8B,YAAY,EAA1C,CAAP;EADc;EAOhBuJ,mBAAmB;IAAEF,YAAA,GAAe,KAAjB;IAAwBC;EAAxB,CAAnB,EAAoE;IAClE,IAAI,KAAK+L,SAAT,EAAoB;MAClB;IADkB;IAGpB,IAAI,KAAK/b,OAAT,EAAkB;MAChB,IAAIyP,kBAAA,CAAmB,CAAA+L,WAAnB,CAAgCxG,GAAhC,CAAoC,KAAKhV,OAAzC,CAAJ,EAAuD;QACrD,MAAM,IAAI7M,KAAJ,CACJ,qEACE,0DADF,GAEE,yBAHE,CAAN;MADqD;MAOvDsc,kBAAA,CAAmB,CAAA+L,WAAnB,CAAgC3L,GAAhC,CAAoC,KAAK7P,OAAzC;IARgB;IAWlB,IAAI,KAAK+L,OAAL,IAAgBlI,UAAA,CAAW0Y,cAAX,EAA2BzC,OAA/C,EAAwD;MACtD,KAAK0C,OAAL,GAAe3Y,UAAA,CAAW0Y,cAAX,CAA0B/kB,MAA1B,CAAiC,KAAKmU,UAAtC,CAAf;MACA,KAAK6Q,OAAL,CAAaC,IAAb,CAAkB,KAAK/N,YAAvB;MACA,KAAK8N,OAAL,CAAaE,cAAb,GAA8B,KAAKF,OAAL,CAAaG,iBAAb,EAA9B;IAHsD;IAKxD,MAAM;MAAElP,aAAF;MAAiBC,QAAjB;MAA2BngB,SAA3B;MAAsCqgB;IAAtC,IAAqD,KAAKlM,MAAhE;IAEA,KAAKkb,GAAL,GAAW,IAAIC,sBAAJ,CACTpP,aADS,EAET,KAAKzB,UAFI,EAGT,KAAKC,IAHI,EAIT,KAAK1H,aAJI,EAKT,KAAKC,aALI,EAMT;MAAEwL;IAAF,CANS,EAOT,KAAKlC,mBAPI,EAQT,KAAKC,UARI,CAAX;IAUA,KAAK6O,GAAL,CAASE,YAAT,CAAsB;MACpBvvB,SADoB;MAEpBmgB,QAFoB;MAGpBqC,YAHoB;MAIpBnC;IAJoB,CAAtB;IAMA,KAAK8N,eAAL,GAAuB,CAAvB;IACA,KAAKG,aAAL,GAAqB,IAArB;IACA,KAAKD,qBAAL;EAxCkE;EA2CpE5J,OAAO/C,KAAA,GAAQ,IAAf,EAAqB6D,UAAA,GAAa,CAAlC,EAAqC;IACnC,KAAK6I,OAAL,GAAe,KAAf;IACA,KAAKI,SAAL,GAAiB,IAAjB;IACA,KAAKa,GAAL,EAAUG,UAAV;IAEA,IAAI,KAAK/c,OAAT,EAAkB;MAChByP,kBAAA,CAAmB,CAAA+L,WAAnB,CAAgCrM,MAAhC,CAAuC,KAAKnP,OAA5C;IADgB;IAGlB,KAAK0P,QAAL,CACET,KAAA,IACE,IAAI2D,0CAAJ,CACG,6BAA4B,KAAKjH,UAAL,GAAkB,CAA/C,EADF,EAEEmH,UAFF,CAFJ;EARmC;EAiBrC5C,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAK2L,aAAV,EAAyB;MACvB,KAAKD,qBAAL,KAA+B,KAAKK,cAApC;MACA;IAFuB;IAIzB,KAAKO,OAAL,EAAcQ,kBAAd,CAAiC,KAAKtO,YAAtC;IAEA,IAAI,KAAKiN,OAAT,EAAkB;MAChB;IADgB;IAGlB,KAAKO,SAAL;EAVoB;EAatBA,UAAA,EAAY;IACV,KAAKP,OAAL,GAAe,IAAf;IACA,IAAI,KAAKI,SAAT,EAAoB;MAClB;IADkB;IAGpB,IAAI,KAAK9Z,IAAL,CAAUoZ,UAAd,EAA0B;MACxB,KAAKpZ,IAAL,CAAUoZ,UAAV,CAAqB,KAAKc,kBAA1B;IADwB,CAA1B,MAEO;MACL,KAAKC,aAAL;IADK;EAPG;EAYZA,cAAA,EAAgB;IACd,IAAI,KAAKN,yBAAT,EAAoC;MAClC9U,MAAA,CAAOiW,qBAAP,CAA6B,MAAM;QACjC,KAAKZ,UAAL,GAAkB3V,KAAlB,CAAwB,KAAKsV,YAA7B;MADiC,CAAnC;IADkC,CAApC,MAIO;MACLld,OAAA,CAAQC,OAAR,GAAkByG,IAAlB,CAAuB,KAAK6W,UAA5B,EAAwC3V,KAAxC,CAA8C,KAAKsV,YAAnD;IADK;EALO;EAUhB,MAAMM,KAANA,CAAA,EAAc;IACZ,IAAI,KAAKP,SAAT,EAAoB;MAClB;IADkB;IAGpB,KAAKL,eAAL,GAAuB,KAAKkB,GAAL,CAASM,mBAAT,CACrB,KAAKxO,YADgB,EAErB,KAAKgN,eAFgB,EAGrB,KAAKO,cAHgB,EAIrB,KAAKO,OAJgB,CAAvB;IAMA,IAAI,KAAKd,eAAL,KAAyB,KAAKhN,YAAL,CAAkBE,SAAlB,CAA4B5a,MAAzD,EAAiE;MAC/D,KAAK2nB,OAAL,GAAe,KAAf;MACA,IAAI,KAAKjN,YAAL,CAAkBG,SAAtB,EAAiC;QAC/B,KAAK+N,GAAL,CAASG,UAAT,CAAoB,KAAKhP,UAAzB;QACA,IAAI,KAAK/N,OAAT,EAAkB;UAChByP,kBAAA,CAAmB,CAAA+L,WAAnB,CAAgCrM,MAAhC,CAAuC,KAAKnP,OAA5C;QADgB;QAGlB,KAAK0P,QAAL;MAL+B;IAF8B;EAVrD;AApJS;AA4KzB,MAAMyN,OAAA,GAC8B,SADpC;AA32GAz5B,eAAA,GAAAy5B,OAAA;AA82GA,MAAMC,KAAA,GAC8B,WADpC;AA92GA15B,aAAA,GAAA05B,KAAA;;;;;;;;;;;;ACeA,IAAAzd,KAAA,GAAAC,mBAAA;AACA,IAAAyd,OAAA,GAAAzd,mBAAA;AACA,IAAA0d,WAAA,GAAA1d,mBAAA;AAEA,MAAM8X,iBAAA,GAAoBhjB,MAAA,CAAO6oB,MAAP,CAAc;EACtChmB,GAAA,EAAK,IADiC;EAEtCsgB,IAAA,EAAM,EAFgC;EAGtCnF,SAAA,EAAWzc;AAH2B,CAAd,CAA1B;AAnBAvS,yBAAA,GAAAg0B,iBAAA;AA4BA,MAAMF,iBAAN,CAAwB;EACtB,CAAAgG,QAAA,GAAY,KAAZ;EAEA,CAAAC,OAAA,GAAW,IAAIne,GAAJ,EAAX;EAEAnK,YAAA,EAAc;IAKZ,KAAKuoB,aAAL,GAAqB,IAArB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IACA,KAAKC,kBAAL,GAA0B,IAA1B;EAPY;EAgBdC,SAASpmB,GAAT,EAAcqmB,YAAd,EAA4B;IAC1B,MAAMtpB,KAAA,GAAQ,KAAK,CAAAipB,OAAL,CAAc/d,GAAd,CAAkBjI,GAAlB,CAAd;IACA,IAAIjD,KAAA,KAAUyB,SAAd,EAAyB;MACvB,OAAO6nB,YAAP;IADuB;IAIzB,OAAOppB,MAAA,CAAO6c,MAAP,CAAcuM,YAAd,EAA4BtpB,KAA5B,CAAP;EAN0B;EAc5BupB,YAAYtmB,GAAZ,EAAiB;IACf,OAAO,KAAK,CAAAgmB,OAAL,CAAc/d,GAAd,CAAkBjI,GAAlB,CAAP;EADe;EAQjBumB,OAAOvmB,GAAP,EAAY;IACV,KAAK,CAAAgmB,OAAL,CAActO,MAAd,CAAqB1X,GAArB;IAEA,IAAI,KAAK,CAAAgmB,OAAL,CAAc7M,IAAd,KAAuB,CAA3B,EAA8B;MAC5B,KAAKoH,aAAL;IAD4B;IAI9B,IAAI,OAAO,KAAK4F,kBAAZ,KAAmC,UAAvC,EAAmD;MACjD,WAAWppB,KAAX,IAAoB,KAAK,CAAAipB,OAAL,CAAc5L,MAAd,EAApB,EAA4C;QAC1C,IAAIrd,KAAA,YAAiBypB,wBAArB,EAAuC;UACrC;QADqC;MADG;MAK5C,KAAKL,kBAAL,CAAwB,IAAxB;IANiD;EAPzC;EAsBZM,SAASzmB,GAAT,EAAcjD,KAAd,EAAqB;IACnB,MAAMF,GAAA,GAAM,KAAK,CAAAmpB,OAAL,CAAc/d,GAAd,CAAkBjI,GAAlB,CAAZ;IACA,IAAI+lB,QAAA,GAAW,KAAf;IACA,IAAIlpB,GAAA,KAAQ2B,SAAZ,EAAuB;MACrB,WAAW,CAACkoB,KAAD,EAAQrX,GAAR,CAAX,IAA2BpS,MAAA,CAAO0pB,OAAP,CAAe5pB,KAAf,CAA3B,EAAkD;QAChD,IAAIF,GAAA,CAAI6pB,KAAJ,MAAerX,GAAnB,EAAwB;UACtB0W,QAAA,GAAW,IAAX;UACAlpB,GAAA,CAAI6pB,KAAJ,IAAarX,GAAb;QAFsB;MADwB;IAD7B,CAAvB,MAOO;MACL0W,QAAA,GAAW,IAAX;MACA,KAAK,CAAAC,OAAL,CAAcpP,GAAd,CAAkB5W,GAAlB,EAAuBjD,KAAvB;IAFK;IAIP,IAAIgpB,QAAJ,EAAc;MACZ,KAAK,CAAAa,WAAL;IADY;IAId,IACE7pB,KAAA,YAAiBypB,wBAAjB,IACA,OAAO,KAAKL,kBAAZ,KAAmC,UAFrC,EAGE;MACA,KAAKA,kBAAL,CAAwBppB,KAAA,CAAMW,WAAN,CAAkBmpB,KAA1C;IADA;EArBiB;EA+BrBtJ,IAAIvd,GAAJ,EAAS;IACP,OAAO,KAAK,CAAAgmB,OAAL,CAAczI,GAAd,CAAkBvd,GAAlB,CAAP;EADO;EAOT8mB,OAAA,EAAS;IACP,OAAO,KAAK,CAAAd,OAAL,CAAc7M,IAAd,GAAqB,CAArB,GAAyB,IAAAtZ,mBAAA,EAAc,KAAK,CAAAmmB,OAAnB,CAAzB,GAAwD,IAA/D;EADO;EAOTe,OAAOlqB,GAAP,EAAY;IACV,WAAW,CAACmD,GAAD,EAAMqP,GAAN,CAAX,IAAyBpS,MAAA,CAAO0pB,OAAP,CAAe9pB,GAAf,CAAzB,EAA8C;MAC5C,KAAK4pB,QAAL,CAAczmB,GAAd,EAAmBqP,GAAnB;IAD4C;EADpC;EAMZ,IAAI8J,IAAJA,CAAA,EAAW;IACT,OAAO,KAAK,CAAA6M,OAAL,CAAc7M,IAArB;EADS;EAIX,CAAAyN,YAAA,EAAe;IACb,IAAI,CAAC,KAAK,CAAAb,QAAV,EAAqB;MACnB,KAAK,CAAAA,QAAL,GAAiB,IAAjB;MACA,IAAI,OAAO,KAAKE,aAAZ,KAA8B,UAAlC,EAA8C;QAC5C,KAAKA,aAAL;MAD4C;IAF3B;EADR;EASf1F,cAAA,EAAgB;IACd,IAAI,KAAK,CAAAwF,QAAT,EAAoB;MAClB,KAAK,CAAAA,QAAL,GAAiB,KAAjB;MACA,IAAI,OAAO,KAAKG,eAAZ,KAAgC,UAApC,EAAgD;QAC9C,KAAKA,eAAL;MAD8C;IAF9B;EADN;EAYhB,IAAIc,KAAJA,CAAA,EAAY;IACV,OAAO,IAAI9G,sBAAJ,CAA2B,IAA3B,CAAP;EADU;EAQZ,IAAIC,YAAJA,CAAA,EAAmB;IACjB,IAAI,KAAK,CAAA6F,OAAL,CAAc7M,IAAd,KAAuB,CAA3B,EAA8B;MAC5B,OAAO8G,iBAAP;IAD4B;IAG9B,MAAMngB,GAAA,GAAM,IAAI+H,GAAJ,EAAZ;MACEuY,IAAA,GAAO,IAAI6G,0BAAJ,EADT;MAEEhM,SAAA,GAAY,EAFd;IAGA,WAAW,CAACjb,GAAD,EAAMqP,GAAN,CAAX,IAAyB,KAAK,CAAA2W,OAA9B,EAAwC;MACtC,MAAMkB,UAAA,GACJ7X,GAAA,YAAemX,wBAAf,GAAkCnX,GAAA,CAAI8X,SAAJ,EAAlC,GAAoD9X,GADtD;MAEA,IAAI6X,UAAJ,EAAgB;QACdpnB,GAAA,CAAI8W,GAAJ,CAAQ5W,GAAR,EAAaknB,UAAb;QAEA9G,IAAA,CAAKgH,MAAL,CAAY,GAAGpnB,GAAI,IAAGqnB,IAAA,CAAKC,SAAL,CAAeJ,UAAf,CAAV,EAAZ;QAEA,IAAIA,UAAA,CAAWrE,MAAf,EAAuB;UACrB5H,SAAA,CAAU7b,IAAV,CAAe8nB,UAAA,CAAWrE,MAA1B;QADqB;MALT;IAHsB;IAaxC,OAAO/iB,GAAA,CAAIqZ,IAAJ,GAAW,CAAX,GACH;MAAErZ,GAAF;MAAOsgB,IAAA,EAAMA,IAAA,CAAKmH,SAAL,EAAb;MAA+BtM;IAA/B,CADG,GAEHgF,iBAFJ;EApBiB;AArJG;AA5BxBh0B,yBAAA,GAAA8zB,iBAAA;AAgNA,MAAMG,sBAAN,SAAqCH,iBAArC,CAAuD;EACrD,CAAAI,YAAA;EAEAziB,YAAY8pB,MAAZ,EAAoB;IAClB;IACA,MAAM;MAAE1nB,GAAF;MAAOsgB,IAAP;MAAanF;IAAb,IAA2BuM,MAAA,CAAOrH,YAAxC;IAEA,MAAMsH,KAAA,GAAQ1L,eAAA,CACZjc,GADY,EAIVmb,SAFF,GAGI;MAAEY,QAAA,EAAUZ;IAAZ,CAHJ,GAII,IANQ,CAAd;IAQA,KAAK,CAAAkF,YAAL,GAAqB;MAAErgB,GAAA,EAAK2nB,KAAP;MAAcrH,IAAd;MAAoBnF;IAApB,CAArB;EAZkB;EAmBpB,IAAI+L,KAAJA,CAAA,EAAY;IACV,IAAAvrB,iBAAA,EAAY,8CAAZ;EADU;EAQZ,IAAI0kB,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAAA,YAAZ;EADiB;AA9BkC;AAhNvDl0B,8BAAA,GAAAi0B,sBAAA;;;;;;;;;;;;ACoBA,IAAAwH,MAAA,GAAAvf,mBAAA;AACA,IAAAD,KAAA,GAAAC,mBAAA;AAcA,MAAMqe,gBAAN,CAAuB;EACrB,CAAAmB,YAAA,GAAgB,KAAKC,OAAL,CAAanF,IAAb,CAAkB,IAAlB,CAAhB;EAEA,CAAAoF,aAAA,GAAiB,KAAKC,QAAL,CAAcrF,IAAd,CAAmB,IAAnB,CAAjB;EAEA,CAAAsF,eAAA,GAAmB,KAAnB;EAEA,CAAAC,SAAA,GAAa,KAAb;EAEA,CAAAC,YAAA,GAAgB,KAAhB;EAEAC,UAAA,GAAa,IAAb;EAEA,CAAAC,MAAA,GAAU3B,gBAAA,CAAiB4B,OAAjB,EAAV;EAEA,OAAOC,aAAP,GAAuB,IAAIC,mBAAJ,EAAvB;EAEA,OAAOF,OAAP,GAAiB,CAAjB;EAKA1qB,YAAY6qB,UAAZ,EAAwB;IACtB,IAAI,KAAK7qB,WAAL,KAAqB8oB,gBAAzB,EAA2C;MACzC,IAAA/qB,iBAAA,EAAY,qCAAZ;IADyC;IAI3C,KAAK+rB,MAAL,GAAce,UAAA,CAAWf,MAAzB;IACA,KAAKtV,EAAL,GAAUqW,UAAA,CAAWrW,EAArB;IACA,KAAK4Q,KAAL,GAAa,KAAKC,MAAL,GAAc,IAA3B;IACA,KAAK/O,SAAL,GAAiBuU,UAAA,CAAWf,MAAX,CAAkBxT,SAAnC;IACA,KAAKvW,IAAL,GAAY8qB,UAAA,CAAW9qB,IAAvB;IACA,KAAK+qB,GAAL,GAAW,IAAX;IACA,KAAKN,UAAL,GAAkBK,UAAA,CAAWE,SAA7B;IACA,KAAKC,mBAAL,GAA2B,IAA3B;IAEA,MAAM;MACJzT,QADI;MAEJ0T,OAAA,EAAS;QAAEC,SAAF;QAAaC,UAAb;QAAyBC,KAAzB;QAAgCC;MAAhC;IAFL,IAGF,KAAKvB,MAAL,CAAYvR,QAHhB;IAKA,KAAKhB,QAAL,GAAgBA,QAAhB;IACA,KAAK+T,YAAL,GACG,OAAM/T,QAAN,GAAiB,KAAKiT,UAAL,CAAgBe,cAAhB,CAA+BhU,QAAhD,IAA4D,GAD/D;IAEA,KAAKiU,cAAL,GAAsB,CAACN,SAAD,EAAYC,UAAZ,CAAtB;IACA,KAAKM,eAAL,GAAuB,CAACL,KAAD,EAAQC,KAAR,CAAvB;IAEA,MAAM,CAACjG,KAAD,EAAQC,MAAR,IAAkB,KAAKqG,gBAA7B;IACA,KAAKC,CAAL,GAASd,UAAA,CAAWc,CAAX,GAAevG,KAAxB;IACA,KAAKwG,CAAL,GAASf,UAAA,CAAWe,CAAX,GAAevG,MAAxB;IAEA,KAAKwG,eAAL,GAAuB,KAAvB;IACA,KAAKC,OAAL,GAAe,KAAf;EA9BsB;EAiCxB,WAAWC,iBAAXA,CAAA,EAA+B;IAC7B,OAAO,IAAA7sB,YAAA,EACL,IADK,EAEL,mBAFK,EAGL,KAAKyrB,aAAL,CAAmBqB,UAAnB,CAA8B,YAA9B,CAHK,CAAP;EAD6B;EAQ/B,OAAOC,uBAAPA,CAA+BC,MAA/B,EAAuC;IACrC,MAAMC,UAAA,GAAa,IAAIC,UAAJ,CAAe;MAChC5X,EAAA,EAAI0X,MAAA,CAAOpC,MAAP,CAAcuC,SAAd,EAD4B;MAEhCvC,MAAA,EAAQoC,MAAA,CAAOpC,MAFiB;MAGhCiB,SAAA,EAAWmB,MAAA,CAAO1B;IAHc,CAAf,CAAnB;IAKA2B,UAAA,CAAWnB,mBAAX,GAAiCkB,MAAA,CAAOlB,mBAAxC;IACAmB,UAAA,CAAWL,OAAX,GAAqB,IAArB;IACAK,UAAA,CAAW3B,UAAX,CAAsB8B,sBAAtB,CAA6CH,UAA7C;EARqC;EAevCI,YAAYhgB,MAAZ,EAAoB;IAClB,KAAKie,UAAL,CAAgB+B,WAAhB,CAA4BhgB,MAA5B;EADkB;EAIpB,IAAIigB,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKhC,UAAL,CAAgBgC,YAAvB;EADiB;EAOnBC,gBAAA,EAAkB;IAChB,KAAK3B,GAAL,CAAS4B,KAAT,CAAejC,MAAf,GAAwB,CAAxB;EADgB;EAOlBkC,gBAAA,EAAkB;IAChB,KAAK7B,GAAL,CAAS4B,KAAT,CAAejC,MAAf,GAAwB,KAAK,CAAAA,MAA7B;EADgB;EAIlBmC,UAAU9C,MAAV,EAAkB;IAChB,IAAIA,MAAA,KAAW,IAAf,EAAqB;MACnB,KAAKxT,SAAL,GAAiBwT,MAAA,CAAOxT,SAAxB;MACA,KAAKkV,cAAL,GAAsB1B,MAAA,CAAO0B,cAA7B;IAFmB;IAIrB,KAAK1B,MAAL,GAAcA,MAAd;EALgB;EAWlBI,QAAQ9L,KAAR,EAAe;IACb,IAAI,CAAC,KAAK,CAAAiM,eAAV,EAA4B;MAC1B,KAAKP,MAAL,CAAY+C,WAAZ,CAAwB,IAAxB;IAD0B,CAA5B,MAEO;MACL,KAAK,CAAAxC,eAAL,GAAwB,KAAxB;IADK;EAHM;EAYfD,SAAShM,KAAT,EAAgB;IACd,IAAI,CAAC,KAAKyN,eAAV,EAA2B;MACzB;IADyB;IAQ3B,MAAMiB,MAAA,GAAS1O,KAAA,CAAM2O,aAArB;IACA,IAAID,MAAA,EAAQE,OAAR,CAAiB,IAAG,KAAKxY,EAAT,EAAhB,CAAJ,EAAoC;MAClC;IADkC;IAIpC4J,KAAA,CAAM6O,cAAN;IAEA,IAAI,CAAC,KAAKnD,MAAL,EAAaoD,mBAAlB,EAAuC;MACrC,KAAKC,cAAL;IADqC;EAhBzB;EAqBhBA,eAAA,EAAiB;IACf,IAAI,KAAKC,OAAL,EAAJ,EAAoB;MAClB,KAAKvE,MAAL;IADkB,CAApB,MAEO;MACL,KAAKwE,MAAL;IADK;EAHQ;EAWjBA,OAAA,EAAS;IACP,KAAKf,sBAAL;EADO;EAITA,uBAAA,EAAyB;IACvB,KAAK9B,UAAL,CAAgB8B,sBAAhB,CAAuC,IAAvC;EADuB;EAQzBgB,UAAUlP,KAAV,EAAiB;IACf,MAAMtY,IAAA,GAAO,KAAKgkB,MAAL,CAAYgB,GAAZ,CAAgByC,qBAAhB,EAAb;IACA,KAAKC,MAAL,GAAcpP,KAAA,CAAMqP,OAAN,GAAgB3nB,IAAA,CAAK6lB,CAAnC;IACA,KAAK+B,MAAL,GAActP,KAAA,CAAMuP,OAAN,GAAgB7nB,IAAA,CAAK8lB,CAAnC;IACAxN,KAAA,CAAMwP,YAAN,CAAmBC,OAAnB,CAA2B,YAA3B,EAAyC,KAAKrZ,EAA9C;IACA4J,KAAA,CAAMwP,YAAN,CAAmBE,aAAnB,GAAmC,MAAnC;EALe;EAejBC,MAAMpC,CAAN,EAASC,CAAT,EAAYoC,EAAZ,EAAgBC,EAAhB,EAAoB;IAClB,MAAM,CAAC7I,KAAD,EAAQC,MAAR,IAAkB,KAAKqG,gBAA7B;IACA,CAACsC,EAAD,EAAKC,EAAL,IAAW,KAAKC,uBAAL,CAA6BF,EAA7B,EAAiCC,EAAjC,CAAX;IAEA,KAAKtC,CAAL,GAAU,CAAAA,CAAA,GAAIqC,EAAJ,IAAU5I,KAApB;IACA,KAAKwG,CAAL,GAAU,CAAAA,CAAA,GAAIqC,EAAJ,IAAU5I,MAApB;IAEA,KAAKyF,GAAL,CAAS4B,KAAT,CAAeyB,IAAf,GAAsB,GAAG,MAAM,KAAKxC,CAAE,GAAtC;IACA,KAAKb,GAAL,CAAS4B,KAAT,CAAe0B,GAAf,GAAqB,GAAG,MAAM,KAAKxC,CAAE,GAArC;EARkB;EAgBpByC,UAAU1C,CAAV,EAAaC,CAAb,EAAgB;IACd,MAAM,CAACxG,KAAD,EAAQC,MAAR,IAAkB,KAAKqG,gBAA7B;IACA,CAACC,CAAD,EAAIC,CAAJ,IAAS,KAAKsC,uBAAL,CAA6BvC,CAA7B,EAAgCC,CAAhC,CAAT;IAEA,KAAKD,CAAL,IAAUA,CAAA,GAAIvG,KAAd;IACA,KAAKwG,CAAL,IAAUA,CAAA,GAAIvG,MAAd;IAEA,KAAKyF,GAAL,CAAS4B,KAAT,CAAeyB,IAAf,GAAsB,GAAG,MAAM,KAAKxC,CAAE,GAAtC;IACA,KAAKb,GAAL,CAAS4B,KAAT,CAAe0B,GAAf,GAAqB,GAAG,MAAM,KAAKxC,CAAE,GAArC;EARc;EAgBhBsC,wBAAwBvC,CAAxB,EAA2BC,CAA3B,EAA8B;IAC5B,QAAQ,KAAK0C,cAAb;MACE,KAAK,EAAL;QACE,OAAO,CAAC1C,CAAD,EAAI,CAACD,CAAL,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAAC,CAACA,CAAF,EAAK,CAACC,CAAN,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAAC,CAACA,CAAF,EAAKD,CAAL,CAAP;MACF;QACE,OAAO,CAACA,CAAD,EAAIC,CAAJ,CAAP;IARJ;EAD4B;EAa9B,IAAI2C,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAK/D,UAAL,CAAgBe,cAAhB,CAA+BiD,SAAtC;EADgB;EAIlB,IAAIF,cAAJA,CAAA,EAAqB;IACnB,OAAQ,MAAK9D,UAAL,CAAgBe,cAAhB,CAA+BhU,QAA/B,GAA0C,KAAK+T,YAA/C,IAA+D,GAAvE;EADmB;EAIrB,IAAII,gBAAJA,CAAA,EAAuB;IACrB,MAAM;MAAE8C;IAAF,IAAgB,KAAKhE,UAAL,CAAgBe,cAAtC;IACA,MAAM,CAACL,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;IACA,OAAO,CAACN,SAAA,GAAYsD,SAAb,EAAwBrD,UAAA,GAAaqD,SAArC,CAAP;EAHqB;EAWvBC,QAAQrJ,KAAR,EAAeC,MAAf,EAAuB;IACrB,MAAM,CAACqJ,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;IACA,KAAKZ,GAAL,CAAS4B,KAAT,CAAetH,KAAf,GAAuB,GAAI,MAAMA,KAAP,GAAgBsJ,WAAY,GAAtD;IACA,KAAK5D,GAAL,CAAS4B,KAAT,CAAerH,MAAf,GAAwB,GAAI,MAAMA,MAAP,GAAiBsJ,YAAa,GAAzD;EAHqB;EAMvBC,QAAA,EAAU;IACR,MAAM;MAAElC;IAAF,IAAY,KAAK5B,GAAvB;IACA,MAAM;MAAEzF,MAAF;MAAUD;IAAV,IAAoBsH,KAA1B;IACA,MAAMmC,YAAA,GAAezJ,KAAA,CAAM0J,QAAN,CAAe,GAAf,CAArB;IACA,MAAMC,aAAA,GAAgB1J,MAAA,CAAOyJ,QAAP,CAAgB,GAAhB,CAAtB;IACA,IAAID,YAAA,IAAgBE,aAApB,EAAmC;MACjC;IADiC;IAInC,MAAM,CAACL,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;IACA,IAAI,CAACmD,YAAL,EAAmB;MACjBnC,KAAA,CAAMtH,KAAN,GAAc,GAAI,MAAM4J,UAAA,CAAW5J,KAAX,CAAP,GAA4BsJ,WAAY,GAAzD;IADiB;IAGnB,IAAI,CAACK,aAAL,EAAoB;MAClBrC,KAAA,CAAMrH,MAAN,GAAe,GAAI,MAAM2J,UAAA,CAAW3J,MAAX,CAAP,GAA6BsJ,YAAa,GAA5D;IADkB;EAbZ;EAsBVM,sBAAA,EAAwB;IACtB,OAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EADsB;EAQxB5W,OAAA,EAAS;IACP,KAAKyS,GAAL,GAAWnc,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAX;IACA,KAAKpE,GAAL,CAASqE,YAAT,CAAsB,sBAAtB,EAA+C,OAAM,KAAK5X,QAAX,IAAuB,GAAtE;IACA,KAAKuT,GAAL,CAASsE,SAAT,GAAqB,KAAKrvB,IAA1B;IACA,KAAK+qB,GAAL,CAASqE,YAAT,CAAsB,IAAtB,EAA4B,KAAK3a,EAAjC;IACA,KAAKsW,GAAL,CAASqE,YAAT,CAAsB,UAAtB,EAAkC,CAAlC;IAEA,KAAKxC,eAAL;IAEA,KAAK7B,GAAL,CAASvM,gBAAT,CAA0B,SAA1B,EAAqC,KAAK,CAAA0L,YAA1C;IACA,KAAKa,GAAL,CAASvM,gBAAT,CAA0B,UAA1B,EAAsC,KAAK,CAAA4L,aAA3C;IAEA,MAAM,CAAC6D,EAAD,EAAKC,EAAL,IAAW,KAAKgB,qBAAL,EAAjB;IACA,KAAKZ,SAAL,CAAeL,EAAf,EAAmBC,EAAnB;IAEA,IAAAoB,iBAAA,EAAW,IAAX,EAAiB,KAAKvE,GAAtB,EAA2B,CAAC,WAAD,EAAc,aAAd,CAA3B;IAEA,OAAO,KAAKA,GAAZ;EAjBO;EAwBTwE,YAAYlR,KAAZ,EAAmB;IACjB,MAAM;MAAEhb;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,IAAImb,KAAA,CAAMmR,MAAN,KAAiB,CAAjB,IAAuBnR,KAAA,CAAMoR,OAAN,IAAiBpsB,KAA5C,EAAoD;MAElDgb,KAAA,CAAM6O,cAAN;MACA;IAHkD;IAMpD,IACG7O,KAAA,CAAMoR,OAAN,IAAiB,CAACpsB,KAAnB,IACAgb,KAAA,CAAMqR,QADN,IAECrR,KAAA,CAAMsR,OAAN,IAAiBtsB,KAHpB,EAIE;MACA,KAAK0mB,MAAL,CAAY6F,cAAZ,CAA2B,IAA3B;IADA,CAJF,MAMO;MACL,KAAK7F,MAAL,CAAY+C,WAAZ,CAAwB,IAAxB;IADK;IAIP,KAAK,CAAAxC,eAAL,GAAwB,IAAxB;EAlBiB;EAqBnBuF,QAAQ5B,EAAR,EAAYC,EAAZ,EAAgB;IACd,MAAM3W,KAAA,GAAQ,KAAKiX,WAAnB;IACA,MAAM,CAACrD,SAAD,EAAYC,UAAZ,IAA0B,KAAKK,cAArC;IACA,MAAM,CAACJ,KAAD,EAAQC,KAAR,IAAiB,KAAKI,eAA5B;IACA,MAAMoE,MAAA,GAAS7B,EAAA,GAAK1W,KAApB;IACA,MAAMwY,MAAA,GAAS7B,EAAA,GAAK3W,KAApB;IACA,MAAMqU,CAAA,GAAI,KAAKA,CAAL,GAAST,SAAnB;IACA,MAAMU,CAAA,GAAI,KAAKA,CAAL,GAAST,UAAnB;IACA,MAAM/F,KAAA,GAAQ,KAAKA,KAAL,GAAa8F,SAA3B;IACA,MAAM7F,MAAA,GAAS,KAAKA,MAAL,GAAc8F,UAA7B;IAEA,QAAQ,KAAK5T,QAAb;MACE,KAAK,CAAL;QACE,OAAO,CACLoU,CAAA,GAAIkE,MAAJ,GAAazE,KADR,EAELD,UAAA,GAAaS,CAAb,GAAiBkE,MAAjB,GAA0BzK,MAA1B,GAAmCgG,KAF9B,EAGLM,CAAA,GAAIkE,MAAJ,GAAazK,KAAb,GAAqBgG,KAHhB,EAILD,UAAA,GAAaS,CAAb,GAAiBkE,MAAjB,GAA0BzE,KAJrB,CAAP;MAMF,KAAK,EAAL;QACE,OAAO,CACLM,CAAA,GAAImE,MAAJ,GAAa1E,KADR,EAELD,UAAA,GAAaS,CAAb,GAAiBiE,MAAjB,GAA0BxE,KAFrB,EAGLM,CAAA,GAAImE,MAAJ,GAAazK,MAAb,GAAsB+F,KAHjB,EAILD,UAAA,GAAaS,CAAb,GAAiBiE,MAAjB,GAA0BzK,KAA1B,GAAkCiG,KAJ7B,CAAP;MAMF,KAAK,GAAL;QACE,OAAO,CACLM,CAAA,GAAIkE,MAAJ,GAAazK,KAAb,GAAqBgG,KADhB,EAELD,UAAA,GAAaS,CAAb,GAAiBkE,MAAjB,GAA0BzE,KAFrB,EAGLM,CAAA,GAAIkE,MAAJ,GAAazE,KAHR,EAILD,UAAA,GAAaS,CAAb,GAAiBkE,MAAjB,GAA0BzK,MAA1B,GAAmCgG,KAJ9B,CAAP;MAMF,KAAK,GAAL;QACE,OAAO,CACLM,CAAA,GAAImE,MAAJ,GAAazK,MAAb,GAAsB+F,KADjB,EAELD,UAAA,GAAaS,CAAb,GAAiBiE,MAAjB,GAA0BzK,KAA1B,GAAkCiG,KAF7B,EAGLM,CAAA,GAAImE,MAAJ,GAAa1E,KAHR,EAILD,UAAA,GAAaS,CAAb,GAAiBiE,MAAjB,GAA0BxE,KAJrB,CAAP;MAMF;QACE,MAAM,IAAIrtB,KAAJ,CAAU,kBAAV,CAAN;IA9BJ;EAXc;EA6ChB+xB,uBAAuBjqB,IAAvB,EAA6BqlB,UAA7B,EAAyC;IACvC,MAAM,CAAC1kB,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmBd,IAAzB;IAEA,MAAMsf,KAAA,GAAQze,EAAA,GAAKF,EAAnB;IACA,MAAM4e,MAAA,GAASze,EAAA,GAAKF,EAApB;IAEA,QAAQ,KAAK6Q,QAAb;MACE,KAAK,CAAL;QACE,OAAO,CAAC9Q,EAAD,EAAK0kB,UAAA,GAAavkB,EAAlB,EAAsBwe,KAAtB,EAA6BC,MAA7B,CAAP;MACF,KAAK,EAAL;QACE,OAAO,CAAC5e,EAAD,EAAK0kB,UAAA,GAAazkB,EAAlB,EAAsB2e,MAAtB,EAA8BD,KAA9B,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACze,EAAD,EAAKwkB,UAAA,GAAazkB,EAAlB,EAAsB0e,KAAtB,EAA6BC,MAA7B,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAAC1e,EAAD,EAAKwkB,UAAA,GAAavkB,EAAlB,EAAsBye,MAAtB,EAA8BD,KAA9B,CAAP;MACF;QACE,MAAM,IAAIpnB,KAAJ,CAAU,kBAAV,CAAN;IAVJ;EANuC;EAuBzCgyB,UAAA,EAAY;EAMZ5C,QAAA,EAAU;IACR,OAAO,KAAP;EADQ;EAOV6C,eAAA,EAAiB;IACf,KAAK,CAAA1F,YAAL,GAAqB,IAArB;EADe;EAOjB2F,gBAAA,EAAkB;IAChB,KAAK,CAAA3F,YAAL,GAAqB,KAArB;EADgB;EAQlBA,aAAA,EAAe;IACb,OAAO,KAAK,CAAAA,YAAZ;EADa;EASf4F,wBAAA,EAA0B;IACxB,OAAO,KAAP;EADwB;EAQ1BC,iBAAA,EAAmB;IACjB,OAAO,KAAKtF,GAAL,IAAY,CAAC,KAAKe,eAAzB;EADiB;EASnBwE,QAAA,EAAU;IACR,KAAKvF,GAAL,EAAUvM,gBAAV,CAA2B,SAA3B,EAAsC,KAAK,CAAA0L,YAA3C;IACA,KAAKa,GAAL,EAAUvM,gBAAV,CAA2B,UAA3B,EAAuC,KAAK,CAAA4L,aAA5C;EAFQ;EAaVV,UAAU6G,aAAA,GAAgB,KAA1B,EAAiC;IAC/B,IAAAvyB,iBAAA,EAAY,gCAAZ;EAD+B;EAajC,OAAOwyB,WAAPA,CAAmBzmB,IAAnB,EAAyBggB,MAAzB,EAAiCiB,SAAjC,EAA4C;IAC1C,MAAMmB,MAAA,GAAS,IAAI,KAAKjsB,SAAL,CAAeD,WAAnB,CAA+B;MAC5C8pB,MAD4C;MAE5CtV,EAAA,EAAIsV,MAAA,CAAOuC,SAAP,EAFwC;MAG5CtB;IAH4C,CAA/B,CAAf;IAKAmB,MAAA,CAAO3U,QAAP,GAAkBzN,IAAA,CAAKyN,QAAvB;IAEA,MAAM,CAAC2T,SAAD,EAAYC,UAAZ,IAA0Be,MAAA,CAAOV,cAAvC;IACA,MAAM,CAACG,CAAD,EAAIC,CAAJ,EAAOxG,KAAP,EAAcC,MAAd,IAAwB6G,MAAA,CAAO6D,sBAAP,CAC5BjmB,IAAA,CAAKhE,IADuB,EAE5BqlB,UAF4B,CAA9B;IAIAe,MAAA,CAAOP,CAAP,GAAWA,CAAA,GAAIT,SAAf;IACAgB,MAAA,CAAON,CAAP,GAAWA,CAAA,GAAIT,UAAf;IACAe,MAAA,CAAO9G,KAAP,GAAeA,KAAA,GAAQ8F,SAAvB;IACAgB,MAAA,CAAO7G,MAAP,GAAgBA,MAAA,GAAS8F,UAAzB;IAEA,OAAOe,MAAP;EAlB0C;EAyB5CrD,OAAA,EAAS;IACP,KAAKiC,GAAL,CAAStM,mBAAT,CAA6B,SAA7B,EAAwC,KAAK,CAAAyL,YAA7C;IACA,KAAKa,GAAL,CAAStM,mBAAT,CAA6B,UAA7B,EAAyC,KAAK,CAAA2L,aAA9C;IAEA,IAAI,CAAC,KAAKiD,OAAL,EAAL,EAAqB;MAGnB,KAAKC,MAAL;IAHmB;IAKrB,KAAKvD,MAAL,CAAYjB,MAAZ,CAAmB,IAAnB;EATO;EAeT2H,OAAA,EAAS;IACP,KAAK1F,GAAL,EAAU2F,SAAV,CAAoB/V,GAApB,CAAwB,gBAAxB;EADO;EAOTgW,SAAA,EAAW;IACT,KAAK5F,GAAL,EAAU2F,SAAV,CAAoB5H,MAApB,CAA2B,gBAA3B;EADS;EASX8H,aAAarM,IAAb,EAAmBjlB,KAAnB,EAA0B;EAM1BuxB,eAAA,EAAiB;EAMjBC,cAAA,EAAgB;EAMhB,IAAIC,kBAAJA,CAAA,EAAyB;IACvB,OAAO,EAAP;EADuB;EAOzB,IAAIC,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKjG,GAAZ;EADe;EAQjB,IAAIR,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAK,CAAAA,SAAZ;EADc;EAQhB,IAAIA,SAAJA,CAAcjrB,KAAd,EAAqB;IACnB,KAAK,CAAAirB,SAAL,GAAkBjrB,KAAlB;IACA,IAAIA,KAAJ,EAAW;MACT,KAAKyqB,MAAL,CAAY+C,WAAZ,CAAwB,IAAxB;MACA,KAAK/C,MAAL,CAAYkH,eAAZ,CAA4B,IAA5B;IAFS,CAAX,MAGO;MACL,KAAKlH,MAAL,CAAYkH,eAAZ,CAA4B,IAA5B;IADK;EALY;AA5jBA;AAnCvBziC,wBAAA,GAAAu6B,gBAAA;AA2mBA,MAAMsD,UAAN,SAAyBtD,gBAAzB,CAA0C;EACxC9oB,YAAYuM,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IACA,KAAKye,mBAAL,GAA2Bze,MAAA,CAAOye,mBAAlC;IACA,KAAKc,OAAL,GAAe,IAAf;EAHkB;EAMpBrC,UAAA,EAAY;IACV,OAAO;MACLjV,EAAA,EAAI,KAAKwW,mBADJ;MAELc,OAAA,EAAS,IAFJ;MAGLxV,SAAA,EAAW,KAAKA;IAHX,CAAP;EADU;AAP4B;;;;;;;;;;;;;;ACxlB1C,IAAA9L,KAAA,GAAAC,mBAAA;AAQA,IAAAE,cAAA,GAAAF,mBAAA;AAEA,SAAS4kB,UAATA,CAAoBlwB,GAApB,EAAyB8xB,OAAzB,EAAkCC,KAAlC,EAAyC;EACvC,WAAWnxB,IAAX,IAAmBmxB,KAAnB,EAA0B;IACxBD,OAAA,CAAQ1S,gBAAR,CAAyBxe,IAAzB,EAA+BZ,GAAA,CAAIY,IAAJ,EAAUglB,IAAV,CAAe5lB,GAAf,CAA/B;EADwB;AADa;AAWzC,SAASgyB,YAATA,CAAsBC,OAAtB,EAA+B;EAC7B,OAAO9vB,IAAA,CAAK+vB,KAAL,CAAW/vB,IAAA,CAAKC,GAAL,CAAS,GAAT,EAAcD,IAAA,CAAK4D,GAAL,CAAS,CAAT,EAAY,MAAMksB,OAAlB,CAAd,CAAX,EACJ3tB,QADI,CACK,EADL,EAEJC,QAFI,CAEK,CAFL,EAEQ,GAFR,CAAP;AAD6B;AAS/B,MAAM4tB,SAAN,CAAgB;EACd,CAAA9c,EAAA,GAAM,CAAN;EAMA+c,MAAA,EAAQ;IACN,OAAO,GAAG5hC,4BAAH,GAA4B,KAAK,CAAA6kB,EAAL,EAA5B,EAAP;EADM;AAPM;AAkBhB,MAAMgd,cAAN,CAAqB;EACnB,CAAAC,QAAA,GAAY,EAAZ;EAEA,CAAAC,MAAA,GAAU,KAAV;EAEA,CAAAC,OAAA;EAEA,CAAAC,QAAA,GAAY,CAAC,CAAb;EAEA5xB,YAAY2xB,OAAA,GAAU,GAAtB,EAA2B;IACzB,KAAK,CAAAA,OAAL,GAAgBA,OAAhB;EADyB;EAkB3BjX,IAAI;IACFmX,GADE;IAEFC,IAFE;IAGFC,QAHE;IAIFzN,IAAA,GAAOtV,GAJL;IAKFgjB,mBAAA,GAAsB,KALpB;IAMFC,QAAA,GAAW;EANT,CAAJ,EAOG;IACD,IAAIF,QAAJ,EAAc;MACZF,GAAA;IADY;IAId,IAAI,KAAK,CAAAH,MAAT,EAAkB;MAChB;IADgB;IAIlB,MAAMx5B,IAAA,GAAO;MAAE25B,GAAF;MAAOC,IAAP;MAAaxN;IAAb,CAAb;IACA,IAAI,KAAK,CAAAsN,QAAL,KAAmB,CAAC,CAAxB,EAA2B;MACzB,IAAI,KAAK,CAAAH,QAAL,CAAe5yB,MAAf,GAAwB,CAA5B,EAA+B;QAG7B,KAAK,CAAA4yB,QAAL,CAAe5yB,MAAf,GAAwB,CAAxB;MAH6B;MAK/B,KAAK,CAAA+yB,QAAL,GAAiB,CAAjB;MACA,KAAK,CAAAH,QAAL,CAAe/vB,IAAf,CAAoBxJ,IAApB;MACA;IARyB;IAW3B,IAAI85B,mBAAA,IAAuB,KAAK,CAAAP,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+BtN,IAA/B,KAAwCA,IAAnE,EAAyE;MAIvE,IAAI2N,QAAJ,EAAc;QACZ/5B,IAAA,CAAK45B,IAAL,GAAY,KAAK,CAAAL,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+BE,IAA3C;MADY;MAGd,KAAK,CAAAL,QAAL,CAAe,KAAK,CAAAG,QAApB,IAAiC15B,IAAjC;MACA;IARuE;IAWzE,MAAMg6B,IAAA,GAAO,KAAK,CAAAN,QAAL,GAAiB,CAA9B;IACA,IAAIM,IAAA,KAAS,KAAK,CAAAP,OAAlB,EAA4B;MAC1B,KAAK,CAAAF,QAAL,CAAeU,MAAf,CAAsB,CAAtB,EAAyB,CAAzB;IAD0B,CAA5B,MAEO;MACL,KAAK,CAAAP,QAAL,GAAiBM,IAAjB;MACA,IAAIA,IAAA,GAAO,KAAK,CAAAT,QAAL,CAAe5yB,MAA1B,EAAkC;QAChC,KAAK,CAAA4yB,QAAL,CAAeU,MAAf,CAAsBD,IAAtB;MADgC;IAF7B;IAOP,KAAK,CAAAT,QAAL,CAAe/vB,IAAf,CAAoBxJ,IAApB;EA1CC;EAgDH45B,KAAA,EAAO;IACL,IAAI,KAAK,CAAAF,QAAL,KAAmB,CAAC,CAAxB,EAA2B;MAEzB;IAFyB;IAM3B,KAAK,CAAAF,MAAL,GAAe,IAAf;IACA,KAAK,CAAAD,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+BE,IAA/B;IACA,KAAK,CAAAJ,MAAL,GAAe,KAAf;IAEA,KAAK,CAAAE,QAAL,IAAkB,CAAlB;EAXK;EAiBPQ,KAAA,EAAO;IACL,IAAI,KAAK,CAAAR,QAAL,GAAiB,KAAK,CAAAH,QAAL,CAAe5yB,MAAf,GAAwB,CAA7C,EAAgD;MAC9C,KAAK,CAAA+yB,QAAL,IAAkB,CAAlB;MAGA,KAAK,CAAAF,MAAL,GAAe,IAAf;MACA,KAAK,CAAAD,QAAL,CAAe,KAAK,CAAAG,QAApB,EAA+BC,GAA/B;MACA,KAAK,CAAAH,MAAL,GAAe,KAAf;IAN8C;EAD3C;EAePW,mBAAA,EAAqB;IACnB,OAAO,KAAK,CAAAT,QAAL,KAAmB,CAAC,CAA3B;EADmB;EAQrBU,mBAAA,EAAqB;IACnB,OAAO,KAAK,CAAAV,QAAL,GAAiB,KAAK,CAAAH,QAAL,CAAe5yB,MAAf,GAAwB,CAAhD;EADmB;EAIrBsT,QAAA,EAAU;IACR,KAAK,CAAAsf,QAAL,GAAiB,IAAjB;EADQ;AA9HS;AAnErBljC,sBAAA,GAAAijC,cAAA;AA0MA,MAAMe,eAAN,CAAsB;EAOpBvyB,YAAYwyB,SAAZ,EAAuB;IACrB,KAAK7vB,MAAL,GAAc,EAAd;IACA,KAAK6vB,SAAL,GAAiB,IAAIroB,GAAJ,EAAjB;IACA,KAAKsoB,OAAL,GAAe,IAAIhY,GAAJ,EAAf;IAEA,MAAM;MAAErX;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,WAAW,CAACf,IAAD,EAAOqY,QAAP,EAAiBmY,OAAA,GAAU,KAA3B,CAAX,IAAgDF,SAAhD,EAA2D;MACzD,WAAWlwB,GAAX,IAAkBJ,IAAlB,EAAwB;QACtB,MAAMywB,QAAA,GAAWrwB,GAAA,CAAI5D,UAAJ,CAAe,MAAf,CAAjB;QACA,IAAI0E,KAAA,IAASuvB,QAAb,EAAuB;UACrB,KAAKH,SAAL,CAAetZ,GAAf,CAAmB5W,GAAA,CAAIyC,KAAJ,CAAU,CAAV,CAAnB,EAAiC;YAAEwV,QAAF;YAAYmY;UAAZ,CAAjC;UACA,KAAKD,OAAL,CAAa/X,GAAb,CAAiBpY,GAAA,CAAIswB,KAAJ,CAAU,GAAV,EAAeC,EAAf,CAAkB,CAAC,CAAnB,CAAjB;QAFqB,CAAvB,MAGO,IAAI,CAACzvB,KAAD,IAAU,CAACuvB,QAAf,EAAyB;UAC9B,KAAKH,SAAL,CAAetZ,GAAf,CAAmB5W,GAAnB,EAAwB;YAAEiY,QAAF;YAAYmY;UAAZ,CAAxB;UACA,KAAKD,OAAL,CAAa/X,GAAb,CAAiBpY,GAAA,CAAIswB,KAAJ,CAAU,GAAV,EAAeC,EAAf,CAAkB,CAAC,CAAnB,CAAjB;QAF8B;MALV;IADiC;EANtC;EA0BvB,CAAApJ,UAAWrL,KAAX,EAAkB;IAChB,IAAIA,KAAA,CAAM0U,MAAV,EAAkB;MAChB,KAAKnwB,MAAL,CAAYjB,IAAZ,CAAiB,KAAjB;IADgB;IAGlB,IAAI0c,KAAA,CAAMoR,OAAV,EAAmB;MACjB,KAAK7sB,MAAL,CAAYjB,IAAZ,CAAiB,MAAjB;IADiB;IAGnB,IAAI0c,KAAA,CAAMsR,OAAV,EAAmB;MACjB,KAAK/sB,MAAL,CAAYjB,IAAZ,CAAiB,MAAjB;IADiB;IAGnB,IAAI0c,KAAA,CAAMqR,QAAV,EAAoB;MAClB,KAAK9sB,MAAL,CAAYjB,IAAZ,CAAiB,OAAjB;IADkB;IAGpB,KAAKiB,MAAL,CAAYjB,IAAZ,CAAiB0c,KAAA,CAAM9b,GAAvB;IACA,MAAMT,GAAA,GAAM,KAAKc,MAAL,CAAYhB,IAAZ,CAAiB,GAAjB,CAAZ;IACA,KAAKgB,MAAL,CAAY9D,MAAZ,GAAqB,CAArB;IAEA,OAAOgD,GAAP;EAjBgB;EA2BlBkxB,KAAKC,IAAL,EAAW5U,KAAX,EAAkB;IAChB,IAAI,CAAC,KAAKqU,OAAL,CAAa5S,GAAb,CAAiBzB,KAAA,CAAM9b,GAAvB,CAAL,EAAkC;MAChC;IADgC;IAGlC,MAAM5E,IAAA,GAAO,KAAK80B,SAAL,CAAejoB,GAAf,CAAmB,KAAK,CAAAkf,SAAL,CAAgBrL,KAAhB,CAAnB,CAAb;IACA,IAAI,CAAC1gB,IAAL,EAAW;MACT;IADS;IAGX,MAAM;MAAE6c,QAAF;MAAYmY;IAAZ,IAAwBh1B,IAA9B;IACA6c,QAAA,CAASwK,IAAT,CAAciO,IAAd;IAIA,IAAI,CAACN,OAAL,EAAc;MACZtU,KAAA,CAAM6U,eAAN;MACA7U,KAAA,CAAM6O,cAAN;IAFY;EAbE;AA5DE;AA1MtB1+B,uBAAA,GAAAgkC,eAAA;AA0RA,MAAM3H,YAAN,CAAmB;EACjB,OAAOsI,cAAP,GAAwB,IAAI/oB,GAAJ,CAAQ,CAC9B,CAAC,YAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf,CAD8B,EAE9B,CAAC,QAAD,EAAW,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAX,CAF8B,CAAR,CAAxB;EAKA,IAAIgpB,OAAJA,CAAA,EAAc;IASZ,MAAMC,MAAA,GAAS,IAAIjpB,GAAJ,CAAQ,CACrB,CAAC,YAAD,EAAe,IAAf,CADqB,EAErB,CAAC,QAAD,EAAW,IAAX,CAFqB,CAAR,CAAf;IAIA,IAAAkpB,6BAAA,EAAeD,MAAf;IACA,OAAO,IAAAl0B,YAAA,EAAO,IAAP,EAAa,SAAb,EAAwBk0B,MAAxB,CAAP;EAdY;EAyBdE,QAAQC,KAAR,EAAe;IACb,MAAMC,GAAA,GAAM,IAAAC,qBAAA,EAAOF,KAAP,CAAZ;IACA,IAAI,CAAC1hB,MAAA,CAAO6hB,UAAP,CAAkB,yBAAlB,EAA6CC,OAAlD,EAA2D;MACzD,OAAOH,GAAP;IADyD;IAI3D,WAAW,CAACzzB,IAAD,EAAO6zB,GAAP,CAAX,IAA0B,KAAKT,OAA/B,EAAwC;MACtC,IAAIS,GAAA,CAAIC,KAAJ,CAAU,CAAClI,CAAD,EAAIvqB,CAAJ,KAAUuqB,CAAA,KAAM6H,GAAA,CAAIpyB,CAAJ,CAA1B,CAAJ,EAAuC;QACrC,OAAOwpB,YAAA,CAAasI,cAAb,CAA4B3oB,GAA5B,CAAgCxK,IAAhC,CAAP;MADqC;IADD;IAKxC,OAAOyzB,GAAP;EAXa;EAqBfxH,WAAWjsB,IAAX,EAAiB;IACf,MAAMyzB,GAAA,GAAM,KAAKL,OAAL,CAAa5oB,GAAb,CAAiBxK,IAAjB,CAAZ;IACA,IAAI,CAACyzB,GAAL,EAAU;MACR,OAAOzzB,IAAP;IADQ;IAGV,OAAO4D,UAAA,CAAKC,YAAL,CAAkB,GAAG4vB,GAArB,CAAP;EALe;AApDA;AA1RnBjlC,oBAAA,GAAAq8B,YAAA;AA+VA,MAAMkJ,yBAAN,CAAgC;EAC9B,CAAAC,YAAA,GAAgB,IAAhB;EAEA,CAAAC,UAAA,GAAc,IAAI7pB,GAAJ,EAAd;EAEA,CAAA8pB,SAAA,GAAa,IAAI9pB,GAAJ,EAAb;EAEA,CAAAyJ,iBAAA,GAAqB,IAArB;EAEA,CAAAsgB,cAAA,GAAkB,IAAI1C,cAAJ,EAAlB;EAEA,CAAA2C,gBAAA,GAAoB,CAApB;EAEA,CAAAC,4BAAA,GAAgC,IAAI3Z,GAAJ,EAAhC;EAEA,CAAA4Z,WAAA,GAAe,IAAf;EAEA,CAAAC,gBAAA,GAAoB,IAAI7Z,GAAJ,EAApB;EAEA,CAAA8Z,QAAA,GAAY,IAAZ;EAEA,CAAAC,SAAA,GAAa,IAAIlD,SAAJ,EAAb;EAEA,CAAAmD,SAAA,GAAa,KAAb;EAEA,CAAAC,IAAA,GAAQ9kC,0BAAA,CAAqBC,IAA7B;EAEA,CAAA8kC,eAAA,GAAmB,IAAIla,GAAJ,EAAnB;EAEA,CAAAma,SAAA,GAAa,KAAKC,IAAL,CAAU9P,IAAV,CAAe,IAAf,CAAb;EAEA,CAAA+P,QAAA,GAAY,KAAKC,GAAL,CAAShQ,IAAT,CAAc,IAAd,CAAZ;EAEA,CAAAiQ,UAAA,GAAc,KAAKC,KAAL,CAAWlQ,IAAX,CAAgB,IAAhB,CAAd;EAEA,CAAAmQ,YAAA,GAAgB,KAAKC,OAAL,CAAapQ,IAAb,CAAkB,IAAlB,CAAhB;EAEA,CAAAqQ,oBAAA,GAAwB,KAAKC,eAAL,CAAqBtQ,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAAuQ,mBAAA,GAAuB,KAAKC,cAAL,CAAoBxQ,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAAyQ,oBAAA,GAAwB,KAAKC,eAAL,CAAqB1Q,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAA2Q,uBAAA,GAA2B,KAAKC,kBAAL,CAAwB5Q,IAAxB,CAA6B,IAA7B,CAA3B;EAEA,CAAA6Q,cAAA,GAAkB;IAChBtL,SAAA,EAAW,KADK;IAEhB8C,OAAA,EAAS,IAFO;IAGhBiF,kBAAA,EAAoB,KAHJ;IAIhBC,kBAAA,EAAoB,KAJJ;IAKhBuD,iBAAA,EAAmB;EALH,CAAlB;EAQA,CAAAC,SAAA,GAAa,IAAb;EAEA,WAAWC,gBAAXA,CAAA,EAA8B;IAC5B,OAAO,IAAA72B,YAAA,EACL,IADK,EAEL,kBAFK,EAGL,IAAIqzB,eAAJ,CAAoB,CAClB,CACE,CAAC,QAAD,EAAW,YAAX,CADF,EAEEuB,yBAAA,CAA0B7zB,SAA1B,CAAoC+1B,SAFtC,CADkB,EAKlB,CAAC,CAAC,QAAD,EAAW,YAAX,CAAD,EAA2BlC,yBAAA,CAA0B7zB,SAA1B,CAAoC6xB,IAA/D,CALkB,EAMlB,CACE,CAAC,QAAD,EAAW,cAAX,EAA2B,kBAA3B,CADF,EAEEgC,yBAAA,CAA0B7zB,SAA1B,CAAoCmyB,IAFtC,CANkB,EAUlB,CACE,CACE,WADF,EAEE,eAFF,EAGE,gBAHF,EAIE,iBAJF,EAKE,eALF,EAME,mBANF,EAOE,oBAPF,EAQE,QARF,EASE,aATF,EAUE,cAVF,CADF,EAaE0B,yBAAA,CAA0B7zB,SAA1B,CAAoC+Z,MAbtC,CAVkB,EAyBlB,CACE,CAAC,QAAD,EAAW,YAAX,CADF,EAEE8Z,yBAAA,CAA0B7zB,SAA1B,CAAoCg2B,WAFtC,CAzBkB,CAApB,CAHK,CAAP;EAD4B;EAqC9Bj2B,YAAY81B,SAAZ,EAAuBvB,QAAvB,EAAiC3gB,iBAAjC,EAAoD;IAClD,KAAK,CAAAkiB,SAAL,GAAkBA,SAAlB;IACA,KAAK,CAAAvB,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAAA,QAAL,CAAe2B,GAAf,CAAmB,eAAnB,EAAoC,KAAK,CAAAd,oBAAzC;IACA,KAAK,CAAAb,QAAL,CAAe2B,GAAf,CAAmB,cAAnB,EAAmC,KAAK,CAAAZ,mBAAxC;IACA,KAAK,CAAAf,QAAL,CAAe2B,GAAf,CAAmB,eAAnB,EAAoC,KAAK,CAAAV,oBAAzC;IACA,KAAK,CAAAjB,QAAL,CAAe2B,GAAf,CAAmB,kBAAnB,EAAuC,KAAK,CAAAR,uBAA5C;IACA,KAAK,CAAA9hB,iBAAL,GAA0BA,iBAA1B;IACA,KAAK2X,cAAL,GAAsB;MACpBiD,SAAA,EAAW2H,4BAAA,CAAcC,gBADL;MAEpB7e,QAAA,EAAU;IAFU,CAAtB;EARkD;EAcpDpF,QAAA,EAAU;IACR,KAAK,CAAAkkB,qBAAL;IACA,KAAK,CAAA9B,QAAL,CAAe+B,IAAf,CAAoB,eAApB,EAAqC,KAAK,CAAAlB,oBAA1C;IACA,KAAK,CAAAb,QAAL,CAAe+B,IAAf,CAAoB,cAApB,EAAoC,KAAK,CAAAhB,mBAAzC;IACA,KAAK,CAAAf,QAAL,CAAe+B,IAAf,CAAoB,eAApB,EAAqC,KAAK,CAAAd,oBAA1C;IACA,KAAK,CAAAjB,QAAL,CAAe+B,IAAf,CAAoB,kBAApB,EAAwC,KAAK,CAAAZ,uBAA7C;IACA,WAAWa,KAAX,IAAoB,KAAK,CAAAtC,SAAL,CAAgBvX,MAAhB,EAApB,EAA8C;MAC5C6Z,KAAA,CAAMpkB,OAAN;IAD4C;IAG9C,KAAK,CAAA8hB,SAAL,CAAgBnX,KAAhB;IACA,KAAK,CAAAkX,UAAL,CAAiBlX,KAAjB;IACA,KAAK,CAAAwX,gBAAL,CAAuBxX,KAAvB;IACA,KAAK,CAAAiX,YAAL,GAAqB,IAArB;IACA,KAAK,CAAAY,eAAL,CAAsB7X,KAAtB;IACA,KAAK,CAAAoX,cAAL,CAAqB/hB,OAArB;EAdQ;EAiBVojB,eAAe;IAAEphB;EAAF,CAAf,EAA+B;IAC7B,KAAK,CAAAggB,gBAAL,GAAyBhgB,UAAA,GAAa,CAAtC;EAD6B;EAI/BqiB,mBAAA,EAAqB;IACnB,KAAK,CAAAV,SAAL,CAAgBW,KAAhB;EADmB;EAIrBC,iBAAiBxK,MAAjB,EAAyB;IACvB,KAAK,CAAAoI,gBAAL,CAAuB5Z,GAAvB,CAA2BwR,MAA3B;EADuB;EAIzByK,oBAAoBzK,MAApB,EAA4B;IAC1B,KAAK,CAAAoI,gBAAL,CAAuBta,MAAvB,CAA8BkS,MAA9B;EAD0B;EAI5BuJ,gBAAgB;IAAEne;EAAF,CAAhB,EAA2B;IACzB,KAAK6V,cAAL;IACA,KAAK5B,cAAL,CAAoBiD,SAApB,GAAgClX,KAAA,GAAQ6e,4BAAA,CAAcC,gBAAtD;IACA,WAAWlK,MAAX,IAAqB,KAAK,CAAAoI,gBAA1B,EAA6C;MAC3CpI,MAAA,CAAOuJ,eAAP;IAD2C;EAHpB;EAQ3BE,mBAAmB;IAAEiB;EAAF,CAAnB,EAAsC;IACpC,KAAKzJ,cAAL;IACA,KAAK5B,cAAL,CAAoBhU,QAApB,GAA+Bqf,aAA/B;EAFoC;EAStCtK,uBAAuBJ,MAAvB,EAA+B;IAC7B,IACE,CAACA,MAAA,CAAOkB,OAAP,EAAD,IACA,KAAK,CAAAxZ,iBADL,IAEA,CAAC,KAAK,CAAAA,iBAAL,CAAwBiM,GAAxB,CAA4BqM,MAAA,CAAO1X,EAAnC,CAHH,EAIE;MACA,KAAK,CAAAZ,iBAAL,CAAwBmV,QAAxB,CAAiCmD,MAAA,CAAO1X,EAAxC,EAA4C0X,MAA5C;IADA;EAL2B;EAU/B,CAAA2K,mBAAA,EAAsB;IAGpB,KAAK,CAAAf,SAAL,CAAgBvX,gBAAhB,CAAiC,SAAjC,EAA4C,KAAK,CAAA2W,YAAjD;EAHoB;EAMtB,CAAAmB,sBAAA,EAAyB;IACvB,KAAK,CAAAP,SAAL,CAAgBtX,mBAAhB,CAAoC,SAApC,EAA+C,KAAK,CAAA0W,YAApD;EADuB;EAIzB,CAAA4B,sBAAA,EAAyB;IACvBnoB,QAAA,CAAS4P,gBAAT,CAA0B,MAA1B,EAAkC,KAAK,CAAAqW,SAAvC;IACAjmB,QAAA,CAAS4P,gBAAT,CAA0B,KAA1B,EAAiC,KAAK,CAAAuW,QAAtC;IACAnmB,QAAA,CAAS4P,gBAAT,CAA0B,OAA1B,EAAmC,KAAK,CAAAyW,UAAxC;EAHuB;EAMzB,CAAA+B,yBAAA,EAA4B;IAC1BpoB,QAAA,CAAS6P,mBAAT,CAA6B,MAA7B,EAAqC,KAAK,CAAAoW,SAA1C;IACAjmB,QAAA,CAAS6P,mBAAT,CAA6B,KAA7B,EAAoC,KAAK,CAAAsW,QAAzC;IACAnmB,QAAA,CAAS6P,mBAAT,CAA6B,OAA7B,EAAsC,KAAK,CAAAwW,UAA3C;EAH0B;EAU5BH,KAAKzW,KAAL,EAAY;IACVA,KAAA,CAAM6O,cAAN;IAEA,IAAI,KAAK,CAAA8G,YAAT,EAAwB;MAEtB,KAAK,CAAAA,YAAL,CAAmB5G,cAAnB;IAFsB;IAKxB,IAAI,CAAC,KAAK6J,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMC,OAAA,GAAU,EAAhB;IACA,WAAW/K,MAAX,IAAqB,KAAK,CAAAyI,eAA1B,EAA4C;MAC1C,MAAMnL,UAAA,GAAa0C,MAAA,CAAOzC,SAAP,CAAsC,IAAtC,CAAnB;MACA,IAAID,UAAJ,EAAgB;QACdyN,OAAA,CAAQv1B,IAAR,CAAa8nB,UAAb;MADc;IAF0B;IAM5C,IAAIyN,OAAA,CAAQp4B,MAAR,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAI1Buf,KAAA,CAAM8Y,aAAN,CAAoBrJ,OAApB,CAA4B,mBAA5B,EAAiDlE,IAAA,CAAKC,SAAL,CAAeqN,OAAf,CAAjD;EAvBU;EA8BZlC,IAAI3W,KAAJ,EAAW;IACT,KAAKyW,IAAL,CAAUzW,KAAV;IACA,KAAKpE,MAAL;EAFS;EASXib,MAAM7W,KAAN,EAAa;IACXA,KAAA,CAAM6O,cAAN;IAEA,IAAInjB,IAAA,GAAOsU,KAAA,CAAM8Y,aAAN,CAAoB3hB,OAApB,CAA4B,mBAA5B,CAAX;IACA,IAAI,CAACzL,IAAL,EAAW;MACT;IADS;IAIX,IAAI;MACFA,IAAA,GAAO6f,IAAA,CAAKwN,KAAL,CAAWrtB,IAAX,CAAP;IADE,CAAJ,CAEE,OAAO7B,EAAP,EAAW;MACX,IAAAnK,UAAA,EAAM,WAAUmK,EAAA,CAAGnI,OAAQ,IAA3B;MACA;IAFW;IAKb,IAAI,CAACyD,KAAA,CAAM6zB,OAAN,CAActtB,IAAd,CAAL,EAA0B;MACxB;IADwB;IAI1B,KAAKmsB,WAAL;IACA,MAAMM,KAAA,GAAQ,KAAK,CAAAtC,SAAL,CAAgB1pB,GAAhB,CAAoB,KAAK,CAAA4pB,gBAAzB,CAAd;IAEA,IAAI;MACF,MAAMkD,UAAA,GAAa,EAAnB;MACA,WAAWnL,MAAX,IAAqBpiB,IAArB,EAA2B;QACzB,MAAMwtB,kBAAA,GAAqBf,KAAA,CAAMhG,WAAN,CAAkBrE,MAAlB,CAA3B;QACA,IAAI,CAACoL,kBAAL,EAAyB;UACvB;QADuB;QAGzBD,UAAA,CAAW31B,IAAX,CAAgB41B,kBAAhB;MALyB;MAQ3B,MAAMzF,GAAA,GAAMA,CAAA,KAAM;QAChB,WAAW3F,MAAX,IAAqBmL,UAArB,EAAiC;UAC/B,KAAK,CAAAE,gBAAL,CAAuBrL,MAAvB;QAD+B;QAGjC,KAAK,CAAAsL,aAAL,CAAoBH,UAApB;MAJgB,CAAlB;MAMA,MAAMvF,IAAA,GAAOA,CAAA,KAAM;QACjB,WAAW5F,MAAX,IAAqBmL,UAArB,EAAiC;UAC/BnL,MAAA,CAAOrD,MAAP;QAD+B;MADhB,CAAnB;MAKA,KAAK0D,WAAL,CAAiB;QAAEsF,GAAF;QAAOC,IAAP;QAAaC,QAAA,EAAU;MAAvB,CAAjB;IArBE,CAAJ,CAsBE,OAAO9pB,EAAP,EAAW;MACX,IAAAnK,UAAA,EAAM,WAAUmK,EAAA,CAAGnI,OAAQ,IAA3B;IADW;EA5CF;EAqDbq1B,QAAQ/W,KAAR,EAAe;IACb,IAAI,CAAC,KAAKqZ,SAAL,IAAkBtH,uBAAlB,EAAL,EAAkD;MAChD2D,yBAAA,CAA0BiC,gBAA1B,CAA2ChD,IAA3C,CAAgD,IAAhD,EAAsD3U,KAAtD;IADgD;EADrC;EAYfiX,gBAAgBh1B,OAAhB,EAAyB;IACvB,IAAI,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,WAA3B,EAAwCgD,QAAxC,CAAiDhD,OAAA,CAAQN,IAAzD,CAAJ,EAAoE;MAClE,KAAKM,OAAA,CAAQN,IAAb;IADkE;EAD7C;EAWzB,CAAA23B,qBAAsBr3B,OAAtB,EAA+B;IAC7B,MAAMs3B,UAAA,GAAap4B,MAAA,CAAO0pB,OAAP,CAAe5oB,OAAf,EAAwBu3B,IAAxB,CACjB,CAAC,CAACt1B,GAAD,EAAMjD,KAAN,CAAD,KAAkB,KAAK,CAAAu2B,cAAL,CAAqBtzB,GAArB,MAA8BjD,KAD/B,CAAnB;IAIA,IAAIs4B,UAAJ,EAAgB;MACd,KAAK,CAAApD,QAAL,CAAesD,QAAf,CAAwB,+BAAxB,EAAyD;QACvDpmB,MAAA,EAAQ,IAD+C;QAEvDpR,OAAA,EAASd,MAAA,CAAO6c,MAAP,CAAc,KAAK,CAAAwZ,cAAnB,EAAoCv1B,OAApC;MAF8C,CAAzD;IADc;EALa;EAa/B,CAAAy3B,iBAAkBz3B,OAAlB,EAA2B;IACzB,KAAK,CAAAk0B,QAAL,CAAesD,QAAf,CAAwB,+BAAxB,EAAyD;MACvDpmB,MAAA,EAAQ,IAD+C;MAEvDpR;IAFuD,CAAzD;EADyB;EAa3B03B,gBAAgBzN,SAAhB,EAA2B;IACzB,IAAIA,SAAJ,EAAe;MACb,KAAK,CAAAuM,kBAAL;MACA,KAAK,CAAAC,qBAAL;MACA,KAAK,CAAAY,oBAAL,CAA2B;QACzBpN,SAAA,EAAW,KAAK,CAAAoK,IAAL,KAAe9kC,0BAAA,CAAqBC,IADtB;QAEzBu9B,OAAA,EAAS,KAAK,CAAAA,OAAL,EAFgB;QAGzBiF,kBAAA,EAAoB,KAAK,CAAA6B,cAAL,CAAqB7B,kBAArB,EAHK;QAIzBC,kBAAA,EAAoB,KAAK,CAAA4B,cAAL,CAAqB5B,kBAArB,EAJK;QAKzBuD,iBAAA,EAAmB;MALM,CAA3B;IAHa,CAAf,MAUO;MACL,KAAK,CAAAQ,qBAAL;MACA,KAAK,CAAAU,wBAAL;MACA,KAAK,CAAAW,oBAAL,CAA2B;QACzBpN,SAAA,EAAW;MADc,CAA3B;IAHK;EAXkB;EAoB3B0N,oBAAoBC,KAApB,EAA2B;IACzB,IAAI,KAAK,CAAA5D,WAAT,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,WAAL,GAAoB4D,KAApB;IACA,WAAWC,UAAX,IAAyB,KAAK,CAAA7D,WAA9B,EAA4C;MAC1C,KAAK,CAAAyD,gBAAL,CAAuBI,UAAA,CAAWC,yBAAlC;IAD0C;EALnB;EAc3B5G,MAAA,EAAQ;IACN,OAAO,KAAK,CAAAiD,SAAL,CAAgBjD,KAAhB,EAAP;EADM;EAIR,IAAI/E,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAAyH,SAAL,CAAgB1pB,GAAhB,CAAoB,KAAK,CAAA4pB,gBAAzB,CAAP;EADiB;EAInB,IAAIA,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK,CAAAA,gBAAZ;EADqB;EAQvBiE,SAAS7B,KAAT,EAAgB;IACd,KAAK,CAAAtC,SAAL,CAAgB/a,GAAhB,CAAoBqd,KAAA,CAAMjgB,SAA1B,EAAqCigB,KAArC;IACA,IAAI,KAAK,CAAA9B,SAAT,EAAqB;MACnB8B,KAAA,CAAM8B,MAAN;IADmB,CAArB,MAEO;MACL9B,KAAA,CAAM+B,OAAN;IADK;EAJO;EAahBC,YAAYhC,KAAZ,EAAmB;IACjB,KAAK,CAAAtC,SAAL,CAAgBja,MAAhB,CAAuBuc,KAAA,CAAMjgB,SAA7B;EADiB;EAQnBkiB,WAAW9D,IAAX,EAAiB;IACf,KAAK,CAAAA,IAAL,GAAaA,IAAb;IACA,IAAIA,IAAA,KAAS9kC,0BAAA,CAAqBC,IAAlC,EAAwC;MACtC,KAAKkoC,eAAL,CAAqB,KAArB;MACA,KAAK,CAAAU,UAAL;IAFsC,CAAxC,MAGO;MACL,KAAKV,eAAL,CAAqB,IAArB;MACA,KAAK,CAAAW,SAAL;MACA,WAAWnC,KAAX,IAAoB,KAAK,CAAAtC,SAAL,CAAgBvX,MAAhB,EAApB,EAA8C;QAC5C6Z,KAAA,CAAMiC,UAAN,CAAiB9D,IAAjB;MAD4C;IAHzC;EALQ;EAmBjBiE,cAAcjE,IAAd,EAAoB;IAClB,IAAIA,IAAA,KAAS,KAAK,CAAAA,IAAlB,EAAyB;MACvB;IADuB;IAGzB,KAAK,CAAAH,QAAL,CAAesD,QAAf,CAAwB,4BAAxB,EAAsD;MACpDpmB,MAAA,EAAQ,IAD4C;MAEpDijB;IAFoD,CAAtD;EAJkB;EAepB/D,aAAarM,IAAb,EAAmBjlB,KAAnB,EAA0B;IACxB,IAAI,CAAC,KAAK,CAAAg1B,WAAV,EAAwB;MACtB;IADsB;IAIxB,WAAWnI,MAAX,IAAqB,KAAK,CAAAyI,eAA1B,EAA4C;MAC1CzI,MAAA,CAAOyE,YAAP,CAAoBrM,IAApB,EAA0BjlB,KAA1B;IAD0C;IAI5C,WAAW64B,UAAX,IAAyB,KAAK,CAAA7D,WAA9B,EAA4C;MAC1C6D,UAAA,CAAWU,mBAAX,CAA+BtU,IAA/B,EAAqCjlB,KAArC;IAD0C;EATpB;EAiB1B,CAAAq5B,UAAA,EAAa;IACX,IAAI,CAAC,KAAK,CAAAjE,SAAV,EAAsB;MACpB,KAAK,CAAAA,SAAL,GAAkB,IAAlB;MACA,WAAW8B,KAAX,IAAoB,KAAK,CAAAtC,SAAL,CAAgBvX,MAAhB,EAApB,EAA8C;QAC5C6Z,KAAA,CAAM8B,MAAN;MAD4C;IAF1B;EADX;EAYb,CAAAI,WAAA,EAAc;IACZ,KAAKxC,WAAL;IACA,IAAI,KAAK,CAAAxB,SAAT,EAAqB;MACnB,KAAK,CAAAA,SAAL,GAAkB,KAAlB;MACA,WAAW8B,KAAX,IAAoB,KAAK,CAAAtC,SAAL,CAAgBvX,MAAhB,EAApB,EAA8C;QAC5C6Z,KAAA,CAAM+B,OAAN;MAD4C;IAF3B;EAFT;EAedO,WAAWviB,SAAX,EAAsB;IACpB,MAAM2gB,OAAA,GAAU,EAAhB;IACA,WAAW/K,MAAX,IAAqB,KAAK,CAAA8H,UAAL,CAAiBtX,MAAjB,EAArB,EAAgD;MAC9C,IAAIwP,MAAA,CAAO5V,SAAP,KAAqBA,SAAzB,EAAoC;QAClC2gB,OAAA,CAAQv1B,IAAR,CAAawqB,MAAb;MADkC;IADU;IAKhD,OAAO+K,OAAP;EAPoB;EAetB6B,UAAUtkB,EAAV,EAAc;IACZ,OAAO,KAAK,CAAAwf,UAAL,CAAiBzpB,GAAjB,CAAqBiK,EAArB,CAAP;EADY;EAQdukB,UAAU7M,MAAV,EAAkB;IAChB,KAAK,CAAA8H,UAAL,CAAiB9a,GAAjB,CAAqBgT,MAAA,CAAO1X,EAA5B,EAAgC0X,MAAhC;EADgB;EAQlB8M,aAAa9M,MAAb,EAAqB;IACnB,KAAK,CAAA8H,UAAL,CAAiBha,MAAjB,CAAwBkS,MAAA,CAAO1X,EAA/B;IACA,KAAKkc,QAAL,CAAcxE,MAAd;IACA,IACE,CAACA,MAAA,CAAOlB,mBAAR,IACA,CAAC,KAAK,CAAAoJ,4BAAL,CAAmCvU,GAAnC,CAAuCqM,MAAA,CAAOlB,mBAA9C,CAFH,EAGE;MACA,KAAK,CAAApX,iBAAL,EAAyBiV,MAAzB,CAAgCqD,MAAA,CAAO1X,EAAvC;IADA;EANiB;EAerBykB,4BAA4B/M,MAA5B,EAAoC;IAClC,KAAK,CAAAkI,4BAAL,CAAmC1Z,GAAnC,CAAuCwR,MAAA,CAAOlB,mBAA9C;IACAkB,MAAA,CAAOJ,OAAP,GAAiB,IAAjB;EAFkC;EAUpCoN,2BAA2BlO,mBAA3B,EAAgD;IAC9C,OAAO,KAAK,CAAAoJ,4BAAL,CAAmCvU,GAAnC,CAAuCmL,mBAAvC,CAAP;EAD8C;EAQhDmO,+BAA+BjN,MAA/B,EAAuC;IACrC,KAAK,CAAAkI,4BAAL,CAAmCpa,MAAnC,CAA0CkS,MAAA,CAAOlB,mBAAjD;IACAkB,MAAA,CAAOJ,OAAP,GAAiB,KAAjB;EAFqC;EASvC,CAAAyL,iBAAkBrL,MAAlB,EAA0B;IACxB,MAAMqK,KAAA,GAAQ,KAAK,CAAAtC,SAAL,CAAgB1pB,GAAhB,CAAoB2hB,MAAA,CAAO5V,SAA3B,CAAd;IACA,IAAIigB,KAAJ,EAAW;MACTA,KAAA,CAAM6C,YAAN,CAAmBlN,MAAnB;IADS,CAAX,MAEO;MACL,KAAK6M,SAAL,CAAe7M,MAAf;IADK;EAJiB;EAa1B8E,gBAAgB9E,MAAhB,EAAwB;IACtB,IAAI,KAAK,CAAA6H,YAAL,KAAuB7H,MAA3B,EAAmC;MACjC;IADiC;IAInC,KAAK,CAAA6H,YAAL,GAAqB7H,MAArB;IACA,IAAIA,MAAJ,EAAY;MACV,KAAK,CAAA4L,gBAAL,CAAuB5L,MAAA,CAAO4E,kBAA9B;IADU;EANU;EAexBnB,eAAezD,MAAf,EAAuB;IACrB,IAAI,KAAK,CAAAyI,eAAL,CAAsB9U,GAAtB,CAA0BqM,MAA1B,CAAJ,EAAuC;MACrC,KAAK,CAAAyI,eAAL,CAAsB3a,MAAtB,CAA6BkS,MAA7B;MACAA,MAAA,CAAOwE,QAAP;MACA,KAAK,CAAAgH,oBAAL,CAA2B;QACzB7B,iBAAA,EAAmB,KAAKmB;MADC,CAA3B;MAGA;IANqC;IAQvC,KAAK,CAAArC,eAAL,CAAsBja,GAAtB,CAA0BwR,MAA1B;IACAA,MAAA,CAAOsE,MAAP;IACA,KAAK,CAAAsH,gBAAL,CAAuB5L,MAAA,CAAO4E,kBAA9B;IACA,KAAK,CAAA4G,oBAAL,CAA2B;MACzB7B,iBAAA,EAAmB;IADM,CAA3B;EAZqB;EAqBvBhJ,YAAYX,MAAZ,EAAoB;IAClB,WAAWmN,EAAX,IAAiB,KAAK,CAAA1E,eAAtB,EAAwC;MACtC,IAAI0E,EAAA,KAAOnN,MAAX,EAAmB;QACjBmN,EAAA,CAAG3I,QAAH;MADiB;IADmB;IAKxC,KAAK,CAAAiE,eAAL,CAAsB7X,KAAtB;IAEA,KAAK,CAAA6X,eAAL,CAAsBja,GAAtB,CAA0BwR,MAA1B;IACAA,MAAA,CAAOsE,MAAP;IACA,KAAK,CAAAsH,gBAAL,CAAuB5L,MAAA,CAAO4E,kBAA9B;IACA,KAAK,CAAA4G,oBAAL,CAA2B;MACzB7B,iBAAA,EAAmB;IADM,CAA3B;EAXkB;EAoBpByD,WAAWpN,MAAX,EAAmB;IACjB,OAAO,KAAK,CAAAyI,eAAL,CAAsB9U,GAAtB,CAA0BqM,MAA1B,CAAP;EADiB;EAQnBwE,SAASxE,MAAT,EAAiB;IACfA,MAAA,CAAOwE,QAAP;IACA,KAAK,CAAAiE,eAAL,CAAsB3a,MAAtB,CAA6BkS,MAA7B;IACA,KAAK,CAAAwL,oBAAL,CAA2B;MACzB7B,iBAAA,EAAmB,KAAKmB;IADC,CAA3B;EAHe;EAQjB,IAAIA,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAArC,eAAL,CAAsBlZ,IAAtB,KAA+B,CAAtC;EADiB;EAOnBqW,KAAA,EAAO;IACL,KAAK,CAAAoC,cAAL,CAAqBpC,IAArB;IACA,KAAK,CAAA4F,oBAAL,CAA2B;MACzBrF,kBAAA,EAAoB,KAAK,CAAA6B,cAAL,CAAqB7B,kBAArB,EADK;MAEzBC,kBAAA,EAAoB,IAFK;MAGzBlF,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFK;EAYPgF,KAAA,EAAO;IACL,KAAK,CAAA8B,cAAL,CAAqB9B,IAArB;IACA,KAAK,CAAAsF,oBAAL,CAA2B;MACzBrF,kBAAA,EAAoB,IADK;MAEzBC,kBAAA,EAAoB,KAAK,CAAA4B,cAAL,CAAqB5B,kBAArB,EAFK;MAGzBlF,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFK;EAaPb,YAAYhgB,MAAZ,EAAoB;IAClB,KAAK,CAAA2nB,cAAL,CAAqBxZ,GAArB,CAAyBnO,MAAzB;IACA,KAAK,CAAAmrB,oBAAL,CAA2B;MACzBrF,kBAAA,EAAoB,IADK;MAEzBC,kBAAA,EAAoB,KAFK;MAGzBlF,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFkB;EASpB,CAAAA,QAAA,EAAW;IACT,IAAI,KAAK,CAAA4G,UAAL,CAAiBvY,IAAjB,KAA0B,CAA9B,EAAiC;MAC/B,OAAO,IAAP;IAD+B;IAIjC,IAAI,KAAK,CAAAuY,UAAL,CAAiBvY,IAAjB,KAA0B,CAA9B,EAAiC;MAC/B,WAAWyQ,MAAX,IAAqB,KAAK,CAAA8H,UAAL,CAAiBtX,MAAjB,EAArB,EAAgD;QAC9C,OAAOwP,MAAA,CAAOkB,OAAP,EAAP;MAD8C;IADjB;IAMjC,OAAO,KAAP;EAXS;EAiBXpT,OAAA,EAAS;IACP,KAAKmT,cAAL;IACA,IAAI,CAAC,KAAK6J,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMC,OAAA,GAAU,CAAC,GAAG,KAAK,CAAAtC,eAAT,CAAhB;IACA,MAAM9C,GAAA,GAAMA,CAAA,KAAM;MAChB,WAAW3F,MAAX,IAAqB+K,OAArB,EAA8B;QAC5B/K,MAAA,CAAOrD,MAAP;MAD4B;IADd,CAAlB;IAKA,MAAMiJ,IAAA,GAAOA,CAAA,KAAM;MACjB,WAAW5F,MAAX,IAAqB+K,OAArB,EAA8B;QAC5B,KAAK,CAAAM,gBAAL,CAAuBrL,MAAvB;MAD4B;IADb,CAAnB;IAMA,KAAKK,WAAL,CAAiB;MAAEsF,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EAlBO;EAqBT5E,eAAA,EAAiB;IAEf,KAAK,CAAA4G,YAAL,EAAoB5G,cAApB;EAFe;EASjB,CAAAqK,cAAeP,OAAf,EAAwB;IACtB,KAAK,CAAAtC,eAAL,CAAsB7X,KAAtB;IACA,WAAWoP,MAAX,IAAqB+K,OAArB,EAA8B;MAC5B,IAAI/K,MAAA,CAAOkB,OAAP,EAAJ,EAAsB;QACpB;MADoB;MAGtB,KAAK,CAAAuH,eAAL,CAAsBja,GAAtB,CAA0BwR,MAA1B;MACAA,MAAA,CAAOsE,MAAP;IAL4B;IAO9B,KAAK,CAAAkH,oBAAL,CAA2B;MAAE7B,iBAAA,EAAmB;IAArB,CAA3B;EATsB;EAexBG,UAAA,EAAY;IACV,WAAW9J,MAAX,IAAqB,KAAK,CAAAyI,eAA1B,EAA4C;MAC1CzI,MAAA,CAAOmB,MAAP;IAD0C;IAG5C,KAAK,CAAAmK,aAAL,CAAoB,KAAK,CAAAxD,UAAL,CAAiBtX,MAAjB,EAApB;EAJU;EAUZuZ,YAAA,EAAc;IACZ,IAAI,KAAK,CAAAlC,YAAT,EAAwB;MAEtB,KAAK,CAAAA,YAAL,CAAmB5G,cAAnB;MACA;IAHsB;IAMxB,IAAI,KAAK,CAAAwH,eAAL,CAAsBlZ,IAAtB,KAA+B,CAAnC,EAAsC;MACpC;IADoC;IAGtC,WAAWyQ,MAAX,IAAqB,KAAK,CAAAyI,eAA1B,EAA4C;MAC1CzI,MAAA,CAAOwE,QAAP;IAD0C;IAG5C,KAAK,CAAAiE,eAAL,CAAsB7X,KAAtB;IACA,KAAK,CAAA4a,oBAAL,CAA2B;MACzB7B,iBAAA,EAAmB;IADM,CAA3B;EAdY;EAwBd0D,SAASrN,MAAT,EAAiB;IACf,OAAO,KAAK,CAAA6H,YAAL,KAAuB7H,MAA9B;EADe;EAQjBuL,UAAA,EAAY;IACV,OAAO,KAAK,CAAA1D,YAAZ;EADU;EAQZyF,QAAA,EAAU;IACR,OAAO,KAAK,CAAA9E,IAAZ;EADQ;AAzxBoB;AA/VhCnmC,iCAAA,GAAAulC,yBAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACeA,IAAA2F,aAAA,GAAAhvB,mBAAA;AAOA,IAAAD,KAAA,GAAAC,mBAAA;AAQA,MAAMivB,MAAA,GAAS,4BAAf;AAEA,MAAMC,gBAAA,GAAmB,oBAAzB;AAhCAprC,wBAAA,GAAAorC,gBAAA;AAkCA,MAAMxD,aAAN,CAAoB;EAClB,OAAOyD,GAAP,GAAa,IAAb;EAEA,OAAOC,GAAP,GAAa,IAAb;EAEA,OAAOzD,gBAAP,GAA0B,KAAKwD,GAAL,GAAW,KAAKC,GAA1C;AALkB;AAlCpBtrC,qBAAA,GAAA4nC,aAAA;AAmDA,MAAMlqB,gBAAN,SAA+B6tB,+BAA/B,CAAiD;EAC/C,CAAAC,MAAA;EAEA,CAAAC,KAAA;EAEA,CAAAhtB,KAAA;EAEA,CAAA2B,QAAA;EAEA,CAAAsrB,SAAA;EAEA,CAAAC,MAAA;EAEA,CAAAC,MAAA;EAEA,CAAAC,kBAAA;EAEA,CAAAC,eAAA;EAEA,CAAAC,eAAA;EAEA,CAAA9lB,EAAA,GAAM,CAAN;EAEAxU,YAAY;IAAEgN,KAAF;IAASyB,aAAA,GAAgBC,UAAA,CAAWC;EAApC,IAAiD,EAA7D,EAAiE;IAC/D;IACA,KAAK,CAAA3B,KAAL,GAAcA,KAAd;IACA,KAAK,CAAA2B,QAAL,GAAiBF,aAAjB;EAH+D;EAMjE,IAAI,CAAA8rB,KAAJA,CAAA,EAAa;IACX,OAAQ,KAAK,CAAAR,MAAL,KAAiB,IAAI5vB,GAAJ,EAAzB;EADW;EAIb,IAAI,CAAAqwB,IAAJA,CAAA,EAAY;IACV,IAAI,CAAC,KAAK,CAAAR,KAAV,EAAkB;MAChB,MAAMlP,GAAA,GAAM,KAAK,CAAAnc,QAAL,CAAeugB,aAAf,CAA6B,KAA7B,CAAZ;MACA,MAAM;QAAExC;MAAF,IAAY5B,GAAlB;MACA4B,KAAA,CAAM+N,UAAN,GAAmB,QAAnB;MACA/N,KAAA,CAAMgO,OAAN,GAAgB,QAAhB;MACAhO,KAAA,CAAMtH,KAAN,GAAcsH,KAAA,CAAMrH,MAAN,GAAe,CAA7B;MACAqH,KAAA,CAAMkF,QAAN,GAAiB,UAAjB;MACAlF,KAAA,CAAM0B,GAAN,GAAY1B,KAAA,CAAMyB,IAAN,GAAa,CAAzB;MACAzB,KAAA,CAAMjC,MAAN,GAAe,CAAC,CAAhB;MAEA,MAAMkQ,GAAA,GAAM,KAAK,CAAAhsB,QAAL,CAAeisB,eAAf,CAA+BlB,MAA/B,EAAuC,KAAvC,CAAZ;MACAiB,GAAA,CAAIxL,YAAJ,CAAiB,OAAjB,EAA0B,CAA1B;MACAwL,GAAA,CAAIxL,YAAJ,CAAiB,QAAjB,EAA2B,CAA3B;MACA,KAAK,CAAA6K,KAAL,GAAc,KAAK,CAAArrB,QAAL,CAAeisB,eAAf,CAA+BlB,MAA/B,EAAuC,MAAvC,CAAd;MACA5O,GAAA,CAAI+P,MAAJ,CAAWF,GAAX;MACAA,GAAA,CAAIE,MAAJ,CAAW,KAAK,CAAAb,KAAhB;MACA,KAAK,CAAArrB,QAAL,CAAemsB,IAAf,CAAoBD,MAApB,CAA2B/P,GAA3B;IAhBgB;IAkBlB,OAAO,KAAK,CAAAkP,KAAZ;EAnBU;EAsBZe,UAAUC,IAAV,EAAgB;IACd,IAAI,CAACA,IAAL,EAAW;MACT,OAAO,MAAP;IADS;IAMX,IAAI37B,KAAA,GAAQ,KAAK,CAAAk7B,KAAL,CAAYhwB,GAAZ,CAAgBywB,IAAhB,CAAZ;IACA,IAAI37B,KAAJ,EAAW;MACT,OAAOA,KAAP;IADS;IAIX,IAAI47B,MAAJ,EAAYC,MAAZ,EAAoBC,MAApB,EAA4B74B,GAA5B;IACA,IAAI04B,IAAA,CAAKn8B,MAAL,KAAgB,CAApB,EAAuB;MACrB,MAAMu8B,IAAA,GAAOJ,IAAA,CAAK,CAAL,CAAb;MACA,MAAMr4B,MAAA,GAAS,IAAIY,KAAJ,CAAU,GAAV,CAAf;MACA,KAAK,IAAInC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;QAC5BuB,MAAA,CAAOvB,CAAP,IAAYg6B,IAAA,CAAKh6B,CAAL,IAAU,GAAtB;MAD4B;MAG9BkB,GAAA,GAAM24B,MAAA,GAASC,MAAA,GAASC,MAAA,GAASx4B,MAAA,CAAOhB,IAAP,CAAY,GAAZ,CAAjC;IANqB,CAAvB,MAOO;MACL,MAAM,CAACy5B,IAAD,EAAOC,IAAP,EAAaC,IAAb,IAAqBN,IAA3B;MACA,MAAMO,OAAA,GAAU,IAAIh4B,KAAJ,CAAU,GAAV,CAAhB;MACA,MAAMi4B,OAAA,GAAU,IAAIj4B,KAAJ,CAAU,GAAV,CAAhB;MACA,MAAMk4B,OAAA,GAAU,IAAIl4B,KAAJ,CAAU,GAAV,CAAhB;MACA,KAAK,IAAInC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;QAC5Bm6B,OAAA,CAAQn6B,CAAR,IAAag6B,IAAA,CAAKh6B,CAAL,IAAU,GAAvB;QACAo6B,OAAA,CAAQp6B,CAAR,IAAai6B,IAAA,CAAKj6B,CAAL,IAAU,GAAvB;QACAq6B,OAAA,CAAQr6B,CAAR,IAAak6B,IAAA,CAAKl6B,CAAL,IAAU,GAAvB;MAH4B;MAK9B65B,MAAA,GAASM,OAAA,CAAQ55B,IAAR,CAAa,GAAb,CAAT;MACAu5B,MAAA,GAASM,OAAA,CAAQ75B,IAAR,CAAa,GAAb,CAAT;MACAw5B,MAAA,GAASM,OAAA,CAAQ95B,IAAR,CAAa,GAAb,CAAT;MACAW,GAAA,GAAM,GAAG24B,MAAH,GAAYC,MAAZ,GAAqBC,MAArB,EAAN;IAbK;IAgBP97B,KAAA,GAAQ,KAAK,CAAAk7B,KAAL,CAAYhwB,GAAZ,CAAgBjI,GAAhB,CAAR;IACA,IAAIjD,KAAJ,EAAW;MACT,KAAK,CAAAk7B,KAAL,CAAYrhB,GAAZ,CAAgB8hB,IAAhB,EAAsB37B,KAAtB;MACA,OAAOA,KAAP;IAFS;IAQX,MAAMmV,EAAA,GAAM,KAAI,KAAK,CAAAxH,KAAO,iBAAgB,KAAK,CAAAwH,EAAL,EAAjC,EAAX;IACA,MAAMpW,GAAA,GAAO,QAAOoW,EAAG,GAAvB;IACA,KAAK,CAAA+lB,KAAL,CAAYrhB,GAAZ,CAAgB8hB,IAAhB,EAAsB58B,GAAtB;IACA,KAAK,CAAAm8B,KAAL,CAAYrhB,GAAZ,CAAgB5W,GAAhB,EAAqBlE,GAArB;IAEA,MAAMs9B,MAAA,GAAS,KAAK,CAAAC,YAAL,CAAmBnnB,EAAnB,CAAf;IACA,KAAK,CAAAonB,wBAAL,CAA+BX,MAA/B,EAAuCC,MAAvC,EAA+CC,MAA/C,EAAuDO,MAAvD;IAEA,OAAOt9B,GAAP;EArDc;EAwDhBy9B,aAAaC,OAAb,EAAsBC,OAAtB,EAA+B;IAC7B,MAAMz5B,GAAA,GAAM,GAAGw5B,OAAQ,IAAGC,OAAd,EAAZ;IACA,IAAI,KAAK,CAAA7B,MAAL,KAAiB53B,GAArB,EAA0B;MACxB,OAAO,KAAK,CAAA63B,MAAZ;IADwB;IAI1B,KAAK,CAAAD,MAAL,GAAe53B,GAAf;IACA,KAAK,CAAA63B,MAAL,GAAe,MAAf;IACA,KAAK,CAAAF,SAAL,EAAiBpR,MAAjB;IAEA,IAAI,CAACiT,OAAD,IAAY,CAACC,OAAjB,EAA0B;MACxB,OAAO,KAAK,CAAA5B,MAAZ;IADwB;IAI1B,MAAM6B,KAAA,GAAQ,KAAK,CAAAvI,MAAL,CAAaqI,OAAb,CAAd;IACAA,OAAA,GAAUn4B,UAAA,CAAKC,YAAL,CAAkB,GAAGo4B,KAArB,CAAV;IACA,MAAMC,KAAA,GAAQ,KAAK,CAAAxI,MAAL,CAAasI,OAAb,CAAd;IACAA,OAAA,GAAUp4B,UAAA,CAAKC,YAAL,CAAkB,GAAGq4B,KAArB,CAAV;IACA,KAAK,CAAAzB,IAAL,CAAW9N,KAAX,CAAiB6G,KAAjB,GAAyB,EAAzB;IAEA,IACGuI,OAAA,KAAY,SAAZ,IAAyBC,OAAA,KAAY,SAAtC,IACAD,OAAA,KAAYC,OAFd,EAGE;MACA,OAAO,KAAK,CAAA5B,MAAZ;IADA;IAaF,MAAM/3B,GAAA,GAAM,IAAImB,KAAJ,CAAU,GAAV,CAAZ;IACA,KAAK,IAAInC,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAK,GAArB,EAA0BA,CAAA,EAA1B,EAA+B;MAC7B,MAAMuqB,CAAA,GAAIvqB,CAAA,GAAI,GAAd;MACAgB,GAAA,CAAIhB,CAAJ,IAASuqB,CAAA,IAAK,OAAL,GAAeA,CAAA,GAAI,KAAnB,GAA4B,CAAC,CAAAA,CAAA,GAAI,KAAJ,IAAa,KAAd,KAAwB,GAA7D;IAF6B;IAI/B,MAAMuQ,KAAA,GAAQ95B,GAAA,CAAIT,IAAJ,CAAS,GAAT,CAAd;IAEA,MAAM6S,EAAA,GAAM,KAAI,KAAK,CAAAxH,KAAO,aAA5B;IACA,MAAM0uB,MAAA,GAAU,KAAK,CAAAtB,kBAAL,GAA2B,KAAK,CAAAuB,YAAL,CAAmBnnB,EAAnB,CAA3C;IACA,KAAK,CAAAonB,wBAAL,CAA+BM,KAA/B,EAAsCA,KAAtC,EAA6CA,KAA7C,EAAoDR,MAApD;IACA,KAAK,CAAAS,iBAAL,CAAwBT,MAAxB;IAEA,MAAMU,QAAA,GAAWA,CAAC72B,CAAD,EAAI/B,CAAJ,KAAU;MACzB,MAAM64B,KAAA,GAAQL,KAAA,CAAMz2B,CAAN,IAAW,GAAzB;MACA,MAAMgO,GAAA,GAAM0oB,KAAA,CAAM12B,CAAN,IAAW,GAAvB;MACA,MAAM+2B,GAAA,GAAM,IAAI/4B,KAAJ,CAAUC,CAAA,GAAI,CAAd,CAAZ;MACA,KAAK,IAAIpC,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAKoC,CAArB,EAAwBpC,CAAA,EAAxB,EAA6B;QAC3Bk7B,GAAA,CAAIl7B,CAAJ,IAASi7B,KAAA,GAASj7B,CAAA,GAAIoC,CAAL,IAAW+P,GAAA,GAAM8oB,KAAN,CAA5B;MAD2B;MAG7B,OAAOC,GAAA,CAAI36B,IAAJ,CAAS,GAAT,CAAP;IAPyB,CAA3B;IASA,KAAK,CAAAi6B,wBAAL,CACEQ,QAAA,CAAS,CAAT,EAAY,CAAZ,CADF,EAEEA,QAAA,CAAS,CAAT,EAAY,CAAZ,CAFF,EAGEA,QAAA,CAAS,CAAT,EAAY,CAAZ,CAHF,EAIEV,MAJF;IAOA,KAAK,CAAAvB,MAAL,GAAgB,QAAO3lB,EAAG,GAA1B;IACA,OAAO,KAAK,CAAA2lB,MAAZ;EAjE6B;EAoE/BoC,sBAAsBT,OAAtB,EAA+BC,OAA/B,EAAwCS,UAAxC,EAAoDC,UAApD,EAAgE;IAC9D,MAAMn6B,GAAA,GAAM,GAAGw5B,OAAQ,IAAGC,OAAQ,IAAGS,UAAW,IAAGC,UAAvC,EAAZ;IACA,IAAI,KAAK,CAAApC,eAAL,KAA0B/3B,GAA9B,EAAmC;MACjC,OAAO,KAAK,CAAAg4B,eAAZ;IADiC;IAInC,KAAK,CAAAD,eAAL,GAAwB/3B,GAAxB;IACA,KAAK,CAAAg4B,eAAL,GAAwB,MAAxB;IACA,KAAK,CAAAF,kBAAL,EAA0BvR,MAA1B;IAEA,IAAI,CAACiT,OAAD,IAAY,CAACC,OAAjB,EAA0B;MACxB,OAAO,KAAK,CAAAzB,eAAZ;IADwB;IAI1B,MAAM,CAAC0B,KAAD,EAAQC,KAAR,IAAiB,CAACH,OAAD,EAAUC,OAAV,EAAmB35B,GAAnB,CAAuB,KAAK,CAAAqxB,MAAL,CAAa1O,IAAb,CAAkB,IAAlB,CAAvB,CAAvB;IACA,IAAI2X,MAAA,GAASp7B,IAAA,CAAK+vB,KAAL,CACX,SAAS2K,KAAA,CAAM,CAAN,CAAT,GAAoB,SAASA,KAAA,CAAM,CAAN,CAA7B,GAAwC,SAASA,KAAA,CAAM,CAAN,CADtC,CAAb;IAGA,IAAIW,MAAA,GAASr7B,IAAA,CAAK+vB,KAAL,CACX,SAAS4K,KAAA,CAAM,CAAN,CAAT,GAAoB,SAASA,KAAA,CAAM,CAAN,CAA7B,GAAwC,SAASA,KAAA,CAAM,CAAN,CADtC,CAAb;IAGA,IAAI,CAACW,QAAD,EAAWC,QAAX,IAAuB,CAACL,UAAD,EAAaC,UAAb,EAAyBr6B,GAAzB,CACzB,KAAK,CAAAqxB,MAAL,CAAa1O,IAAb,CAAkB,IAAlB,CADyB,CAA3B;IAGA,IAAI4X,MAAA,GAASD,MAAb,EAAqB;MACnB,CAACA,MAAD,EAASC,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,IAAuC,CACrCF,MADqC,EAErCD,MAFqC,EAGrCG,QAHqC,EAIrCD,QAJqC,CAAvC;IADmB;IAQrB,KAAK,CAAApC,IAAL,CAAW9N,KAAX,CAAiB6G,KAAjB,GAAyB,EAAzB;IAeA,MAAM6I,QAAA,GAAWA,CAACU,EAAD,EAAKC,EAAL,EAASv5B,CAAT,KAAe;MAC9B,MAAM84B,GAAA,GAAM,IAAI/4B,KAAJ,CAAU,GAAV,CAAZ;MACA,MAAMy5B,IAAA,GAAQ,CAAAL,MAAA,GAASD,MAAT,IAAmBl5B,CAAjC;MACA,MAAMy5B,QAAA,GAAWH,EAAA,GAAK,GAAtB;MACA,MAAMI,OAAA,GAAW,CAAAH,EAAA,GAAKD,EAAL,KAAY,MAAMt5B,CAAN,CAA7B;MACA,IAAI25B,IAAA,GAAO,CAAX;MACA,KAAK,IAAI/7B,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAKoC,CAArB,EAAwBpC,CAAA,EAAxB,EAA6B;QAC3B,MAAMg8B,CAAA,GAAI97B,IAAA,CAAK+vB,KAAL,CAAWqL,MAAA,GAASt7B,CAAA,GAAI47B,IAAxB,CAAV;QACA,MAAM39B,KAAA,GAAQ49B,QAAA,GAAW77B,CAAA,GAAI87B,OAA7B;QACA,KAAK,IAAI31B,CAAA,GAAI41B,IAAR,EAAc51B,CAAA,IAAK61B,CAAxB,EAA2B71B,CAAA,EAA3B,EAAgC;UAC9B+0B,GAAA,CAAI/0B,CAAJ,IAASlI,KAAT;QAD8B;QAGhC89B,IAAA,GAAOC,CAAA,GAAI,CAAX;MAN2B;MAQ7B,KAAK,IAAIh8B,CAAA,GAAI+7B,IAAR,EAAc/7B,CAAA,GAAI,GAAvB,EAA4BA,CAAA,EAA5B,EAAiC;QAC/Bk7B,GAAA,CAAIl7B,CAAJ,IAASk7B,GAAA,CAAIa,IAAA,GAAO,CAAX,CAAT;MAD+B;MAGjC,OAAOb,GAAA,CAAI36B,IAAJ,CAAS,GAAT,CAAP;IAjB8B,CAAhC;IAoBA,MAAM6S,EAAA,GAAM,KAAI,KAAK,CAAAxH,KAAO,uBAA5B;IACA,MAAM0uB,MAAA,GAAU,KAAK,CAAAtB,kBAAL,GAA2B,KAAK,CAAAuB,YAAL,CAAmBnnB,EAAnB,CAA3C;IAEA,KAAK,CAAA2nB,iBAAL,CAAwBT,MAAxB;IACA,KAAK,CAAAE,wBAAL,CACEQ,QAAA,CAASQ,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CADF,EAEET,QAAA,CAASQ,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CAFF,EAGET,QAAA,CAASQ,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CAHF,EAIEnB,MAJF;IAOA,KAAK,CAAApB,eAAL,GAAyB,QAAO9lB,EAAG,GAAnC;IACA,OAAO,KAAK,CAAA8lB,eAAZ;EA/E8D;EAkFhEnoB,QAAQkrB,OAAA,GAAU,KAAlB,EAAyB;IACvB,IAAIA,OAAA,KAAY,KAAK,CAAAlD,MAAL,IAAgB,KAAK,CAAAG,eAArB,CAAhB,EAAwD;MACtD;IADsD;IAGxD,IAAI,KAAK,CAAAN,KAAT,EAAiB;MACf,KAAK,CAAAA,KAAL,CAAYsD,UAAZ,CAAuBA,UAAvB,CAAkCzU,MAAlC;MACA,KAAK,CAAAmR,KAAL,GAAc,IAAd;IAFe;IAIjB,IAAI,KAAK,CAAAD,MAAT,EAAkB;MAChB,KAAK,CAAAA,MAAL,CAAajd,KAAb;MACA,KAAK,CAAAid,MAAL,GAAe,IAAf;IAFgB;IAIlB,KAAK,CAAAvlB,EAAL,GAAW,CAAX;EAZuB;EAezB,CAAA2nB,kBAAmBT,MAAnB,EAA2B;IACzB,MAAM6B,aAAA,GAAgB,KAAK,CAAA5uB,QAAL,CAAeisB,eAAf,CACpBlB,MADoB,EAEpB,eAFoB,CAAtB;IAIA6D,aAAA,CAAcpO,YAAd,CAA2B,MAA3B,EAAmC,QAAnC;IACAoO,aAAA,CAAcpO,YAAd,CACE,QADF,EAEE,sFAFF;IAIAuM,MAAA,CAAOb,MAAP,CAAc0C,aAAd;EAVyB;EAa3B,CAAA5B,aAAcnnB,EAAd,EAAkB;IAChB,MAAMknB,MAAA,GAAS,KAAK,CAAA/sB,QAAL,CAAeisB,eAAf,CAA+BlB,MAA/B,EAAuC,QAAvC,CAAf;IACAgC,MAAA,CAAOvM,YAAP,CAAoB,6BAApB,EAAmD,MAAnD;IACAuM,MAAA,CAAOvM,YAAP,CAAoB,IAApB,EAA0B3a,EAA1B;IACA,KAAK,CAAAgmB,IAAL,CAAWK,MAAX,CAAkBa,MAAlB;IAEA,OAAOA,MAAP;EANgB;EASlB,CAAA8B,aAAcC,mBAAd,EAAmCC,IAAnC,EAAyCxB,KAAzC,EAAgD;IAC9C,MAAMyB,MAAA,GAAS,KAAK,CAAAhvB,QAAL,CAAeisB,eAAf,CAA+BlB,MAA/B,EAAuCgE,IAAvC,CAAf;IACAC,MAAA,CAAOxO,YAAP,CAAoB,MAApB,EAA4B,UAA5B;IACAwO,MAAA,CAAOxO,YAAP,CAAoB,aAApB,EAAmC+M,KAAnC;IACAuB,mBAAA,CAAoB5C,MAApB,CAA2B8C,MAA3B;EAJ8C;EAOhD,CAAA/B,yBAA0BgC,MAA1B,EAAkCC,MAAlC,EAA0CC,MAA1C,EAAkDpC,MAAlD,EAA0D;IACxD,MAAM+B,mBAAA,GAAsB,KAAK,CAAA9uB,QAAL,CAAeisB,eAAf,CAC1BlB,MAD0B,EAE1B,qBAF0B,CAA5B;IAIAgC,MAAA,CAAOb,MAAP,CAAc4C,mBAAd;IACA,KAAK,CAAAD,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDG,MAAnD;IACA,KAAK,CAAAJ,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDI,MAAnD;IACA,KAAK,CAAAL,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDK,MAAnD;EARwD;EAW1D,CAAArK,OAAQF,KAAR,EAAe;IACb,KAAK,CAAAiH,IAAL,CAAW9N,KAAX,CAAiB6G,KAAjB,GAAyBA,KAAzB;IACA,OAAOE,MAAA,CAAOsK,gBAAA,CAAiB,KAAK,CAAAvD,IAAtB,EAA6BwD,gBAA7B,CAA8C,OAA9C,CAAP,CAAP;EAFa;AA5TgC;AAnDjDzvC,wBAAA,GAAA0d,gBAAA;AAqXA,MAAMN,gBAAN,SAA+BsyB,+BAA/B,CAAiD;EAC/Cj+B,YAAY;IAAEyO,aAAA,GAAgBC,UAAA,CAAWC;EAA7B,IAA0C,EAAtD,EAA0D;IACxD;IACA,KAAKuvB,SAAL,GAAiBzvB,aAAjB;EAFwD;EAQ1D0vB,cAAc/Y,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAMe,MAAA,GAAS,KAAK8X,SAAL,CAAehP,aAAf,CAA6B,QAA7B,CAAf;IACA9I,MAAA,CAAOhB,KAAP,GAAeA,KAAf;IACAgB,MAAA,CAAOf,MAAP,GAAgBA,MAAhB;IACA,OAAOe,MAAP;EAJ2B;AATkB;AArXjD73B,wBAAA,GAAAod,gBAAA;AAsYA,eAAeyyB,SAAfA,CAAyBhgC,GAAzB,EAA8BigC,YAAA,GAAe,KAA7C,EAAoD;EAClD,IAEE3xB,eAAA,CAAgBtO,GAAhB,EAAqBuQ,QAAA,CAASQ,OAA9B,CAFF,EAGE;IACA,MAAMmvB,QAAA,GAAW,MAAMhZ,KAAA,CAAMlnB,GAAN,CAAvB;IACA,IAAI,CAACkgC,QAAA,CAASC,EAAd,EAAkB;MAChB,MAAM,IAAIvgC,KAAJ,CAAUsgC,QAAA,CAASE,UAAnB,CAAN;IADgB;IAGlB,OAAOH,YAAA,GACH,IAAIv8B,UAAJ,CAAe,MAAMw8B,QAAA,CAASG,WAAT,EAArB,CADG,GAEH,IAAA78B,mBAAA,EAAc,MAAM08B,QAAA,CAASI,IAAT,EAApB,CAFJ;EALA;EAWF,OAAO,IAAI/0B,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtC,MAAM80B,OAAA,GAAU,IAAIC,cAAJ,EAAhB;IACAD,OAAA,CAAQE,IAAR,CAAa,KAAb,EAAoBzgC,GAApB,EAA8C,IAA9C;IAEA,IAAIigC,YAAJ,EAAkB;MAChBM,OAAA,CAAQG,YAAR,GAAuB,aAAvB;IADgB;IAGlBH,OAAA,CAAQI,kBAAR,GAA6B,MAAM;MACjC,IAAIJ,OAAA,CAAQK,UAAR,KAAuBJ,cAAA,CAAeK,IAA1C,EAAgD;QAC9C;MAD8C;MAGhD,IAAIN,OAAA,CAAQl+B,MAAR,KAAmB,GAAnB,IAA0Bk+B,OAAA,CAAQl+B,MAAR,KAAmB,CAAjD,EAAoD;QAClD,IAAIqJ,IAAJ;QACA,IAAIu0B,YAAA,IAAgBM,OAAA,CAAQL,QAA5B,EAAsC;UACpCx0B,IAAA,GAAO,IAAIhI,UAAJ,CAAe68B,OAAA,CAAQL,QAAvB,CAAP;QADoC,CAAtC,MAEO,IAAI,CAACD,YAAD,IAAiBM,OAAA,CAAQO,YAA7B,EAA2C;UAChDp1B,IAAA,GAAO,IAAAlI,mBAAA,EAAc+8B,OAAA,CAAQO,YAAtB,CAAP;QADgD;QAGlD,IAAIp1B,IAAJ,EAAU;UACRF,OAAA,CAAQE,IAAR;UACA;QAFQ;MAPwC;MAYpDD,MAAA,CAAO,IAAI7L,KAAJ,CAAU2gC,OAAA,CAAQH,UAAlB,CAAP;IAhBiC,CAAnC;IAmBAG,OAAA,CAAQrtB,IAAR,CAAa,IAAb;EA1BsC,CAAjC,CAAP;AAfkD;AA6CpD,MAAMxF,oBAAN,SAAmCqzB,mCAAnC,CAAyD;EAIvDC,WAAWhhC,GAAX,EAAgBihC,eAAhB,EAAiC;IAC/B,OAAOjB,SAAA,CAAUhgC,GAAV,EAAoC,KAAKqR,YAAzC,EAAuDY,IAAvD,CAA4DvG,IAAA,IAAQ;MACzE,OAAO;QAAEw1B,QAAA,EAAUx1B,IAAZ;QAAkBu1B;MAAlB,CAAP;IADyE,CAApE,CAAP;EAD+B;AAJsB;AAnbzD9wC,4BAAA,GAAAud,oBAAA;AA8bA,MAAMM,0BAAN,SAAyCmzB,yCAAzC,CAAqE;EAInEH,WAAWhhC,GAAX,EAAgB;IACd,OAAOggC,SAAA,CAAUhgC,GAAV,EAAoC,IAApC,CAAP;EADc;AAJmD;AA9brE7P,kCAAA,GAAA6d,0BAAA;AAucA,MAAMozB,aAAN,SAA4BC,4BAA5B,CAA2C;EAIzCC,WAAWpb,IAAX,EAAiB;IACf,OAAO3V,QAAA,CAASisB,eAAT,CAAyBlB,MAAzB,EAAiCpV,IAAjC,CAAP;EADe;AAJwB;AAvc3C/1B,qBAAA,GAAAixC,aAAA;AA+eA,MAAM7nB,YAAN,CAAmB;EAIjB3X,YAAY;IACV4X,OADU;IAEVN,KAFU;IAGVC,QAHU;IAIVC,OAAA,GAAU,CAJA;IAKVC,OAAA,GAAU,CALA;IAMVC,QAAA,GAAW;EAND,CAAZ,EAOG;IACD,KAAKE,OAAL,GAAeA,OAAf;IACA,KAAKN,KAAL,GAAaA,KAAb;IACA,KAAKC,QAAL,GAAgBA,QAAhB;IACA,KAAKC,OAAL,GAAeA,OAAf;IACA,KAAKC,OAAL,GAAeA,OAAf;IAIA,MAAMkoB,OAAA,GAAW,CAAA/nB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2B,CAA5C;IACA,MAAMgoB,OAAA,GAAW,CAAAhoB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2B,CAA5C;IACA,IAAIioB,OAAJ,EAAaC,OAAb,EAAsBC,OAAtB,EAA+BC,OAA/B;IAEAzoB,QAAA,IAAY,GAAZ;IACA,IAAIA,QAAA,GAAW,CAAf,EAAkB;MAChBA,QAAA,IAAY,GAAZ;IADgB;IAGlB,QAAQA,QAAR;MACE,KAAK,GAAL;QACEsoB,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,EAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,GAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,CAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAC,CAAX;QACA;MACF;QACE,MAAM,IAAIhiC,KAAJ,CACJ,mEADI,CAAN;IA1BJ;IA+BA,IAAI0Z,QAAJ,EAAc;MACZqoB,OAAA,GAAU,CAACA,OAAX;MACAC,OAAA,GAAU,CAACA,OAAX;IAFY;IAKd,IAAIC,aAAJ,EAAmBC,aAAnB;IACA,IAAI9a,KAAJ,EAAWC,MAAX;IACA,IAAIwa,OAAA,KAAY,CAAhB,EAAmB;MACjBI,aAAA,GAAgB3+B,IAAA,CAAKgG,GAAL,CAASs4B,OAAA,GAAUhoB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCE,OAAzD;MACA0oB,aAAA,GAAgB5+B,IAAA,CAAKgG,GAAL,CAASq4B,OAAA,GAAU/nB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCG,OAAzD;MACA2N,KAAA,GAAS,CAAAxN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAApC;MACA+N,MAAA,GAAU,CAAAzN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAArC;IAJiB,CAAnB,MAKO;MACL2oB,aAAA,GAAgB3+B,IAAA,CAAKgG,GAAL,CAASq4B,OAAA,GAAU/nB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCE,OAAzD;MACA0oB,aAAA,GAAgB5+B,IAAA,CAAKgG,GAAL,CAASs4B,OAAA,GAAUhoB,OAAA,CAAQ,CAAR,CAAnB,IAAiCN,KAAjC,GAAyCG,OAAzD;MACA2N,KAAA,GAAS,CAAAxN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAApC;MACA+N,MAAA,GAAU,CAAAzN,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BN,KAArC;IAJK;IASP,KAAKlf,SAAL,GAAiB,CACfynC,OAAA,GAAUvoB,KADK,EAEfwoB,OAAA,GAAUxoB,KAFK,EAGfyoB,OAAA,GAAUzoB,KAHK,EAIf0oB,OAAA,GAAU1oB,KAJK,EAKf2oB,aAAA,GAAgBJ,OAAA,GAAUvoB,KAAV,GAAkBqoB,OAAlC,GAA4CI,OAAA,GAAUzoB,KAAV,GAAkBsoB,OAL/C,EAMfM,aAAA,GAAgBJ,OAAA,GAAUxoB,KAAV,GAAkBqoB,OAAlC,GAA4CK,OAAA,GAAU1oB,KAAV,GAAkBsoB,OAN/C,CAAjB;IASA,KAAKxa,KAAL,GAAaA,KAAb;IACA,KAAKC,MAAL,GAAcA,MAAd;EA/EC;EAsFH,IAAI4F,OAAJA,CAAA,EAAc;IACZ,MAAM;MAAErT;IAAF,IAAc,IAApB;IACA,OAAO,IAAA1Y,YAAA,EAAO,IAAP,EAAa,SAAb,EAAwB;MAC7BgsB,SAAA,EAAWtT,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CADK;MAE7BuT,UAAA,EAAYvT,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAFI;MAG7BwT,KAAA,EAAOxT,OAAA,CAAQ,CAAR,CAHsB;MAI7ByT,KAAA,EAAOzT,OAAA,CAAQ,CAAR;IAJsB,CAAxB,CAAP;EAFY;EAedmS,MAAM;IACJzS,KAAA,GAAQ,KAAKA,KADT;IAEJC,QAAA,GAAW,KAAKA,QAFZ;IAGJC,OAAA,GAAU,KAAKA,OAHX;IAIJC,OAAA,GAAU,KAAKA,OAJX;IAKJC,QAAA,GAAW;EALP,IAMF,EANJ,EAMQ;IACN,OAAO,IAAIC,YAAJ,CAAiB;MACtBC,OAAA,EAAS,KAAKA,OAAL,CAAa7S,KAAb,EADa;MAEtBuS,KAFsB;MAGtBC,QAHsB;MAItBC,OAJsB;MAKtBC,OALsB;MAMtBC;IANsB,CAAjB,CAAP;EADM;EAqBRyoB,uBAAuBxU,CAAvB,EAA0BC,CAA1B,EAA6B;IAC3B,OAAOjoB,UAAA,CAAKU,cAAL,CAAoB,CAACsnB,CAAD,EAAIC,CAAJ,CAApB,EAA4B,KAAKxzB,SAAjC,CAAP;EAD2B;EAW7BgoC,2BAA2Bt6B,IAA3B,EAAiC;IAC/B,MAAMu6B,OAAA,GAAU18B,UAAA,CAAKU,cAAL,CAAoB,CAACyB,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwC,KAAK1N,SAA7C,CAAhB;IACA,MAAMkoC,WAAA,GAAc38B,UAAA,CAAKU,cAAL,CAAoB,CAACyB,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwC,KAAK1N,SAA7C,CAApB;IACA,OAAO,CAACioC,OAAA,CAAQ,CAAR,CAAD,EAAaA,OAAA,CAAQ,CAAR,CAAb,EAAyBC,WAAA,CAAY,CAAZ,CAAzB,EAAyCA,WAAA,CAAY,CAAZ,CAAzC,CAAP;EAH+B;EAejCC,kBAAkB5U,CAAlB,EAAqBC,CAArB,EAAwB;IACtB,OAAOjoB,UAAA,CAAKe,qBAAL,CAA2B,CAACinB,CAAD,EAAIC,CAAJ,CAA3B,EAAmC,KAAKxzB,SAAxC,CAAP;EADsB;AArKP;AA/enB7J,oBAAA,GAAAopB,YAAA;AAypBA,MAAM8F,2BAAN,SAA0C7d,mBAA1C,CAAwD;EACtDI,YAAYrC,GAAZ,EAAiBggB,UAAA,GAAa,CAA9B,EAAiC;IAC/B,MAAMhgB,GAAN,EAAW,6BAAX;IACA,KAAKggB,UAAL,GAAkBA,UAAlB;EAF+B;AADqB;AAzpBxDpvB,mCAAA,GAAAkvB,2BAAA;AAgqBA,SAAS7P,YAATA,CAAsBxP,GAAtB,EAA2B;EACzB,MAAM8J,EAAA,GAAK9J,GAAA,CAAIS,MAAf;EACA,IAAIuC,CAAA,GAAI,CAAR;EACA,OAAOA,CAAA,GAAI8G,EAAJ,IAAU9J,GAAA,CAAIgD,CAAJ,EAAOo/B,IAAP,OAAkB,EAAnC,EAAuC;IACrCp/B,CAAA;EADqC;EAGvC,OAAOhD,GAAA,CAAIqiC,SAAJ,CAAcr/B,CAAd,EAAiBA,CAAA,GAAI,CAArB,EAAwBs/B,WAAxB,OAA0C,OAAjD;AANyB;AAS3B,SAASC,SAATA,CAAmBpb,QAAnB,EAA6B;EAC3B,OAAO,OAAOA,QAAP,KAAoB,QAApB,IAAgC,UAAUqb,IAAV,CAAerb,QAAf,CAAvC;AAD2B;AAU7B,SAASsb,kBAATA,CAA4BziC,GAA5B,EAAiC0iC,aAAA,GAAgB,KAAjD,EAAwD;EACtD,IAAI,CAACA,aAAL,EAAoB;IAClB,CAAC1iC,GAAD,IAAQA,GAAA,CAAIw0B,KAAJ,CAAU,MAAV,EAAkB,CAAlB,CAAR;EADkB;EAGpB,OAAOx0B,GAAA,CAAIqiC,SAAJ,CAAcriC,GAAA,CAAI2iC,WAAJ,CAAgB,GAAhB,IAAuB,CAArC,CAAP;AAJsD;AAcxD,SAASC,qBAATA,CAA+B5iC,GAA/B,EAAoC6iC,eAAA,GAAkB,cAAtD,EAAsE;EACpE,IAAI,OAAO7iC,GAAP,KAAe,QAAnB,EAA6B;IAC3B,OAAO6iC,eAAP;EAD2B;EAG7B,IAAIrzB,YAAA,CAAaxP,GAAb,CAAJ,EAAuB;IACrB,IAAAN,UAAA,EAAK,oEAAL;IACA,OAAOmjC,eAAP;EAFqB;EAIvB,MAAMC,KAAA,GAAQ,qDAAd;EAGA,MAAMC,UAAA,GAAa,+BAAnB;EACA,MAAMC,QAAA,GAAWF,KAAA,CAAMnO,IAAN,CAAW30B,GAAX,CAAjB;EACA,IAAIijC,iBAAA,GACFF,UAAA,CAAWpO,IAAX,CAAgBqO,QAAA,CAAS,CAAT,CAAhB,KACAD,UAAA,CAAWpO,IAAX,CAAgBqO,QAAA,CAAS,CAAT,CAAhB,CADA,IAEAD,UAAA,CAAWpO,IAAX,CAAgBqO,QAAA,CAAS,CAAT,CAAhB,CAHF;EAIA,IAAIC,iBAAJ,EAAuB;IACrBA,iBAAA,GAAoBA,iBAAA,CAAkB,CAAlB,CAApB;IACA,IAAIA,iBAAA,CAAkBh+B,QAAlB,CAA2B,GAA3B,CAAJ,EAAqC;MAEnC,IAAI;QACFg+B,iBAAA,GAAoBF,UAAA,CAAWpO,IAAX,CAClB3qB,kBAAA,CAAmBi5B,iBAAnB,CADkB,EAElB,CAFkB,CAApB;MADE,CAAJ,CAIE,MAAM;IAN2B;EAFhB;EAevB,OAAOA,iBAAA,IAAqBJ,eAA5B;AAhCoE;AAmCtE,MAAMtqB,SAAN,CAAgB;EACd2qB,OAAA,GAAU/hC,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAV;EAEAk/B,KAAA,GAAQ,EAAR;EAEAzoB,KAAK/Y,IAAL,EAAW;IACT,IAAIA,IAAA,IAAQ,KAAKuhC,OAAjB,EAA0B;MACxB,IAAAxjC,UAAA,EAAM,gCAA+BiC,IAAhC,EAAL;IADwB;IAG1B,KAAKuhC,OAAL,CAAavhC,IAAb,IAAqBkJ,IAAA,CAAKu4B,GAAL,EAArB;EAJS;EAOXnnB,QAAQta,IAAR,EAAc;IACZ,IAAI,EAAEA,IAAA,IAAQ,KAAKuhC,OAAb,CAAN,EAA6B;MAC3B,IAAAxjC,UAAA,EAAM,kCAAiCiC,IAAlC,EAAL;IAD2B;IAG7B,KAAKwhC,KAAL,CAAW7/B,IAAX,CAAgB;MACd3B,IADc;MAEds8B,KAAA,EAAO,KAAKiF,OAAL,CAAavhC,IAAb,CAFO;MAGdwT,GAAA,EAAKtK,IAAA,CAAKu4B,GAAL;IAHS,CAAhB;IAMA,OAAO,KAAKF,OAAL,CAAavhC,IAAb,CAAP;EAVY;EAad0D,SAAA,EAAW;IAET,MAAMg+B,MAAA,GAAS,EAAf;IACA,IAAIC,OAAA,GAAU,CAAd;IACA,WAAW;MAAE3hC;IAAF,CAAX,IAAuB,KAAKwhC,KAA5B,EAAmC;MACjCG,OAAA,GAAUpgC,IAAA,CAAK4D,GAAL,CAASnF,IAAA,CAAKlB,MAAd,EAAsB6iC,OAAtB,CAAV;IADiC;IAGnC,WAAW;MAAE3hC,IAAF;MAAQs8B,KAAR;MAAe9oB;IAAf,CAAX,IAAmC,KAAKguB,KAAxC,EAA+C;MAC7CE,MAAA,CAAO//B,IAAP,CAAY,GAAG3B,IAAA,CAAK4hC,MAAL,CAAYD,OAAZ,CAAqB,IAAGnuB,GAAA,GAAM8oB,KAAM,MAAnD;IAD6C;IAG/C,OAAOoF,MAAA,CAAO9/B,IAAP,CAAY,EAAZ,CAAP;EAVS;AAzBG;AApuBhBpT,iBAAA,GAAAooB,SAAA;AA2wBA,SAASjK,eAATA,CAAyBtO,GAAzB,EAA8BG,OAA9B,EAAuC;EAIrC,IAAI;IACF,MAAM;MAAEF;IAAF,IAAeE,OAAA,GAAU,IAAIU,GAAJ,CAAQb,GAAR,EAAaG,OAAb,CAAV,GAAkC,IAAIU,GAAJ,CAAQb,GAAR,CAAvD;IAEA,OAAOC,QAAA,KAAa,OAAb,IAAwBA,QAAA,KAAa,QAA5C;EAHE,CAAJ,CAIE,MAAM;IACN,OAAO,KAAP;EADM;AAR6B;AAkBvC,SAASgjB,UAATA,CAAoBzU,GAApB,EAAyBg1B,mBAAA,GAAsB,KAA/C,EAAsD;EACpD,OAAO,IAAIj4B,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtC,MAAMg4B,MAAA,GAASlzB,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAAf;IACA2S,MAAA,CAAOj1B,GAAP,GAAaA,GAAb;IAEAi1B,MAAA,CAAOC,MAAP,GAAgB,UAAU5e,GAAV,EAAe;MAC7B,IAAI0e,mBAAJ,EAAyB;QACvBC,MAAA,CAAOhZ,MAAP;MADuB;MAGzBjf,OAAA,CAAQsZ,GAAR;IAJ6B,CAA/B;IAMA2e,MAAA,CAAOE,OAAP,GAAiB,YAAY;MAC3Bl4B,MAAA,CAAO,IAAI7L,KAAJ,CAAW,0BAAyB6jC,MAAA,CAAOj1B,GAAjC,EAAV,CAAP;IAD2B,CAA7B;IAGC,CAAA+B,QAAA,CAASqzB,IAAT,IAAiBrzB,QAAA,CAASszB,eAA1B,EAA2CpH,MAA5C,CAAmDgH,MAAnD;EAbsC,CAAjC,CAAP;AADoD;AAmBtD,SAAS7gB,UAATA,CAAoB3gB,OAApB,EAA6B;EAC3BzC,OAAA,CAAQC,GAAR,CAAY,2BAA2BwC,OAAvC;AAD2B;AAI7B,IAAI6hC,kBAAJ;AAEA,MAAMC,aAAN,CAAoB;EAiBlB,OAAOC,YAAPA,CAAoBC,KAApB,EAA2B;IACzB,IAAI,CAACA,KAAD,IAAU,OAAOA,KAAP,KAAiB,QAA/B,EAAyC;MACvC,OAAO,IAAP;IADuC;IAKzCH,kBAAA,KAAuB,IAAII,MAAJ,CACrB,QACE,UADF,GAEE,WAFF,GAGE,WAHF,GAIE,WAJF,GAKE,WALF,GAME,WANF,GAOE,YAPF,GAQE,WARF,GASE,IATF,GAUE,WAVF,GAWE,IAZmB,CAAvB;IAkBA,MAAM3O,OAAA,GAAUuO,kBAAA,CAAmBnP,IAAnB,CAAwBsP,KAAxB,CAAhB;IACA,IAAI,CAAC1O,OAAL,EAAc;MACZ,OAAO,IAAP;IADY;IAMd,MAAM4O,IAAA,GAAOC,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACA,IAAI8O,KAAA,GAAQD,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAZ;IACA8O,KAAA,GAAQA,KAAA,IAAS,CAAT,IAAcA,KAAA,IAAS,EAAvB,GAA4BA,KAAA,GAAQ,CAApC,GAAwC,CAAhD;IACA,IAAIC,GAAA,GAAMF,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAV;IACA+O,GAAA,GAAMA,GAAA,IAAO,CAAP,IAAYA,GAAA,IAAO,EAAnB,GAAwBA,GAAxB,GAA8B,CAApC;IACA,IAAIC,IAAA,GAAOH,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAX;IACAgP,IAAA,GAAOA,IAAA,IAAQ,CAAR,IAAaA,IAAA,IAAQ,EAArB,GAA0BA,IAA1B,GAAiC,CAAxC;IACA,IAAIC,MAAA,GAASJ,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACAiP,MAAA,GAASA,MAAA,IAAU,CAAV,IAAeA,MAAA,IAAU,EAAzB,GAA8BA,MAA9B,GAAuC,CAAhD;IACA,IAAIn9B,MAAA,GAAS+8B,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACAluB,MAAA,GAASA,MAAA,IAAU,CAAV,IAAeA,MAAA,IAAU,EAAzB,GAA8BA,MAA9B,GAAuC,CAAhD;IACA,MAAMo9B,qBAAA,GAAwBlP,OAAA,CAAQ,CAAR,KAAc,GAA5C;IACA,IAAImP,UAAA,GAAaN,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAjB;IACAmP,UAAA,GAAaA,UAAA,IAAc,CAAd,IAAmBA,UAAA,IAAc,EAAjC,GAAsCA,UAAtC,GAAmD,CAAhE;IACA,IAAIC,YAAA,GAAeP,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,KAA4B,CAA/C;IACAoP,YAAA,GAAeA,YAAA,IAAgB,CAAhB,IAAqBA,YAAA,IAAgB,EAArC,GAA0CA,YAA1C,GAAyD,CAAxE;IAMA,IAAIF,qBAAA,KAA0B,GAA9B,EAAmC;MACjCF,IAAA,IAAQG,UAAR;MACAF,MAAA,IAAUG,YAAV;IAFiC,CAAnC,MAGO,IAAIF,qBAAA,KAA0B,GAA9B,EAAmC;MACxCF,IAAA,IAAQG,UAAR;MACAF,MAAA,IAAUG,YAAV;IAFwC;IAK1C,OAAO,IAAI95B,IAAJ,CAASA,IAAA,CAAK+5B,GAAL,CAAST,IAAT,EAAeE,KAAf,EAAsBC,GAAtB,EAA2BC,IAA3B,EAAiCC,MAAjC,EAAyCn9B,MAAzC,CAAT,CAAP;EA5DyB;AAjBT;AAtzBpBlX,qBAAA,GAAA4zC,aAAA;AA04BA,SAASc,kBAATA,CAA4BC,OAA5B,EAAqC;EAAE5rB,KAAA,GAAQ,CAAV;EAAaC,QAAA,GAAW;AAAxB,CAArC,EAAkE;EAChE,MAAM;IAAE6N,KAAF;IAASC;EAAT,IAAoB6d,OAAA,CAAQC,UAAR,CAAmBzW,KAA7C;EACA,MAAM9U,OAAA,GAAU,CAAC,CAAD,EAAI,CAAJ,EAAO4qB,QAAA,CAASpd,KAAT,CAAP,EAAwBod,QAAA,CAASnd,MAAT,CAAxB,CAAhB;EAEA,OAAO,IAAI1N,YAAJ,CAAiB;IACtBC,OADsB;IAEtBN,KAFsB;IAGtBC;EAHsB,CAAjB,CAAP;AAJgE;AAWlE,SAASkc,MAATA,CAAgBF,KAAhB,EAAuB;EACrB,IAAIA,KAAA,CAAM70B,UAAN,CAAiB,GAAjB,CAAJ,EAA2B;IACzB,MAAM0kC,QAAA,GAAWZ,QAAA,CAASjP,KAAA,CAAMxuB,KAAN,CAAY,CAAZ,CAAT,EAAyB,EAAzB,CAAjB;IACA,OAAO,CACJ,CAAAq+B,QAAA,GAAW,QAAX,KAAwB,EADpB,EAEJ,CAAAA,QAAA,GAAW,QAAX,KAAwB,CAFpB,EAGLA,QAAA,GAAW,QAHN,CAAP;EAFyB;EAS3B,IAAI7P,KAAA,CAAM70B,UAAN,CAAiB,MAAjB,CAAJ,EAA8B;IAE5B,OAAO60B,KAAA,CACJxuB,KADI,CACsB,CADtB,EACyB,CAAC,CAD1B,EAEJ6tB,KAFI,CAEE,GAFF,EAGJxwB,GAHI,CAGAupB,CAAA,IAAK6W,QAAA,CAAS7W,CAAT,CAHL,CAAP;EAF4B;EAQ9B,IAAI4H,KAAA,CAAM70B,UAAN,CAAiB,OAAjB,CAAJ,EAA+B;IAC7B,OAAO60B,KAAA,CACJxuB,KADI,CACuB,CADvB,EAC0B,CAAC,CAD3B,EAEJ6tB,KAFI,CAEE,GAFF,EAGJxwB,GAHI,CAGAupB,CAAA,IAAK6W,QAAA,CAAS7W,CAAT,CAHL,EAIJ5mB,KAJI,CAIE,CAJF,EAIK,CAJL,CAAP;EAD6B;EAQ/B,IAAAjH,UAAA,EAAM,8BAA6By1B,KAAM,GAAzC;EACA,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAP;AA3BqB;AA8BvB,SAASF,cAATA,CAAwBD,MAAxB,EAAgC;EAC9B,MAAMiQ,IAAA,GAAO10B,QAAA,CAASugB,aAAT,CAAuB,MAAvB,CAAb;EACAmU,IAAA,CAAK3W,KAAL,CAAW+N,UAAX,GAAwB,QAAxB;EACA9rB,QAAA,CAASmsB,IAAT,CAAcD,MAAd,CAAqBwI,IAArB;EACA,WAAWtjC,IAAX,IAAmBqzB,MAAA,CAAOlxB,IAAP,EAAnB,EAAkC;IAChCmhC,IAAA,CAAK3W,KAAL,CAAW6G,KAAX,GAAmBxzB,IAAnB;IACA,MAAMujC,aAAA,GAAgBzxB,MAAA,CAAOksB,gBAAP,CAAwBsF,IAAxB,EAA8B9P,KAApD;IACAH,MAAA,CAAOla,GAAP,CAAWnZ,IAAX,EAAiB0zB,MAAA,CAAO6P,aAAP,CAAjB;EAHgC;EAKlCD,IAAA,CAAKxa,MAAL;AAT8B;AAYhC,SAAS0a,mBAATA,CAA6BC,GAA7B,EAAkC;EAChC,MAAM;IAAEl+B,CAAF;IAAKvB,CAAL;IAAQwB,CAAR;IAAWZ,CAAX;IAAc8+B,CAAd;IAAiBC;EAAjB,IAAuBF,GAAA,CAAIG,YAAJ,EAA7B;EACA,OAAO,CAACr+B,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAa8+B,CAAb,EAAgBC,CAAhB,CAAP;AAFgC;AAKlC,SAASE,0BAATA,CAAoCJ,GAApC,EAAyC;EACvC,MAAM;IAAEl+B,CAAF;IAAKvB,CAAL;IAAQwB,CAAR;IAAWZ,CAAX;IAAc8+B,CAAd;IAAiBC;EAAjB,IAAuBF,GAAA,CAAIG,YAAJ,GAAmBE,UAAnB,EAA7B;EACA,OAAO,CAACv+B,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAa8+B,CAAb,EAAgBC,CAAhB,CAAP;AAFuC;AAWzC,SAASI,kBAATA,CACEhZ,GADF,EAEEvS,QAFF,EAGEwrB,QAAA,GAAW,KAHb,EAIEC,UAAA,GAAa,IAJf,EAKE;EACA,IAAIzrB,QAAA,YAAoBZ,YAAxB,EAAsC;IACpC,MAAM;MAAEuT,SAAF;MAAaC;IAAb,IAA4B5S,QAAA,CAAS0S,OAA3C;IACA,MAAM;MAAEyB;IAAF,IAAY5B,GAAlB;IAQA,MAAMmZ,QAAA,GAAY,8BAA6B/Y,SAAU,KAAzD;IACA,MAAMgZ,SAAA,GAAa,8BAA6B/Y,UAAW,KAA3D;IAEA,IAAI,CAAC4Y,QAAD,IAAaxrB,QAAA,CAAShB,QAAT,GAAoB,GAApB,KAA4B,CAA7C,EAAgD;MAC9CmV,KAAA,CAAMtH,KAAN,GAAc6e,QAAd;MACAvX,KAAA,CAAMrH,MAAN,GAAe6e,SAAf;IAF8C,CAAhD,MAGO;MACLxX,KAAA,CAAMtH,KAAN,GAAc8e,SAAd;MACAxX,KAAA,CAAMrH,MAAN,GAAe4e,QAAf;IAFK;EAhB6B;EAsBtC,IAAID,UAAJ,EAAgB;IACdlZ,GAAA,CAAIqE,YAAJ,CAAiB,oBAAjB,EAAuC5W,QAAA,CAAShB,QAAhD;EADc;AAvBhB;;;;;;;;;;;;ACr8BF,IAAA/M,KAAA,GAAAC,mBAAA;AAEA,MAAMqvB,iBAAN,CAAwB;EACtB95B,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqB85B,iBAAzB,EAA4C;MAC1C,IAAA/7B,iBAAA,EAAY,sCAAZ;IAD0C;EADhC;EAMdg9B,UAAUC,IAAV,EAAgB;IACd,OAAO,MAAP;EADc;EAIhBa,aAAaC,OAAb,EAAsBC,OAAtB,EAA+B;IAC7B,OAAO,MAAP;EAD6B;EAI/BQ,sBAAsBT,OAAtB,EAA+BC,OAA/B,EAAwCS,UAAxC,EAAoDC,UAApD,EAAgE;IAC9D,OAAO,MAAP;EAD8D;EAIhEtqB,QAAQkrB,OAAA,GAAU,KAAlB,EAAyB;AAnBH;AAjBxB9uC,yBAAA,GAAAurC,iBAAA;AAuCA,MAAMmE,iBAAN,CAAwB;EACtBj+B,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqBi+B,iBAAzB,EAA4C;MAC1C,IAAAlgC,iBAAA,EAAY,sCAAZ;IAD0C;EADhC;EAMdsE,OAAO+iB,KAAP,EAAcC,MAAd,EAAsB;IACpB,IAAID,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAIrnB,KAAJ,CAAU,qBAAV,CAAN;IAD6B;IAG/B,MAAMooB,MAAA,GAAS,KAAK+X,aAAL,CAAmB/Y,KAAnB,EAA0BC,MAA1B,CAAf;IACA,OAAO;MACLe,MADK;MAEL+d,OAAA,EAAS/d,MAAA,CAAOge,UAAP,CAAkB,IAAlB;IAFJ,CAAP;EALoB;EAWtBC,MAAMC,gBAAN,EAAwBlf,KAAxB,EAA+BC,MAA/B,EAAuC;IACrC,IAAI,CAACif,gBAAA,CAAiBle,MAAtB,EAA8B;MAC5B,MAAM,IAAIpoB,KAAJ,CAAU,yBAAV,CAAN;IAD4B;IAG9B,IAAIonB,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAIrnB,KAAJ,CAAU,qBAAV,CAAN;IAD6B;IAG/BsmC,gBAAA,CAAiBle,MAAjB,CAAwBhB,KAAxB,GAAgCA,KAAhC;IACAkf,gBAAA,CAAiBle,MAAjB,CAAwBf,MAAxB,GAAiCA,MAAjC;EARqC;EAWvClT,QAAQmyB,gBAAR,EAA0B;IACxB,IAAI,CAACA,gBAAA,CAAiBle,MAAtB,EAA8B;MAC5B,MAAM,IAAIpoB,KAAJ,CAAU,yBAAV,CAAN;IAD4B;IAK9BsmC,gBAAA,CAAiBle,MAAjB,CAAwBhB,KAAxB,GAAgC,CAAhC;IACAkf,gBAAA,CAAiBle,MAAjB,CAAwBf,MAAxB,GAAiC,CAAjC;IACAif,gBAAA,CAAiBle,MAAjB,GAA0B,IAA1B;IACAke,gBAAA,CAAiBH,OAAjB,GAA2B,IAA3B;EATwB;EAe1BhG,cAAc/Y,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,IAAAtnB,iBAAA,EAAY,yCAAZ;EAD2B;AA5CP;AAvCxBxP,yBAAA,GAAA0vC,iBAAA;AAwFA,MAAMkB,qBAAN,CAA4B;EAC1Bn/B,YAAY;IAAEzB,OAAA,GAAU,IAAZ;IAAkBkR,YAAA,GAAe;EAAjC,CAAZ,EAAqD;IACnD,IAAI,KAAKzP,WAAL,KAAqBm/B,qBAAzB,EAAgD;MAC9C,IAAAphC,iBAAA,EAAY,0CAAZ;IAD8C;IAGhD,KAAKQ,OAAL,GAAeA,OAAf;IACA,KAAKkR,YAAL,GAAoBA,YAApB;EALmD;EAQrD,MAAM6V,KAANA,CAAY;IAAEvlB;EAAF,CAAZ,EAAsB;IACpB,IAAI,CAAC,KAAKxB,OAAV,EAAmB;MACjB,MAAM,IAAIP,KAAJ,CACJ,iEACE,6DAFE,CAAN;IADiB;IAMnB,IAAI,CAAC+B,IAAL,EAAW;MACT,MAAM,IAAI/B,KAAJ,CAAU,8BAAV,CAAN;IADS;IAGX,MAAMI,GAAA,GAAM,KAAKG,OAAL,GAAewB,IAAf,IAAuB,KAAK0P,YAAL,GAAoB,QAApB,GAA+B,EAA/B,CAAnC;IACA,MAAM4vB,eAAA,GAAkB,KAAK5vB,YAAL,GACpBnY,yBAAA,CAAoBC,MADA,GAEpBD,yBAAA,CAAoBzH,IAFxB;IAIA,OAAO,KAAKuvC,UAAL,CAAgBhhC,GAAhB,EAAqBihC,eAArB,EAAsC9tB,KAAtC,CAA4CxH,MAAA,IAAU;MAC3D,MAAM,IAAI/L,KAAJ,CACH,kBAAiB,KAAKyR,YAAL,GAAoB,SAApB,GAAgC,EAAG,YAAWrR,GAAhE,EADI,CAAN;IAD2D,CAAtD,CAAP;EAfoB;EAyBtBghC,WAAWhhC,GAAX,EAAgBihC,eAAhB,EAAiC;IAC/B,IAAAthC,iBAAA,EAAY,sCAAZ;EAD+B;AAlCP;AAxF5BxP,6BAAA,GAAA4wC,qBAAA;AA+HA,MAAMI,2BAAN,CAAkC;EAChCv/B,YAAY;IAAEzB,OAAA,GAAU;EAAZ,CAAZ,EAAgC;IAC9B,IAAI,KAAKyB,WAAL,KAAqBu/B,2BAAzB,EAAsD;MACpD,IAAAxhC,iBAAA,EAAY,gDAAZ;IADoD;IAGtD,KAAKQ,OAAL,GAAeA,OAAf;EAJ8B;EAOhC,MAAM+mB,KAANA,CAAY;IAAEC;EAAF,CAAZ,EAA0B;IACxB,IAAI,CAAC,KAAKhnB,OAAV,EAAmB;MACjB,MAAM,IAAIP,KAAJ,CACJ,0EACE,sDAFE,CAAN;IADiB;IAMnB,IAAI,CAACunB,QAAL,EAAe;MACb,MAAM,IAAIvnB,KAAJ,CAAU,kCAAV,CAAN;IADa;IAGf,MAAMI,GAAA,GAAM,GAAG,KAAKG,OAAR,GAAkBgnB,QAAlB,EAAZ;IAEA,OAAO,KAAK6Z,UAAL,CAAgBhhC,GAAhB,EAAqBmT,KAArB,CAA2BxH,MAAA,IAAU;MAC1C,MAAM,IAAI/L,KAAJ,CAAW,gCAA+BI,GAAhC,EAAV,CAAN;IAD0C,CAArC,CAAP;EAZwB;EAoB1BghC,WAAWhhC,GAAX,EAAgB;IACd,IAAAL,iBAAA,EAAY,sCAAZ;EADc;AA5BgB;AA/HlCxP,mCAAA,GAAAgxC,2BAAA;AAgKA,MAAME,cAAN,CAAqB;EACnBz/B,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqBy/B,cAAzB,EAAyC;MACvC,IAAA1hC,iBAAA,EAAY,mCAAZ;IADuC;EAD7B;EAMdsE,OAAO+iB,KAAP,EAAcC,MAAd,EAAsBkf,cAAA,GAAiB,KAAvC,EAA8C;IAC5C,IAAInf,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAIrnB,KAAJ,CAAU,wBAAV,CAAN;IAD6B;IAG/B,MAAM28B,GAAA,GAAM,KAAK+E,UAAL,CAAgB,SAAhB,CAAZ;IACA/E,GAAA,CAAIxL,YAAJ,CAAiB,SAAjB,EAA4B,KAA5B;IAEA,IAAI,CAACoV,cAAL,EAAqB;MACnB5J,GAAA,CAAIxL,YAAJ,CAAiB,OAAjB,EAA0B,GAAG/J,KAAM,IAAnC;MACAuV,GAAA,CAAIxL,YAAJ,CAAiB,QAAjB,EAA2B,GAAG9J,MAAO,IAArC;IAFmB;IAKrBsV,GAAA,CAAIxL,YAAJ,CAAiB,qBAAjB,EAAwC,MAAxC;IACAwL,GAAA,CAAIxL,YAAJ,CAAiB,SAAjB,EAA6B,OAAM/J,KAAM,IAAGC,MAAhB,EAA5B;IAEA,OAAOsV,GAAP;EAf4C;EAkB9CzL,cAAc5K,IAAd,EAAoB;IAClB,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;MAC5B,MAAM,IAAItmB,KAAJ,CAAU,0BAAV,CAAN;IAD4B;IAG9B,OAAO,KAAK0hC,UAAL,CAAgBpb,IAAhB,CAAP;EAJkB;EAUpBob,WAAWpb,IAAX,EAAiB;IACf,IAAAvmB,iBAAA,EAAY,sCAAZ;EADe;AAnCE;AAhKrBxP,sBAAA,GAAAkxC,cAAA;;;;;;;;;;;;ACmBA,IAAAj1B,KAAA,GAAAC,mBAAA;AAEA,MAAM+5B,IAAA,GAAO,UAAb;AAEA,MAAMC,SAAA,GAAY,UAAlB;AACA,MAAMC,QAAA,GAAW,MAAjB;AAEA,MAAMnb,cAAN,CAAqB;EACnBvpB,YAAY2kC,IAAZ,EAAkB;IAChB,KAAKC,EAAL,GAAUD,IAAA,GAAOA,IAAA,GAAO,UAAd,GAA2BH,IAArC;IACA,KAAKK,EAAL,GAAUF,IAAA,GAAOA,IAAA,GAAO,UAAd,GAA2BH,IAArC;EAFgB;EAKlB9a,OAAO2Y,KAAP,EAAc;IACZ,IAAIv4B,IAAJ,EAAUjL,MAAV;IACA,IAAI,OAAOwjC,KAAP,KAAiB,QAArB,EAA+B;MAC7Bv4B,IAAA,GAAO,IAAIhI,UAAJ,CAAeugC,KAAA,CAAMxjC,MAAN,GAAe,CAA9B,CAAP;MACAA,MAAA,GAAS,CAAT;MACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKm6B,KAAA,CAAMxjC,MAAtB,EAA8BuC,CAAA,GAAI8G,EAAvC,EAA2C9G,CAAA,EAA3C,EAAgD;QAC9C,MAAMjB,IAAA,GAAOkiC,KAAA,CAAMtgC,UAAN,CAAiBX,CAAjB,CAAb;QACA,IAAIjB,IAAA,IAAQ,IAAZ,EAAkB;UAChB2J,IAAA,CAAKjL,MAAA,EAAL,IAAiBsB,IAAjB;QADgB,CAAlB,MAEO;UACL2J,IAAA,CAAKjL,MAAA,EAAL,IAAiBsB,IAAA,KAAS,CAA1B;UACA2J,IAAA,CAAKjL,MAAA,EAAL,IAAiBsB,IAAA,GAAO,IAAxB;QAFK;MAJuC;IAHnB,CAA/B,MAYO,IAAI,IAAAsI,mBAAA,EAAc45B,KAAd,CAAJ,EAA0B;MAC/Bv4B,IAAA,GAAOu4B,KAAA,CAAMt9B,KAAN,EAAP;MACAlG,MAAA,GAASiL,IAAA,CAAKnB,UAAd;IAF+B,CAA1B,MAGA;MACL,MAAM,IAAI3K,KAAJ,CACJ,iDACE,kCAFE,CAAN;IADK;IAOP,MAAM8mC,WAAA,GAAcjmC,MAAA,IAAU,CAA9B;IACA,MAAMkmC,UAAA,GAAalmC,MAAA,GAASimC,WAAA,GAAc,CAA1C;IAEA,MAAME,UAAA,GAAa,IAAItiC,WAAJ,CAAgBoH,IAAA,CAAKnH,MAArB,EAA6B,CAA7B,EAAgCmiC,WAAhC,CAAnB;IACA,IAAIG,EAAA,GAAK,CAAT;MACEC,EAAA,GAAK,CADP;IAEA,IAAIN,EAAA,GAAK,KAAKA,EAAd;MACEC,EAAA,GAAK,KAAKA,EADZ;IAEA,MAAMM,EAAA,GAAK,UAAX;MACEC,EAAA,GAAK,UADP;IAEA,MAAMC,MAAA,GAASF,EAAA,GAAKT,QAApB;MACEY,MAAA,GAASF,EAAA,GAAKV,QADhB;IAGA,KAAK,IAAItjC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI0jC,WAApB,EAAiC1jC,CAAA,EAAjC,EAAsC;MACpC,IAAIA,CAAA,GAAI,CAAR,EAAW;QACT6jC,EAAA,GAAKD,UAAA,CAAW5jC,CAAX,CAAL;QACA6jC,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYV,SAAb,GAA4BQ,EAAA,GAAKI,MAAN,GAAgBX,QAAhD;QACAO,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKG,EAAN,GAAYX,SAAb,GAA4BQ,EAAA,GAAKK,MAAN,GAAgBZ,QAAhD;QACAE,EAAA,IAAMK,EAAN;QACAL,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAKA,EAAA,GAAK,CAAL,GAAS,UAAd;MAPS,CAAX,MAQO;QACLM,EAAA,GAAKF,UAAA,CAAW5jC,CAAX,CAAL;QACA8jC,EAAA,GAAOA,EAAA,GAAKC,EAAN,GAAYV,SAAb,GAA4BS,EAAA,GAAKG,MAAN,GAAgBX,QAAhD;QACAQ,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYX,SAAb,GAA4BS,EAAA,GAAKI,MAAN,GAAgBZ,QAAhD;QACAG,EAAA,IAAMK,EAAN;QACAL,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAKA,EAAA,GAAK,CAAL,GAAS,UAAd;MAPK;IAT6B;IAoBtCI,EAAA,GAAK,CAAL;IAEA,QAAQF,UAAR;MACE,KAAK,CAAL;QACEE,EAAA,IAAMn7B,IAAA,CAAKg7B,WAAA,GAAc,CAAd,GAAkB,CAAvB,KAA6B,EAAnC;MAEF,KAAK,CAAL;QACEG,EAAA,IAAMn7B,IAAA,CAAKg7B,WAAA,GAAc,CAAd,GAAkB,CAAvB,KAA6B,CAAnC;MAEF,KAAK,CAAL;QACEG,EAAA,IAAMn7B,IAAA,CAAKg7B,WAAA,GAAc,CAAnB,CAAN;QAGAG,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYV,SAAb,GAA4BQ,EAAA,GAAKI,MAAN,GAAgBX,QAAhD;QACAO,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKG,EAAN,GAAYX,SAAb,GAA4BQ,EAAA,GAAKK,MAAN,GAAgBZ,QAAhD;QACA,IAAII,WAAA,GAAc,CAAlB,EAAqB;UACnBF,EAAA,IAAMK,EAAN;QADmB,CAArB,MAEO;UACLJ,EAAA,IAAMI,EAAN;QADK;IAhBX;IAqBA,KAAKL,EAAL,GAAUA,EAAV;IACA,KAAKC,EAAL,GAAUA,EAAV;EAjFY;EAoFdhb,UAAA,EAAY;IACV,IAAI+a,EAAA,GAAK,KAAKA,EAAd;MACEC,EAAA,GAAK,KAAKA,EADZ;IAGAD,EAAA,IAAMC,EAAA,KAAO,CAAb;IACAD,EAAA,GAAOA,EAAA,GAAK,UAAN,GAAoBH,SAArB,GAAoCG,EAAA,GAAK,MAAN,GAAgBF,QAAxD;IACAG,EAAA,GACIA,EAAA,GAAK,UAAN,GAAoBJ,SAArB,GACE,CAAE,CAACI,EAAA,IAAM,EAAP,GAAcD,EAAA,KAAO,EAArB,IAA4B,UAA9B,GAA4CH,SAA5C,MAA2D,EAF/D;IAGAG,EAAA,IAAMC,EAAA,KAAO,CAAb;IACAD,EAAA,GAAOA,EAAA,GAAK,UAAN,GAAoBH,SAArB,GAAoCG,EAAA,GAAK,MAAN,GAAgBF,QAAxD;IACAG,EAAA,GACIA,EAAA,GAAK,UAAN,GAAoBJ,SAArB,GACE,CAAE,CAACI,EAAA,IAAM,EAAP,GAAcD,EAAA,KAAO,EAArB,IAA4B,UAA9B,GAA4CH,SAA5C,MAA2D,EAF/D;IAGAG,EAAA,IAAMC,EAAA,KAAO,CAAb;IAEA,OACG,CAAAD,EAAA,KAAO,CAAP,EAAUnhC,QAAX,CAAoB,EAApB,EAAwBC,QAAxB,CAAiC,CAAjC,EAAoC,GAApC,IACC,CAAAmhC,EAAA,KAAO,CAAP,EAAUphC,QAAX,CAAoB,EAApB,EAAwBC,QAAxB,CAAiC,CAAjC,EAAoC,GAApC,CAFF;EAhBU;AA1FO;AA1BrBnV,sBAAA,GAAAg7B,cAAA;;;;;;;;;;;;ACeA,IAAA/e,KAAA,GAAAC,mBAAA;AASA,IAAAM,QAAA,GAAAN,mBAAA;AAEA,MAAMkX,UAAN,CAAiB;EACf,CAAA4jB,WAAA,GAAe,IAAI9qB,GAAJ,EAAf;EAEAza,YAAY;IACVyO,aAAA,GAAgBC,UAAA,CAAWC,QADjB;IAEVW,YAAA,GAAe;EAFL,CAAZ,EAGG;IACD,KAAK4uB,SAAL,GAAiBzvB,aAAjB;IAEA,KAAK+2B,eAAL,GAAuB,IAAI/qB,GAAJ,EAAvB;IACA,KAAKnL,YAAL,GAGM,IAHN;IAME,KAAKm2B,eAAL,GAAuB,EAAvB;IACA,KAAKC,cAAL,GAAsB,CAAtB;EAXD;EAeHC,kBAAkBC,cAAlB,EAAkC;IAChC,KAAKJ,eAAL,CAAqB9qB,GAArB,CAAyBkrB,cAAzB;IACA,KAAK1H,SAAL,CAAe2H,KAAf,CAAqBnrB,GAArB,CAAyBkrB,cAAzB;EAFgC;EAKlCE,qBAAqBF,cAArB,EAAqC;IACnC,KAAKJ,eAAL,CAAqBxrB,MAArB,CAA4B4rB,cAA5B;IACA,KAAK1H,SAAL,CAAe2H,KAAf,CAAqB7rB,MAArB,CAA4B4rB,cAA5B;EAFmC;EAKrCG,WAAWC,IAAX,EAAiB;IACf,IAAI,CAAC,KAAK12B,YAAV,EAAwB;MACtB,KAAKA,YAAL,GAAoB,KAAK4uB,SAAL,CAAehP,aAAf,CAA6B,OAA7B,CAApB;MACA,KAAKgP,SAAL,CAAe+D,eAAf,CACGgE,oBADH,CACwB,MADxB,EACgC,CADhC,EAEGpL,MAFH,CAEU,KAAKvrB,YAFf;IAFsB;IAMxB,MAAM42B,UAAA,GAAa,KAAK52B,YAAL,CAAkB62B,KAArC;IACAD,UAAA,CAAWH,UAAX,CAAsBC,IAAtB,EAA4BE,UAAA,CAAWE,QAAX,CAAoBvnC,MAAhD;EARe;EAWjBie,MAAA,EAAQ;IACN,WAAW8oB,cAAX,IAA6B,KAAKJ,eAAlC,EAAmD;MACjD,KAAKtH,SAAL,CAAe2H,KAAf,CAAqB7rB,MAArB,CAA4B4rB,cAA5B;IADiD;IAGnD,KAAKJ,eAAL,CAAqB1oB,KAArB;IACA,KAAK,CAAAyoB,WAAL,CAAkBzoB,KAAlB;IAEA,IAAI,KAAKxN,YAAT,EAAuB;MAErB,KAAKA,YAAL,CAAkBuZ,MAAlB;MACA,KAAKvZ,YAAL,GAAoB,IAApB;IAHqB;EAPjB;EAcR,MAAM+2B,cAANA,CAAqB3oC,IAArB,EAA2B;IACzB,IAAI,CAACA,IAAD,IAAS,KAAK,CAAA6nC,WAAL,CAAkB1lB,GAAlB,CAAsBniB,IAAA,CAAK4oC,UAA3B,CAAb,EAAqD;MACnD;IADmD;IAGrD,IAAAroC,YAAA,EACE,CAAC,KAAKqQ,eADR,EAEE,mEAFF;IAKA,IAAI,KAAKi4B,yBAAT,EAAoC;MAClC,MAAM;QAAED,UAAF;QAAc15B,GAAd;QAAmB8f;MAAnB,IAA6BhvB,IAAnC;MACA,MAAM8oC,QAAA,GAAW,IAAIC,QAAJ,CAAaH,UAAb,EAAyB15B,GAAzB,EAA8B8f,KAA9B,CAAjB;MACA,KAAKiZ,iBAAL,CAAuBa,QAAvB;MACA,IAAI;QACF,MAAMA,QAAA,CAASE,IAAT,EAAN;QACA,KAAK,CAAAnB,WAAL,CAAkB7qB,GAAlB,CAAsB4rB,UAAtB;MAFE,CAAJ,CAGE,MAAM;QACN,IAAAxoC,UAAA,EACG,4BAA2BJ,IAAA,CAAKipC,YAAa,sDADhD;QAIA,KAAKb,oBAAL,CAA0BU,QAA1B;MALM;MAOR;IAdkC;IAiBpC,IAAAzoC,iBAAA,EACE,+DADF;EA1ByB;EA+B3B,MAAMgnB,IAANA,CAAWH,IAAX,EAAiB;IAEf,IAAIA,IAAA,CAAKgiB,QAAL,IAAkBhiB,IAAA,CAAKiiB,WAAL,IAAoB,CAACjiB,IAAA,CAAKkiB,cAAhD,EAAiE;MAC/D;IAD+D;IAGjEliB,IAAA,CAAKgiB,QAAL,GAAgB,IAAhB;IAEA,IAAIhiB,IAAA,CAAKkiB,cAAT,EAAyB;MACvB,MAAM,KAAKT,cAAL,CAAoBzhB,IAAA,CAAKkiB,cAAzB,CAAN;MACA;IAFuB;IAKzB,IAAI,KAAKP,yBAAT,EAAoC;MAClC,MAAMX,cAAA,GAAiBhhB,IAAA,CAAKmiB,oBAAL,EAAvB;MACA,IAAInB,cAAJ,EAAoB;QAClB,KAAKD,iBAAL,CAAuBC,cAAvB;QACA,IAAI;UACF,MAAMA,cAAA,CAAe3yB,MAArB;QADE,CAAJ,CAEE,OAAOhL,EAAP,EAAW;UACX,IAAAnK,UAAA,EAAM,wBAAuB8nC,cAAA,CAAeoB,MAAO,OAAM/+B,EAAG,IAA5D;UAGA2c,IAAA,CAAKtW,eAAL,GAAuB,IAAvB;UACA,MAAMrG,EAAN;QALW;MAJK;MAYpB;IAdkC;IAkBpC,MAAM+9B,IAAA,GAAOphB,IAAA,CAAKqiB,kBAAL,EAAb;IACA,IAAIjB,IAAJ,EAAU;MACR,KAAKD,UAAL,CAAgBC,IAAhB;MAEA,IAAI,KAAKkB,0BAAT,EAAqC;QACnC;MADmC;MAMrC,MAAM,IAAIv9B,OAAJ,CAAYC,OAAA,IAAW;QAC3B,MAAM+0B,OAAA,GAAU,KAAKwI,qBAAL,CAA2Bv9B,OAA3B,CAAhB;QACA,KAAKw9B,qBAAL,CAA2BxiB,IAA3B,EAAiC+Z,OAAjC;MAF2B,CAAvB,CAAN;IATQ;EA/BK;EAgDjB,IAAI4H,yBAAJA,CAAA,EAAgC;IAC9B,MAAMc,QAAA,GAAW,CAAC,CAAC,KAAKnJ,SAAL,EAAgB2H,KAAnC;IAQA,OAAO,IAAA3mC,YAAA,EAAO,IAAP,EAAa,2BAAb,EAA0CmoC,QAA1C,CAAP;EAT8B;EAYhC,IAAIH,0BAAJA,CAAA,EAAiC;IAK/B,IAAII,SAAA,GAAY,KAAhB;IAEE,IAAI77B,iBAAJ,EAAc;MAEZ67B,SAAA,GAAY,IAAZ;IAFY,CAAd,MAGO,IACL,OAAOpkC,SAAP,KAAqB,WAArB,IAGA,iCAAiC09B,IAAjC,CAAsC19B,SAAA,CAAUqkC,SAAhD,CAJK,EAKL;MAEAD,SAAA,GAAY,IAAZ;IAFA;IAKJ,OAAO,IAAApoC,YAAA,EAAO,IAAP,EAAa,4BAAb,EAA2CooC,SAA3C,CAAP;EApB+B;EAuBjCH,sBAAsB5sB,QAAtB,EAAgC;IAK9B,SAASitB,eAATA,CAAA,EAA2B;MACzB,IAAAvpC,YAAA,EAAO,CAAC0gC,OAAA,CAAQxiB,IAAhB,EAAsB,2CAAtB;MACAwiB,OAAA,CAAQxiB,IAAR,GAAe,IAAf;MAGA,OAAOspB,eAAA,CAAgB5mC,MAAhB,GAAyB,CAAzB,IAA8B4mC,eAAA,CAAgB,CAAhB,EAAmBtpB,IAAxD,EAA8D;QAC5D,MAAMsrB,YAAA,GAAehC,eAAA,CAAgBiC,KAAhB,EAArB;QACAxqB,UAAA,CAAWuqB,YAAA,CAAaltB,QAAxB,EAAkC,CAAlC;MAF4D;IALrC;IAW3B,MAAM;MAAEkrB;IAAF,IAAsB,IAA5B;IACA,MAAM9G,OAAA,GAAU;MACdxiB,IAAA,EAAM,KADQ;MAEdtC,QAAA,EAAU2tB,eAFI;MAGdjtB;IAHc,CAAhB;IAKAkrB,eAAA,CAAgB/jC,IAAhB,CAAqBi9B,OAArB;IACA,OAAOA,OAAP;EAvB8B;EA0BhC,IAAIgJ,aAAJA,CAAA,EAAoB;IAOlB,MAAMC,QAAA,GAAWC,IAAA,CACf,yEACE,sEADF,GAEE,sEAFF,GAGE,sEAHF,GAIE,sEAJF,GAKE,sEALF,GAME,sEANF,GAOE,sEAPF,GAQE,sEARF,GASE,sEATF,GAUE,sEAVF,GAWE,sEAXF,GAYE,sEAZF,GAaE,sEAbF,GAcE,sEAdF,GAeE,sEAfF,GAgBE,sEAhBF,GAiBE,sEAjBF,GAkBE,sEAlBF,GAmBE,sEAnBF,GAoBE,sEApBF,GAqBE,sEAtBa,CAAjB;IAwBA,OAAO,IAAA3oC,YAAA,EAAO,IAAP,EAAa,eAAb,EAA8B0oC,QAA9B,CAAP;EA/BkB;EAkCpBR,sBAAsBxiB,IAAtB,EAA4B+Z,OAA5B,EAAqC;IAWnC,SAASmJ,KAATA,CAAeh+B,IAAf,EAAqBi+B,MAArB,EAA6B;MAC3B,OACGj+B,IAAA,CAAK/H,UAAL,CAAgBgmC,MAAhB,KAA2B,EAA5B,GACCj+B,IAAA,CAAK/H,UAAL,CAAgBgmC,MAAA,GAAS,CAAzB,KAA+B,EADhC,GAECj+B,IAAA,CAAK/H,UAAL,CAAgBgmC,MAAA,GAAS,CAAzB,KAA+B,CAFhC,GAGCj+B,IAAA,CAAK/H,UAAL,CAAgBgmC,MAAA,GAAS,CAAzB,IAA8B,IAJjC;IAD2B;IAQ7B,SAASC,YAATA,CAAsBC,CAAtB,EAAyBF,MAAzB,EAAiClf,MAAjC,EAAyCqf,MAAzC,EAAiD;MAC/C,MAAMC,MAAA,GAASF,CAAA,CAAExH,SAAF,CAAY,CAAZ,EAAesH,MAAf,CAAf;MACA,MAAMK,MAAA,GAASH,CAAA,CAAExH,SAAF,CAAYsH,MAAA,GAASlf,MAArB,CAAf;MACA,OAAOsf,MAAA,GAASD,MAAT,GAAkBE,MAAzB;IAH+C;IAKjD,IAAIhnC,CAAJ,EAAO8G,EAAP;IAGA,MAAMke,MAAA,GAAS,KAAK8X,SAAL,CAAehP,aAAf,CAA6B,QAA7B,CAAf;IACA9I,MAAA,CAAOhB,KAAP,GAAe,CAAf;IACAgB,MAAA,CAAOf,MAAP,GAAgB,CAAhB;IACA,MAAMme,GAAA,GAAMpd,MAAA,CAAOge,UAAP,CAAkB,IAAlB,CAAZ;IAEA,IAAIiE,MAAA,GAAS,CAAb;IACA,SAASC,WAATA,CAAqBvoC,IAArB,EAA2Bwa,QAA3B,EAAqC;MAEnC,IAAI,EAAE8tB,MAAF,GAAW,EAAf,EAAmB;QACjB,IAAAvqC,UAAA,EAAK,8BAAL;QACAyc,QAAA;QACA;MAHiB;MAKnBipB,GAAA,CAAI5e,IAAJ,GAAW,UAAU7kB,IAArB;MACAyjC,GAAA,CAAI+E,QAAJ,CAAa,GAAb,EAAkB,CAAlB,EAAqB,EAArB;MACA,MAAMtjB,SAAA,GAAYue,GAAA,CAAIgF,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;MACA,IAAIvjB,SAAA,CAAUnb,IAAV,CAAe,CAAf,IAAoB,CAAxB,EAA2B;QACzByQ,QAAA;QACA;MAFyB;MAI3B2C,UAAA,CAAWorB,WAAA,CAAYvjB,IAAZ,CAAiB,IAAjB,EAAuBhlB,IAAvB,EAA6Bwa,QAA7B,CAAX;IAdmC;IAiBrC,MAAMmrB,cAAA,GAAkB,KAAIz8B,IAAA,CAAKu4B,GAAL,EAAL,GAAkB,KAAKkE,cAAL,EAAlB,EAAvB;IAMA,IAAI57B,IAAA,GAAO,KAAK69B,aAAhB;IACA,MAAMc,cAAA,GAAiB,GAAvB;IACA3+B,IAAA,GAAOk+B,YAAA,CACLl+B,IADK,EAEL2+B,cAFK,EAGL/C,cAAA,CAAe7mC,MAHV,EAIL6mC,cAJK,CAAP;IAOA,MAAMgD,mBAAA,GAAsB,EAA5B;IACA,MAAMC,UAAA,GAAa,UAAnB;IACA,IAAIC,QAAA,GAAWd,KAAA,CAAMh+B,IAAN,EAAY4+B,mBAAZ,CAAf;IACA,KAAKtnC,CAAA,GAAI,CAAJ,EAAO8G,EAAA,GAAKw9B,cAAA,CAAe7mC,MAAf,GAAwB,CAAzC,EAA4CuC,CAAA,GAAI8G,EAAhD,EAAoD9G,CAAA,IAAK,CAAzD,EAA4D;MAC1DwnC,QAAA,GAAYA,QAAA,GAAWD,UAAX,GAAwBb,KAAA,CAAMpC,cAAN,EAAsBtkC,CAAtB,CAAzB,GAAqD,CAAhE;IAD0D;IAG5D,IAAIA,CAAA,GAAIskC,cAAA,CAAe7mC,MAAvB,EAA+B;MAE7B+pC,QAAA,GAAYA,QAAA,GAAWD,UAAX,GAAwBb,KAAA,CAAMpC,cAAA,GAAiB,KAAvB,EAA8BtkC,CAA9B,CAAzB,GAA6D,CAAxE;IAF6B;IAI/B0I,IAAA,GAAOk+B,YAAA,CAAal+B,IAAb,EAAmB4+B,mBAAnB,EAAwC,CAAxC,EAA2C,IAAA1mC,cAAA,EAAS4mC,QAAT,CAA3C,CAAP;IAEA,MAAMxqC,GAAA,GAAO,iCAAgCyqC,IAAA,CAAK/+B,IAAL,CAAW,IAAxD;IACA,MAAMk8B,IAAA,GAAQ,4BAA2BN,cAAe,SAAQtnC,GAAI,GAApE;IACA,KAAK2nC,UAAL,CAAgBC,IAAhB;IAEA,MAAMlb,GAAA,GAAM,KAAKoT,SAAL,CAAehP,aAAf,CAA6B,KAA7B,CAAZ;IACApE,GAAA,CAAI4B,KAAJ,CAAU+N,UAAV,GAAuB,QAAvB;IACA3P,GAAA,CAAI4B,KAAJ,CAAUtH,KAAV,GAAkB0F,GAAA,CAAI4B,KAAJ,CAAUrH,MAAV,GAAmB,MAArC;IACAyF,GAAA,CAAI4B,KAAJ,CAAUkF,QAAV,GAAqB,UAArB;IACA9G,GAAA,CAAI4B,KAAJ,CAAU0B,GAAV,GAAgBtD,GAAA,CAAI4B,KAAJ,CAAUyB,IAAV,GAAiB,KAAjC;IAEA,WAAWpuB,IAAX,IAAmB,CAAC6kB,IAAA,CAAK0hB,UAAN,EAAkBZ,cAAlB,CAAnB,EAAsD;MACpD,MAAMrC,IAAA,GAAO,KAAKnF,SAAL,CAAehP,aAAf,CAA6B,MAA7B,CAAb;MACAmU,IAAA,CAAK3nB,WAAL,GAAmB,IAAnB;MACA2nB,IAAA,CAAK3W,KAAL,CAAWoc,UAAX,GAAwB/oC,IAAxB;MACA+qB,GAAA,CAAI+P,MAAJ,CAAWwI,IAAX;IAJoD;IAMtD,KAAKnF,SAAL,CAAepD,IAAf,CAAoBD,MAApB,CAA2B/P,GAA3B;IAEAwd,WAAA,CAAY5C,cAAZ,EAA4B,MAAM;MAChC5a,GAAA,CAAIjC,MAAJ;MACA8V,OAAA,CAAQ9kB,QAAR;IAFgC,CAAlC;EA/FmC;AAtOtB;AA1BjBtrB,kBAAA,GAAAozB,UAAA;AAuWA,MAAMmD,cAAN,CAAqB;EACnB9kB,YACE+oC,cADF,EAEE;IACEnmC,eAAA,GAAkB,IADpB;IAEE0L,eAAA,GAAkB,KAFpB;IAGEJ,YAAA,GAAe,KAHjB;IAIEuW,WAAA,GAAc;EAJhB,CAFF,EAQE;IACA,KAAKukB,cAAL,GAAsBzpC,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAtB;IAEA,WAAWjB,CAAX,IAAgB2nC,cAAhB,EAAgC;MAC9B,KAAK3nC,CAAL,IAAU2nC,cAAA,CAAe3nC,CAAf,CAAV;IAD8B;IAGhC,KAAKwB,eAAL,GAAuBA,eAAA,KAAoB,KAA3C;IACA,KAAK0L,eAAL,GAAuBA,eAAA,KAAoB,IAA3C;IACA,KAAKJ,YAAL,GAAoBA,YAAA,KAAiB,IAArC;IACA,KAAK+6B,YAAL,GAAoBxkB,WAApB;EATA;EAYFsiB,qBAAA,EAAuB;IACrB,IAAI,CAAC,KAAKj9B,IAAN,IAAc,KAAKwE,eAAvB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,IAAIs3B,cAAJ;IACA,IAAI,CAAC,KAAKsD,WAAV,EAAuB;MACrBtD,cAAA,GAAiB,IAAIa,QAAJ,CAAa,KAAKH,UAAlB,EAA8B,KAAKx8B,IAAnC,EAAyC,EAAzC,CAAjB;IADqB,CAAvB,MAEO;MACL,MAAMq/B,GAAA,GAAM;QACVC,MAAA,EAAQ,KAAKF,WAAL,CAAiBG;MADf,CAAZ;MAGA,IAAI,KAAKH,WAAL,CAAiBI,WAArB,EAAkC;QAChCH,GAAA,CAAIzc,KAAJ,GAAa,WAAU,KAAKwc,WAAL,CAAiBI,WAAY,KAApD;MADgC;MAGlC1D,cAAA,GAAiB,IAAIa,QAAJ,CACf,KAAKyC,WAAL,CAAiBJ,UADF,EAEf,KAAKh/B,IAFU,EAGfq/B,GAHe,CAAjB;IAPK;IAcP,KAAKF,YAAL,GAAoB,IAApB;IACA,OAAOrD,cAAP;EAtBqB;EAyBvBqB,mBAAA,EAAqB;IACnB,IAAI,CAAC,KAAKn9B,IAAN,IAAc,KAAKwE,eAAvB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMxE,IAAA,GAAO,IAAAlJ,mBAAA,EAAc,KAAKkJ,IAAnB,CAAb;IAEA,MAAM1L,GAAA,GAAO,YAAW,KAAKmrC,QAAS,WAAUV,IAAA,CAAK/+B,IAAL,CAAW,IAA3D;IACA,IAAIk8B,IAAJ;IACA,IAAI,CAAC,KAAKkD,WAAV,EAAuB;MACrBlD,IAAA,GAAQ,4BAA2B,KAAKM,UAAW,SAAQloC,GAAI,GAA/D;IADqB,CAAvB,MAEO;MACL,IAAI+qC,GAAA,GAAO,gBAAe,KAAKD,WAAL,CAAiBG,UAAW,GAAtD;MACA,IAAI,KAAKH,WAAL,CAAiBI,WAArB,EAAkC;QAChCH,GAAA,IAAQ,uBAAsB,KAAKD,WAAL,CAAiBI,WAAY,MAA3D;MADgC;MAGlCtD,IAAA,GAAQ,4BAA2B,KAAKkD,WAAL,CAAiBJ,UAAW,KAAIK,GAAI,OAAM/qC,GAAI,GAAjF;IALK;IAQP,KAAK6qC,YAAL,GAAoB,IAApB,EAA0B7qC,GAA1B;IACA,OAAO4nC,IAAP;EAnBmB;EAsBrBwD,iBAAiB1yB,IAAjB,EAAuB2yB,SAAvB,EAAkC;IAChC,IAAI,KAAKT,cAAL,CAAoBS,SAApB,MAAmC3oC,SAAvC,EAAkD;MAChD,OAAO,KAAKkoC,cAAL,CAAoBS,SAApB,CAAP;IADgD;IAIlD,IAAIC,IAAJ;IACA,IAAI;MACFA,IAAA,GAAO5yB,IAAA,CAAKvM,GAAL,CAAS,KAAK+7B,UAAL,GAAkB,QAAlB,GAA6BmD,SAAtC,CAAP;IADE,CAAJ,CAEE,OAAOxhC,EAAP,EAAW;MACX,IAAI,CAAC,KAAKiG,YAAV,EAAwB;QACtB,MAAMjG,EAAN;MADsB;MAGxB,IAAAnK,UAAA,EAAM,2CAA0CmK,EAAG,IAAnD;MAEA,OAAQ,KAAK+gC,cAAL,CAAoBS,SAApB,IAAiC,UAAUlkC,CAAV,EAAakW,IAAb,EAAmB,EAA5D;IANW;IAYb,IAAI,KAAK7Y,eAAL,IAAwBE,iBAAA,CAAYF,eAAxC,EAAyD;MACvD,MAAM+mC,KAAA,GAAQ,EAAd;MACA,WAAWC,OAAX,IAAsBF,IAAtB,EAA4B;QAC1B,MAAMG,IAAA,GAAOD,OAAA,CAAQC,IAAR,KAAiB/oC,SAAjB,GAA6B8oC,OAAA,CAAQC,IAAR,CAAaloC,IAAb,CAAkB,GAAlB,CAA7B,GAAsD,EAAnE;QACAgoC,KAAA,CAAMjoC,IAAN,CAAW,IAAX,EAAiBkoC,OAAA,CAAQ/X,GAAzB,EAA8B,GAA9B,EAAmCgY,IAAnC,EAAyC,MAAzC;MAF0B;MAK5B,OAAQ,KAAKb,cAAL,CAAoBS,SAApB,IAAiC,IAAI5mC,QAAJ,CACvC,GADuC,EAEvC,MAFuC,EAGvC8mC,KAAA,CAAMhoC,IAAN,CAAW,EAAX,CAHuC,CAAzC;IAPuD;IAezD,OAAQ,KAAKqnC,cAAL,CAAoBS,SAApB,IAAiC,UAAUlkC,CAAV,EAAakW,IAAb,EAAmB;MAC1D,WAAWmuB,OAAX,IAAsBF,IAAtB,EAA4B;QAC1B,IAAIE,OAAA,CAAQ/X,GAAR,KAAgB,OAApB,EAA6B;UAC3B+X,OAAA,CAAQC,IAAR,GAAe,CAACpuB,IAAD,EAAO,CAACA,IAAR,CAAf;QAD2B;QAI7BlW,CAAA,CAAEqkC,OAAA,CAAQ/X,GAAV,EAAe3wB,KAAf,CAAqBqE,CAArB,EAAwBqkC,OAAA,CAAQC,IAAhC;MAL0B;IAD8B,CAA5D;EAnCgC;AApEf;AAvWrBt7C,sBAAA,GAAAu2B,cAAA;;;;;;;;;;;;ACoBA,MAAMrZ,QAAA,GAEJ,OAAOq+B,OAAP,KAAmB,QADnB,IAEAA,OAAA,GAAU,EAAV,KAAiB,kBAFjB,IAGA,CAACA,OAAA,CAAQC,QAAR,CAAiBC,EAHlB,IAIA,EAAEF,OAAA,CAAQC,QAAR,CAAiBE,QAAjB,IAA6BH,OAAA,CAAQxlB,IAArC,IAA6CwlB,OAAA,CAAQxlB,IAAR,KAAiB,SAA9D,CALJ;AApBA/1B,gBAAA,GAAAkd,QAAA;;;;;;;;;;;;ACeA,IAAAjB,KAAA,GAAAC,mBAAA;AAaA,IAAAE,cAAA,GAAAF,mBAAA;AAKA,IAAAy/B,eAAA,GAAAz/B,mBAAA;AAKA,IAAA0/B,YAAA,GAAA1/B,mBAAA;AACA,IAAAM,QAAA,GAAAN,mBAAA;AAKA,MAAM2/B,aAAA,GAAgB,EAAtB;AAEA,MAAMC,aAAA,GAAgB,GAAtB;AACA,MAAMC,cAAA,GAAiB,IAAvB;AAIA,MAAMC,cAAA,GAAiB,EAAvB;AAEA,MAAMC,eAAA,GAAkB,EAAxB;AAGA,MAAMC,mBAAA,GAAsB,IAA5B;AAEA,MAAMC,iBAAA,GAAoB,EAA1B;AAgBA,SAASC,uBAATA,CAAiCnH,GAAjC,EAAsCoH,OAAtC,EAA+C;EAC7C,IAAIpH,GAAA,CAAIqH,gBAAR,EAA0B;IACxB,MAAM,IAAI7sC,KAAJ,CAAU,2CAAV,CAAN;EADwB;EAG1BwlC,GAAA,CAAIsH,cAAJ,GAAqBtH,GAAA,CAAItrC,IAAzB;EACAsrC,GAAA,CAAIuH,iBAAJ,GAAwBvH,GAAA,CAAIrrC,OAA5B;EACAqrC,GAAA,CAAIwH,gBAAJ,GAAuBxH,GAAA,CAAItsB,MAA3B;EACAssB,GAAA,CAAIyH,eAAJ,GAAsBzH,GAAA,CAAIlsB,KAA1B;EACAksB,GAAA,CAAI0H,mBAAJ,GAA0B1H,GAAA,CAAInV,SAA9B;EACAmV,GAAA,CAAI2H,mBAAJ,GAA0B3H,GAAA,CAAIprC,SAA9B;EACAorC,GAAA,CAAI4H,sBAAJ,GAA6B5H,GAAA,CAAI6H,YAAjC;EACA7H,GAAA,CAAI8H,wBAAJ,GAA+B9H,GAAA,CAAI+H,cAAnC;EACA/H,GAAA,CAAIgI,cAAJ,GAAqBhI,GAAA,CAAInqC,IAAzB;EACAmqC,GAAA,CAAIiI,gBAAJ,GAAuBjI,GAAA,CAAInrC,MAA3B;EACAmrC,GAAA,CAAIkI,gBAAJ,GAAuBlI,GAAA,CAAIlrC,MAA3B;EACAkrC,GAAA,CAAImI,uBAAJ,GAA8BnI,GAAA,CAAIoI,aAAlC;EACApI,GAAA,CAAIqI,cAAJ,GAAqBrI,GAAA,CAAI19B,IAAzB;EACA09B,GAAA,CAAIsI,mBAAJ,GAA0BtI,GAAA,CAAI9qC,SAA9B;EACA8qC,GAAA,CAAIuI,mBAAJ,GAA0BvI,GAAA,CAAIwI,SAA9B;EAEAxI,GAAA,CAAIqH,gBAAJ,GAAuB,MAAM;IAC3BrH,GAAA,CAAItrC,IAAJ,GAAWsrC,GAAA,CAAIsH,cAAf;IACAtH,GAAA,CAAIrrC,OAAJ,GAAcqrC,GAAA,CAAIuH,iBAAlB;IACAvH,GAAA,CAAItsB,MAAJ,GAAassB,GAAA,CAAIwH,gBAAjB;IACAxH,GAAA,CAAIlsB,KAAJ,GAAYksB,GAAA,CAAIyH,eAAhB;IACAzH,GAAA,CAAInV,SAAJ,GAAgBmV,GAAA,CAAI0H,mBAApB;IACA1H,GAAA,CAAIprC,SAAJ,GAAgBorC,GAAA,CAAI2H,mBAApB;IACA3H,GAAA,CAAI6H,YAAJ,GAAmB7H,GAAA,CAAI4H,sBAAvB;IACA5H,GAAA,CAAI+H,cAAJ,GAAqB/H,GAAA,CAAI8H,wBAAzB;IAEA9H,GAAA,CAAInqC,IAAJ,GAAWmqC,GAAA,CAAIgI,cAAf;IACAhI,GAAA,CAAInrC,MAAJ,GAAamrC,GAAA,CAAIiI,gBAAjB;IACAjI,GAAA,CAAIlrC,MAAJ,GAAakrC,GAAA,CAAIkI,gBAAjB;IACAlI,GAAA,CAAIoI,aAAJ,GAAoBpI,GAAA,CAAImI,uBAAxB;IACAnI,GAAA,CAAI19B,IAAJ,GAAW09B,GAAA,CAAIqI,cAAf;IACArI,GAAA,CAAI9qC,SAAJ,GAAgB8qC,GAAA,CAAIsI,mBAApB;IACAtI,GAAA,CAAIwI,SAAJ,GAAgBxI,GAAA,CAAIuI,mBAApB;IACA,OAAOvI,GAAA,CAAIqH,gBAAX;EAjB2B,CAA7B;EAoBArH,GAAA,CAAItrC,IAAJ,GAAW,SAAS+zC,OAATA,CAAA,EAAmB;IAC5BrB,OAAA,CAAQ1yC,IAAR;IACA,KAAK4yC,cAAL;EAF4B,CAA9B;EAKAtH,GAAA,CAAIrrC,OAAJ,GAAc,SAAS+zC,UAATA,CAAA,EAAsB;IAClCtB,OAAA,CAAQzyC,OAAR;IACA,KAAK4yC,iBAAL;EAFkC,CAApC;EAKAvH,GAAA,CAAInV,SAAJ,GAAgB,SAAS8d,YAATA,CAAsBxgB,CAAtB,EAAyBC,CAAzB,EAA4B;IAC1Cgf,OAAA,CAAQvc,SAAR,CAAkB1C,CAAlB,EAAqBC,CAArB;IACA,KAAKsf,mBAAL,CAAyBvf,CAAzB,EAA4BC,CAA5B;EAF0C,CAA5C;EAKA4X,GAAA,CAAIlsB,KAAJ,GAAY,SAAS80B,QAATA,CAAkBzgB,CAAlB,EAAqBC,CAArB,EAAwB;IAClCgf,OAAA,CAAQtzB,KAAR,CAAcqU,CAAd,EAAiBC,CAAjB;IACA,KAAKqf,eAAL,CAAqBtf,CAArB,EAAwBC,CAAxB;EAFkC,CAApC;EAKA4X,GAAA,CAAIprC,SAAJ,GAAgB,SAASi0C,YAATA,CAAsB/mC,CAAtB,EAAyBvB,CAAzB,EAA4BwB,CAA5B,EAA+BZ,CAA/B,EAAkC8+B,CAAlC,EAAqCC,CAArC,EAAwC;IACtDkH,OAAA,CAAQxyC,SAAR,CAAkBkN,CAAlB,EAAqBvB,CAArB,EAAwBwB,CAAxB,EAA2BZ,CAA3B,EAA8B8+B,CAA9B,EAAiCC,CAAjC;IACA,KAAKyH,mBAAL,CAAyB7lC,CAAzB,EAA4BvB,CAA5B,EAA+BwB,CAA/B,EAAkCZ,CAAlC,EAAqC8+B,CAArC,EAAwCC,CAAxC;EAFsD,CAAxD;EAKAF,GAAA,CAAI6H,YAAJ,GAAmB,SAASiB,eAATA,CAAyBhnC,CAAzB,EAA4BvB,CAA5B,EAA+BwB,CAA/B,EAAkCZ,CAAlC,EAAqC8+B,CAArC,EAAwCC,CAAxC,EAA2C;IAC5DkH,OAAA,CAAQS,YAAR,CAAqB/lC,CAArB,EAAwBvB,CAAxB,EAA2BwB,CAA3B,EAA8BZ,CAA9B,EAAiC8+B,CAAjC,EAAoCC,CAApC;IACA,KAAK0H,sBAAL,CAA4B9lC,CAA5B,EAA+BvB,CAA/B,EAAkCwB,CAAlC,EAAqCZ,CAArC,EAAwC8+B,CAAxC,EAA2CC,CAA3C;EAF4D,CAA9D;EAKAF,GAAA,CAAI+H,cAAJ,GAAqB,SAASgB,iBAATA,CAAA,EAA6B;IAChD3B,OAAA,CAAQW,cAAR;IACA,KAAKD,wBAAL;EAFgD,CAAlD;EAKA9H,GAAA,CAAItsB,MAAJ,GAAa,SAASs1B,SAATA,CAAmBC,KAAnB,EAA0B;IACrC7B,OAAA,CAAQ1zB,MAAR,CAAeu1B,KAAf;IACA,KAAKzB,gBAAL,CAAsByB,KAAtB;EAFqC,CAAvC;EAKAjJ,GAAA,CAAInqC,IAAJ,GAAW,SAASmzC,SAATA,CAAmBxG,IAAnB,EAAyB;IAClC4E,OAAA,CAAQvxC,IAAR,CAAa2sC,IAAb;IACA,KAAKwF,cAAL,CAAoBxF,IAApB;EAFkC,CAApC;EAKAxC,GAAA,CAAInrC,MAAJ,GAAa,UAAUszB,CAAV,EAAaC,CAAb,EAAgB;IAC3Bgf,OAAA,CAAQvyC,MAAR,CAAeszB,CAAf,EAAkBC,CAAlB;IACA,KAAK6f,gBAAL,CAAsB9f,CAAtB,EAAyBC,CAAzB;EAF2B,CAA7B;EAKA4X,GAAA,CAAIlrC,MAAJ,GAAa,UAAUqzB,CAAV,EAAaC,CAAb,EAAgB;IAC3Bgf,OAAA,CAAQtyC,MAAR,CAAeqzB,CAAf,EAAkBC,CAAlB;IACA,KAAK8f,gBAAL,CAAsB/f,CAAtB,EAAyBC,CAAzB;EAF2B,CAA7B;EAKA4X,GAAA,CAAIoI,aAAJ,GAAoB,UAAUc,IAAV,EAAgBC,IAAhB,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkClhB,CAAlC,EAAqCC,CAArC,EAAwC;IAC1Dgf,OAAA,CAAQgB,aAAR,CAAsBc,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8ClhB,CAA9C,EAAiDC,CAAjD;IACA,KAAK+f,uBAAL,CAA6Be,IAA7B,EAAmCC,IAAnC,EAAyCC,IAAzC,EAA+CC,IAA/C,EAAqDlhB,CAArD,EAAwDC,CAAxD;EAF0D,CAA5D;EAKA4X,GAAA,CAAI19B,IAAJ,GAAW,UAAU6lB,CAAV,EAAaC,CAAb,EAAgBxG,KAAhB,EAAuBC,MAAvB,EAA+B;IACxCulB,OAAA,CAAQ9kC,IAAR,CAAa6lB,CAAb,EAAgBC,CAAhB,EAAmBxG,KAAnB,EAA0BC,MAA1B;IACA,KAAKwmB,cAAL,CAAoBlgB,CAApB,EAAuBC,CAAvB,EAA0BxG,KAA1B,EAAiCC,MAAjC;EAFwC,CAA1C;EAKAme,GAAA,CAAI9qC,SAAJ,GAAgB,YAAY;IAC1BkyC,OAAA,CAAQlyC,SAAR;IACA,KAAKozC,mBAAL;EAF0B,CAA5B;EAKAtI,GAAA,CAAIwI,SAAJ,GAAgB,YAAY;IAC1BpB,OAAA,CAAQoB,SAAR;IACA,KAAKD,mBAAL;EAF0B,CAA5B;AA9G6C;AAoH/C,MAAMe,cAAN,CAAqB;EACnB9sC,YAAYoP,aAAZ,EAA2B;IACzB,KAAKA,aAAL,GAAqBA,aAArB;IACA,KAAKmrB,KAAL,GAAah7B,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAb;EAFyB;EAK3B0qC,UAAUv4B,EAAV,EAAc4Q,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,IAAI2nB,WAAJ;IACA,IAAI,KAAKzS,KAAL,CAAW/lB,EAAX,MAAmB1T,SAAvB,EAAkC;MAChCksC,WAAA,GAAc,KAAKzS,KAAL,CAAW/lB,EAAX,CAAd;MACA,KAAKpF,aAAL,CAAmBi1B,KAAnB,CAAyB2I,WAAzB,EAAsC5nB,KAAtC,EAA6CC,MAA7C;IAFgC,CAAlC,MAGO;MACL2nB,WAAA,GAAc,KAAK59B,aAAL,CAAmB/M,MAAnB,CAA0B+iB,KAA1B,EAAiCC,MAAjC,CAAd;MACA,KAAKkV,KAAL,CAAW/lB,EAAX,IAAiBw4B,WAAjB;IAFK;IAIP,OAAOA,WAAP;EAT2B;EAY7BhzB,OAAOxF,EAAP,EAAW;IACT,OAAO,KAAK+lB,KAAL,CAAW/lB,EAAX,CAAP;EADS;EAIXsI,MAAA,EAAQ;IACN,WAAWtI,EAAX,IAAiB,KAAK+lB,KAAtB,EAA6B;MAC3B,MAAMyS,WAAA,GAAc,KAAKzS,KAAL,CAAW/lB,EAAX,CAApB;MACA,KAAKpF,aAAL,CAAmB+C,OAAnB,CAA2B66B,WAA3B;MACA,OAAO,KAAKzS,KAAL,CAAW/lB,EAAX,CAAP;IAH2B;EADvB;AAtBW;AA+BrB,SAASy4B,wBAATA,CACEzJ,GADF,EAEE0J,MAFF,EAGEC,IAHF,EAIEC,IAJF,EAKEC,IALF,EAMEC,IANF,EAOEC,KAPF,EAQEC,KARF,EASEC,KATF,EAUEC,KAVF,EAWE;EACA,MAAM,CAACpoC,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAaqpB,EAAb,EAAiBC,EAAjB,IAAuB,IAAAsV,kCAAA,EAAoBC,GAApB,CAA7B;EACA,IAAIz/B,CAAA,KAAM,CAAN,IAAWwB,CAAA,KAAM,CAArB,EAAwB;IAWtB,MAAMooC,GAAA,GAAMJ,KAAA,GAAQjoC,CAAR,GAAY0oB,EAAxB;IACA,MAAM4f,IAAA,GAAOtsC,IAAA,CAAK+vB,KAAL,CAAWsc,GAAX,CAAb;IACA,MAAME,GAAA,GAAML,KAAA,GAAQ7oC,CAAR,GAAYspB,EAAxB;IACA,MAAM6f,IAAA,GAAOxsC,IAAA,CAAK+vB,KAAL,CAAWwc,GAAX,CAAb;IACA,MAAME,GAAA,GAAO,CAAAR,KAAA,GAAQE,KAAR,IAAiBnoC,CAAlB,GAAsB0oB,EAAlC;IAIA,MAAMggB,MAAA,GAAS1sC,IAAA,CAAKgG,GAAL,CAAShG,IAAA,CAAK+vB,KAAL,CAAW0c,GAAX,IAAkBH,IAA3B,KAAoC,CAAnD;IACA,MAAMK,GAAA,GAAO,CAAAT,KAAA,GAAQE,KAAR,IAAiB/oC,CAAlB,GAAsBspB,EAAlC;IACA,MAAMigB,OAAA,GAAU5sC,IAAA,CAAKgG,GAAL,CAAShG,IAAA,CAAK+vB,KAAL,CAAW4c,GAAX,IAAkBH,IAA3B,KAAoC,CAApD;IAKAtK,GAAA,CAAI6H,YAAJ,CAAiB/pC,IAAA,CAAK6sC,IAAL,CAAU7oC,CAAV,CAAjB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqChE,IAAA,CAAK6sC,IAAL,CAAUxpC,CAAV,CAArC,EAAmDipC,IAAnD,EAAyDE,IAAzD;IACAtK,GAAA,CAAI4K,SAAJ,CAAclB,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8C,CAA9C,EAAiD,CAAjD,EAAoDU,MAApD,EAA4DE,OAA5D;IACA1K,GAAA,CAAI6H,YAAJ,CAAiB/lC,CAAjB,EAAoBvB,CAApB,EAAuBwB,CAAvB,EAA0BZ,CAA1B,EAA6BqpB,EAA7B,EAAiCC,EAAjC;IAEA,OAAO,CAAC+f,MAAD,EAASE,OAAT,CAAP;EA9BsB;EAiCxB,IAAI5oC,CAAA,KAAM,CAAN,IAAWX,CAAA,KAAM,CAArB,EAAwB;IAEtB,MAAMgpC,GAAA,GAAMH,KAAA,GAAQjoC,CAAR,GAAYyoB,EAAxB;IACA,MAAM4f,IAAA,GAAOtsC,IAAA,CAAK+vB,KAAL,CAAWsc,GAAX,CAAb;IACA,MAAME,GAAA,GAAMN,KAAA,GAAQxpC,CAAR,GAAYkqB,EAAxB;IACA,MAAM6f,IAAA,GAAOxsC,IAAA,CAAK+vB,KAAL,CAAWwc,GAAX,CAAb;IACA,MAAME,GAAA,GAAO,CAAAP,KAAA,GAAQE,KAAR,IAAiBnoC,CAAlB,GAAsByoB,EAAlC;IACA,MAAMggB,MAAA,GAAS1sC,IAAA,CAAKgG,GAAL,CAAShG,IAAA,CAAK+vB,KAAL,CAAW0c,GAAX,IAAkBH,IAA3B,KAAoC,CAAnD;IACA,MAAMK,GAAA,GAAO,CAAAV,KAAA,GAAQE,KAAR,IAAiB1pC,CAAlB,GAAsBkqB,EAAlC;IACA,MAAMigB,OAAA,GAAU5sC,IAAA,CAAKgG,GAAL,CAAShG,IAAA,CAAK+vB,KAAL,CAAW4c,GAAX,IAAkBH,IAA3B,KAAoC,CAApD;IAEAtK,GAAA,CAAI6H,YAAJ,CAAiB,CAAjB,EAAoB/pC,IAAA,CAAK6sC,IAAL,CAAUpqC,CAAV,CAApB,EAAkCzC,IAAA,CAAK6sC,IAAL,CAAU5oC,CAAV,CAAlC,EAAgD,CAAhD,EAAmDqoC,IAAnD,EAAyDE,IAAzD;IACAtK,GAAA,CAAI4K,SAAJ,CAAclB,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8C,CAA9C,EAAiD,CAAjD,EAAoDY,OAApD,EAA6DF,MAA7D;IACAxK,GAAA,CAAI6H,YAAJ,CAAiB/lC,CAAjB,EAAoBvB,CAApB,EAAuBwB,CAAvB,EAA0BZ,CAA1B,EAA6BqpB,EAA7B,EAAiCC,EAAjC;IAEA,OAAO,CAACigB,OAAD,EAAUF,MAAV,CAAP;EAfsB;EAmBxBxK,GAAA,CAAI4K,SAAJ,CAAclB,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8CC,KAA9C,EAAqDC,KAArD,EAA4DC,KAA5D,EAAmEC,KAAnE;EAEA,MAAMW,MAAA,GAAS/sC,IAAA,CAAKgtC,KAAL,CAAWhpC,CAAX,EAAcvB,CAAd,CAAf;EACA,MAAMwqC,MAAA,GAASjtC,IAAA,CAAKgtC,KAAL,CAAW/oC,CAAX,EAAcZ,CAAd,CAAf;EACA,OAAO,CAAC0pC,MAAA,GAASZ,KAAV,EAAiBc,MAAA,GAASb,KAA1B,CAAP;AA1DA;AA6DF,SAASc,iBAATA,CAA2BC,OAA3B,EAAoC;EAClC,MAAM;IAAErpB,KAAF;IAASC;EAAT,IAAoBopB,OAA1B;EACA,IAAIrpB,KAAA,GAAQqlB,mBAAR,IAA+BplB,MAAA,GAASolB,mBAA5C,EAAiE;IAC/D,OAAO,IAAP;EAD+D;EAIjE,MAAMiE,sBAAA,GAAyB,IAA/B;EACA,MAAMC,WAAA,GAAc,IAAI7sC,UAAJ,CAAe,CACjC,CADiC,EAC9B,CAD8B,EAC3B,CAD2B,EACxB,CADwB,EACrB,CADqB,EAClB,CADkB,EACf,CADe,EACZ,CADY,EACT,CADS,EACN,EADM,EACF,CADE,EACC,CADD,EACI,CADJ,EACO,CADP,EACU,CADV,EACa,CADb,CAAf,CAApB;EAIA,MAAM8sC,MAAA,GAASxpB,KAAA,GAAQ,CAAvB;EACA,IAAIypB,MAAA,GAAS,IAAI/sC,UAAJ,CAAe8sC,MAAA,IAAUvpB,MAAA,GAAS,CAAT,CAAzB,CAAb;EACA,IAAIjkB,CAAJ,EAAOmG,CAAP,EAAUunC,EAAV;EAGA,MAAMC,QAAA,GAAY3pB,KAAA,GAAQ,CAAT,GAAc,CAAC,CAAhC;EACA,IAAItb,IAAA,GAAO,IAAIhI,UAAJ,CAAeitC,QAAA,GAAW1pB,MAA1B,CAAX;IACE2pB,GAAA,GAAM,CADR;EAEA,WAAWC,IAAX,IAAmBR,OAAA,CAAQ3kC,IAA3B,EAAiC;IAC/B,IAAIolC,IAAA,GAAO,GAAX;IACA,OAAOA,IAAA,GAAO,CAAd,EAAiB;MACfplC,IAAA,CAAKklC,GAAA,EAAL,IAAcC,IAAA,GAAOC,IAAP,GAAc,CAAd,GAAkB,GAAhC;MACAA,IAAA,KAAS,CAAT;IAFe;EAFc;EAkBjC,IAAIC,KAAA,GAAQ,CAAZ;EACAH,GAAA,GAAM,CAAN;EACA,IAAIllC,IAAA,CAAKklC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAO,CAAP,IAAY,CAAZ;IACA,EAAEM,KAAF;EAFmB;EAIrB,KAAK5nC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI6d,KAAhB,EAAuB7d,CAAA,EAAvB,EAA4B;IAC1B,IAAIuC,IAAA,CAAKklC,GAAL,MAAcllC,IAAA,CAAKklC,GAAA,GAAM,CAAX,CAAlB,EAAiC;MAC/BH,MAAA,CAAOtnC,CAAP,IAAYuC,IAAA,CAAKklC,GAAL,IAAY,CAAZ,GAAgB,CAA5B;MACA,EAAEG,KAAF;IAF+B;IAIjCH,GAAA;EAL0B;EAO5B,IAAIllC,IAAA,CAAKklC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAOtnC,CAAP,IAAY,CAAZ;IACA,EAAE4nC,KAAF;EAFmB;EAIrB,KAAK/tC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIikB,MAAhB,EAAwBjkB,CAAA,EAAxB,EAA6B;IAC3B4tC,GAAA,GAAM5tC,CAAA,GAAI2tC,QAAV;IACAD,EAAA,GAAK1tC,CAAA,GAAIwtC,MAAT;IACA,IAAI9kC,IAAA,CAAKklC,GAAA,GAAMD,QAAX,MAAyBjlC,IAAA,CAAKklC,GAAL,CAA7B,EAAwC;MACtCH,MAAA,CAAOC,EAAP,IAAahlC,IAAA,CAAKklC,GAAL,IAAY,CAAZ,GAAgB,CAA7B;MACA,EAAEG,KAAF;IAFsC;IAMxC,IAAIC,GAAA,GAAO,CAAAtlC,IAAA,CAAKklC,GAAL,IAAY,CAAZ,GAAgB,CAAhB,KAAsBllC,IAAA,CAAKklC,GAAA,GAAMD,QAAX,IAAuB,CAAvB,GAA2B,CAA3B,CAAjC;IACA,KAAKxnC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI6d,KAAhB,EAAuB7d,CAAA,EAAvB,EAA4B;MAC1B6nC,GAAA,GACG,CAAAA,GAAA,IAAO,CAAP,KACAtlC,IAAA,CAAKklC,GAAA,GAAM,CAAX,IAAgB,CAAhB,GAAoB,CAApB,CADD,IAECllC,IAAA,CAAKklC,GAAA,GAAMD,QAAN,GAAiB,CAAtB,IAA2B,CAA3B,GAA+B,CAA/B,CAHH;MAIA,IAAIJ,WAAA,CAAYS,GAAZ,CAAJ,EAAsB;QACpBP,MAAA,CAAOC,EAAA,GAAKvnC,CAAZ,IAAiBonC,WAAA,CAAYS,GAAZ,CAAjB;QACA,EAAED,KAAF;MAFoB;MAItBH,GAAA;IAT0B;IAW5B,IAAIllC,IAAA,CAAKklC,GAAA,GAAMD,QAAX,MAAyBjlC,IAAA,CAAKklC,GAAL,CAA7B,EAAwC;MACtCH,MAAA,CAAOC,EAAA,GAAKvnC,CAAZ,IAAiBuC,IAAA,CAAKklC,GAAL,IAAY,CAAZ,GAAgB,CAAjC;MACA,EAAEG,KAAF;IAFsC;IAKxC,IAAIA,KAAA,GAAQT,sBAAZ,EAAoC;MAClC,OAAO,IAAP;IADkC;EA1BT;EA+B7BM,GAAA,GAAMD,QAAA,IAAY1pB,MAAA,GAAS,CAAT,CAAlB;EACAypB,EAAA,GAAK1tC,CAAA,GAAIwtC,MAAT;EACA,IAAI9kC,IAAA,CAAKklC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAOC,EAAP,IAAa,CAAb;IACA,EAAEK,KAAF;EAFmB;EAIrB,KAAK5nC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI6d,KAAhB,EAAuB7d,CAAA,EAAvB,EAA4B;IAC1B,IAAIuC,IAAA,CAAKklC,GAAL,MAAcllC,IAAA,CAAKklC,GAAA,GAAM,CAAX,CAAlB,EAAiC;MAC/BH,MAAA,CAAOC,EAAA,GAAKvnC,CAAZ,IAAiBuC,IAAA,CAAKklC,GAAL,IAAY,CAAZ,GAAgB,CAAjC;MACA,EAAEG,KAAF;IAF+B;IAIjCH,GAAA;EAL0B;EAO5B,IAAIllC,IAAA,CAAKklC,GAAL,MAAc,CAAlB,EAAqB;IACnBH,MAAA,CAAOC,EAAA,GAAKvnC,CAAZ,IAAiB,CAAjB;IACA,EAAE4nC,KAAF;EAFmB;EAIrB,IAAIA,KAAA,GAAQT,sBAAZ,EAAoC;IAClC,OAAO,IAAP;EADkC;EAKpC,MAAMW,KAAA,GAAQ,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAIV,MAAJ,EAAY,CAAC,CAAb,EAAgB,CAAhB,EAAmB,CAACA,MAApB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,CAAf,CAAd;EACA,MAAMW,IAAA,GAAO,IAAIC,MAAJ,EAAb;EAEA,KAAKpuC,CAAA,GAAI,CAAT,EAAY+tC,KAAA,IAAS/tC,CAAA,IAAKikB,MAA1B,EAAkCjkB,CAAA,EAAlC,EAAuC;IACrC,IAAIkD,CAAA,GAAIlD,CAAA,GAAIwtC,MAAZ;IACA,MAAMr7B,GAAA,GAAMjP,CAAA,GAAI8gB,KAAhB;IACA,OAAO9gB,CAAA,GAAIiP,GAAJ,IAAW,CAACs7B,MAAA,CAAOvqC,CAAP,CAAnB,EAA8B;MAC5BA,CAAA;IAD4B;IAG9B,IAAIA,CAAA,KAAMiP,GAAV,EAAe;MACb;IADa;IAGfg8B,IAAA,CAAKl3C,MAAL,CAAYiM,CAAA,GAAIsqC,MAAhB,EAAwBxtC,CAAxB;IAEA,MAAMquC,EAAA,GAAKnrC,CAAX;IACA,IAAIggB,IAAA,GAAOuqB,MAAA,CAAOvqC,CAAP,CAAX;IACA,GAAG;MACD,MAAM04B,IAAA,GAAOqS,KAAA,CAAM/qB,IAAN,CAAb;MACA,GAAG;QACDhgB,CAAA,IAAK04B,IAAL;MADC,CAAH,QAES,CAAC6R,MAAA,CAAOvqC,CAAP,CAFV;MAIA,MAAMorC,EAAA,GAAKb,MAAA,CAAOvqC,CAAP,CAAX;MACA,IAAIorC,EAAA,KAAO,CAAP,IAAYA,EAAA,KAAO,EAAvB,EAA2B;QAEzBprB,IAAA,GAAOorB,EAAP;QAEAb,MAAA,CAAOvqC,CAAP,IAAY,CAAZ;MAJyB,CAA3B,MAKO;QAGLggB,IAAA,GAAOorB,EAAA,GAAO,OAAOprB,IAAR,IAAiB,CAA9B;QAEAuqB,MAAA,CAAOvqC,CAAP,KAAcggB,IAAA,IAAQ,CAAT,GAAeA,IAAA,IAAQ,CAApC;MALK;MAOPirB,IAAA,CAAKj3C,MAAL,CAAYgM,CAAA,GAAIsqC,MAAhB,EAAyBtqC,CAAA,GAAIsqC,MAAL,GAAe,CAAvC;MAEA,IAAI,CAACC,MAAA,CAAOvqC,CAAP,CAAL,EAAgB;QACd,EAAE6qC,KAAF;MADc;IArBf,CAAH,QAwBSM,EAAA,KAAOnrC,CAxBhB;IAyBA,EAAElD,CAAF;EAtCqC;EA0CvC0I,IAAA,GAAO,IAAP;EACA+kC,MAAA,GAAS,IAAT;EAEA,MAAMc,WAAA,GAAc,SAAAA,CAAUpqC,CAAV,EAAa;IAC/BA,CAAA,CAAErN,IAAF;IAEAqN,CAAA,CAAE+R,KAAF,CAAQ,IAAI8N,KAAZ,EAAmB,CAAC,CAAD,GAAKC,MAAxB;IACA9f,CAAA,CAAE8oB,SAAF,CAAY,CAAZ,EAAe,CAAChJ,MAAhB;IACA9f,CAAA,CAAEzM,IAAF,CAAOy2C,IAAP;IACAhqC,CAAA,CAAEymC,SAAF;IACAzmC,CAAA,CAAEpN,OAAF;EAP+B,CAAjC;EAUA,OAAOw3C,WAAP;AArKkC;AAwKpC,MAAMC,gBAAN,CAAuB;EACrB5vC,YAAYolB,KAAZ,EAAmBC,MAAnB,EAA2B;IAEzB,KAAKwqB,YAAL,GAAoB,KAApB;IACA,KAAKC,QAAL,GAAgB,CAAhB;IACA,KAAKC,aAAL,GAAqB,CAArB;IACA,KAAKC,UAAL,GAAkB1hD,qBAAlB;IACA,KAAK2hD,eAAL,GAAuB,CAAvB;IACA,KAAKC,UAAL,GAAkB1hD,0BAAlB;IACA,KAAK2hD,OAAL,GAAe,CAAf;IAEA,KAAKxkB,CAAL,GAAS,CAAT;IACA,KAAKC,CAAL,GAAS,CAAT;IAEA,KAAKwkB,KAAL,GAAa,CAAb;IACA,KAAKC,KAAL,GAAa,CAAb;IAEA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,iBAAL,GAAyBz/C,uBAAA,CAAkBC,IAA3C;IACA,KAAKy/C,QAAL,GAAgB,CAAhB;IAEA,KAAKC,SAAL,GAAiB,SAAjB;IACA,KAAKC,WAAL,GAAmB,SAAnB;IACA,KAAKC,WAAL,GAAmB,KAAnB;IAEA,KAAKC,SAAL,GAAiB,CAAjB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,SAAL,GAAiB,CAAjB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,YAAL,GAAoB,MAApB;IAEA,KAAKC,sBAAL,CAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO/rB,KAAP,EAAcC,MAAd,CAA5B;EAhCyB;EAmC3B0E,MAAA,EAAQ;IACN,MAAMA,KAAA,GAAQxqB,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAd;IACA0nB,KAAA,CAAMqnB,OAAN,GAAgB,KAAKA,OAAL,CAAarsC,KAAb,EAAhB;IACA,OAAOglB,KAAP;EAHM;EAMRsnB,gBAAgB1lB,CAAhB,EAAmBC,CAAnB,EAAsB;IACpB,KAAKD,CAAL,GAASA,CAAT;IACA,KAAKC,CAAL,GAASA,CAAT;EAFoB;EAKtB0lB,iBAAiBl5C,SAAjB,EAA4BuzB,CAA5B,EAA+BC,CAA/B,EAAkC;IAChC,CAACD,CAAD,EAAIC,CAAJ,IAASjoB,UAAA,CAAKU,cAAL,CAAoB,CAACsnB,CAAD,EAAIC,CAAJ,CAApB,EAA4BxzB,SAA5B,CAAT;IACA,KAAKm5C,IAAL,GAAYjwC,IAAA,CAAKC,GAAL,CAAS,KAAKgwC,IAAd,EAAoB5lB,CAApB,CAAZ;IACA,KAAK6lB,IAAL,GAAYlwC,IAAA,CAAKC,GAAL,CAAS,KAAKiwC,IAAd,EAAoB5lB,CAApB,CAAZ;IACA,KAAK6lB,IAAL,GAAYnwC,IAAA,CAAK4D,GAAL,CAAS,KAAKusC,IAAd,EAAoB9lB,CAApB,CAAZ;IACA,KAAK+lB,IAAL,GAAYpwC,IAAA,CAAK4D,GAAL,CAAS,KAAKwsC,IAAd,EAAoB9lB,CAApB,CAAZ;EALgC;EAQlC+lB,iBAAiBv5C,SAAjB,EAA4B0N,IAA5B,EAAkC;IAChC,MAAMjB,EAAA,GAAKlB,UAAA,CAAKU,cAAL,CAAoByB,IAApB,EAA0B1N,SAA1B,CAAX;IACA,MAAM0M,EAAA,GAAKnB,UAAA,CAAKU,cAAL,CAAoByB,IAAA,CAAKf,KAAL,CAAW,CAAX,CAApB,EAAmC3M,SAAnC,CAAX;IACA,KAAKm5C,IAAL,GAAYjwC,IAAA,CAAKC,GAAL,CAAS,KAAKgwC,IAAd,EAAoB1sC,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;IACA,KAAK0sC,IAAL,GAAYlwC,IAAA,CAAKC,GAAL,CAAS,KAAKiwC,IAAd,EAAoB3sC,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;IACA,KAAK2sC,IAAL,GAAYnwC,IAAA,CAAK4D,GAAL,CAAS,KAAKusC,IAAd,EAAoB5sC,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;IACA,KAAK4sC,IAAL,GAAYpwC,IAAA,CAAK4D,GAAL,CAAS,KAAKwsC,IAAd,EAAoB7sC,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,CAAZ;EANgC;EASlC8sC,wBAAwBx5C,SAAxB,EAAmC6L,MAAnC,EAA2C;IACzCN,UAAA,CAAKK,WAAL,CAAiB5L,SAAjB,EAA4B6L,MAA5B;IACA,KAAKstC,IAAL,GAAYjwC,IAAA,CAAKC,GAAL,CAAS,KAAKgwC,IAAd,EAAoBttC,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKwtC,IAAL,GAAYnwC,IAAA,CAAK4D,GAAL,CAAS,KAAKusC,IAAd,EAAoBxtC,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKutC,IAAL,GAAYlwC,IAAA,CAAKC,GAAL,CAAS,KAAKiwC,IAAd,EAAoBvtC,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKytC,IAAL,GAAYpwC,IAAA,CAAK4D,GAAL,CAAS,KAAKwsC,IAAd,EAAoBztC,MAAA,CAAO,CAAP,CAApB,CAAZ;EALyC;EAQ3C4tC,sBAAsBz5C,SAAtB,EAAiCmO,EAAjC,EAAqCC,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiDC,EAAjD,EAAqDC,EAArD,EAAyDC,EAAzD,EAA6DC,EAA7D,EAAiE7C,MAAjE,EAAyE;IACvE,MAAM6tC,GAAA,GAAMnuC,UAAA,CAAK2C,iBAAL,CAAuBC,EAAvB,EAA2BC,EAA3B,EAA+BC,EAA/B,EAAmCC,EAAnC,EAAuCC,EAAvC,EAA2CC,EAA3C,EAA+CC,EAA/C,EAAmDC,EAAnD,CAAZ;IACA,IAAI7C,MAAJ,EAAY;MACVA,MAAA,CAAO,CAAP,IAAY3C,IAAA,CAAKC,GAAL,CAAS0C,MAAA,CAAO,CAAP,CAAT,EAAoB6tC,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACA7tC,MAAA,CAAO,CAAP,IAAY3C,IAAA,CAAK4D,GAAL,CAASjB,MAAA,CAAO,CAAP,CAAT,EAAoB6tC,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACA7tC,MAAA,CAAO,CAAP,IAAY3C,IAAA,CAAKC,GAAL,CAAS0C,MAAA,CAAO,CAAP,CAAT,EAAoB6tC,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACA7tC,MAAA,CAAO,CAAP,IAAY3C,IAAA,CAAK4D,GAAL,CAASjB,MAAA,CAAO,CAAP,CAAT,EAAoB6tC,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACA;IALU;IAOZ,KAAKH,gBAAL,CAAsBv5C,SAAtB,EAAiC05C,GAAjC;EATuE;EAYzEC,mBAAmBC,QAAA,GAAWC,wBAAA,CAAShhD,IAAvC,EAA6CmH,SAAA,GAAY,IAAzD,EAA+D;IAC7D,MAAM05C,GAAA,GAAM,CAAC,KAAKP,IAAN,EAAY,KAAKC,IAAjB,EAAuB,KAAKC,IAA5B,EAAkC,KAAKC,IAAvC,CAAZ;IACA,IAAIM,QAAA,KAAaC,wBAAA,CAAS/gD,MAA1B,EAAkC;MAChC,IAAI,CAACkH,SAAL,EAAgB;QACd,IAAA2F,iBAAA,EAAY,6CAAZ;MADc;MAKhB,MAAMuZ,KAAA,GAAQ3T,UAAA,CAAKyB,6BAAL,CAAmChN,SAAnC,CAAd;MACA,MAAM85C,UAAA,GAAc56B,KAAA,CAAM,CAAN,IAAW,KAAK05B,SAAjB,GAA8B,CAAjD;MACA,MAAMmB,UAAA,GAAc76B,KAAA,CAAM,CAAN,IAAW,KAAK05B,SAAjB,GAA8B,CAAjD;MACAc,GAAA,CAAI,CAAJ,KAAUI,UAAV;MACAJ,GAAA,CAAI,CAAJ,KAAUK,UAAV;MACAL,GAAA,CAAI,CAAJ,KAAUI,UAAV;MACAJ,GAAA,CAAI,CAAJ,KAAUK,UAAV;IAZgC;IAclC,OAAOL,GAAP;EAhB6D;EAmB/DM,mBAAA,EAAqB;IACnB,MAAMrsC,SAAA,GAAYpC,UAAA,CAAKoC,SAAL,CAAe,KAAKqrC,OAApB,EAA6B,KAAKW,kBAAL,EAA7B,CAAlB;IACA,KAAKZ,sBAAL,CAA4BprC,SAAA,IAAa,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAzC;EAFmB;EAKrBssC,YAAA,EAAc;IACZ,OAAO,KAAKd,IAAL,KAAce,QAArB;EADY;EAIdnB,uBAAuBW,GAAvB,EAA4B;IAC1B,KAAKV,OAAL,GAAeU,GAAf;IACA,KAAKP,IAAL,GAAYe,QAAZ;IACA,KAAKd,IAAL,GAAYc,QAAZ;IACA,KAAKb,IAAL,GAAY,CAAZ;IACA,KAAKC,IAAL,GAAY,CAAZ;EAL0B;EAQ5Ba,0BAA0BP,QAAA,GAAWC,wBAAA,CAAShhD,IAA9C,EAAoDmH,SAAA,GAAY,IAAhE,EAAsE;IACpE,OAAOuL,UAAA,CAAKoC,SAAL,CACL,KAAKqrC,OADA,EAEL,KAAKW,kBAAL,CAAwBC,QAAxB,EAAkC55C,SAAlC,CAFK,CAAP;EADoE;AAxHjD;AAgIvB,SAASo6C,kBAATA,CAA4BhP,GAA5B,EAAiCiL,OAAjC,EAA0C;EACxC,IAAI,OAAOgE,SAAP,KAAqB,WAArB,IAAoChE,OAAA,YAAmBgE,SAA3D,EAAsE;IACpEjP,GAAA,CAAIkP,YAAJ,CAAiBjE,OAAjB,EAA0B,CAA1B,EAA6B,CAA7B;IACA;EAFoE;EAgBtE,MAAMppB,MAAA,GAASopB,OAAA,CAAQppB,MAAvB;IACED,KAAA,GAAQqpB,OAAA,CAAQrpB,KADlB;EAEA,MAAMutB,kBAAA,GAAqBttB,MAAA,GAASqlB,iBAApC;EACA,MAAMkI,UAAA,GAAc,CAAAvtB,MAAA,GAASstB,kBAAT,IAA+BjI,iBAAnD;EACA,MAAMmI,WAAA,GAAcF,kBAAA,KAAuB,CAAvB,GAA2BC,UAA3B,GAAwCA,UAAA,GAAa,CAAzE;EAEA,MAAME,YAAA,GAAetP,GAAA,CAAIuP,eAAJ,CAAoB3tB,KAApB,EAA2BslB,iBAA3B,CAArB;EACA,IAAIsI,MAAA,GAAS,CAAb;IACEC,OADF;EAEA,MAAMrmC,GAAA,GAAM6hC,OAAA,CAAQ3kC,IAApB;EACA,MAAMopC,IAAA,GAAOJ,YAAA,CAAahpC,IAA1B;EACA,IAAI1I,CAAJ,EAAOmG,CAAP,EAAU4rC,eAAV,EAA2BC,gBAA3B;EAIA,IAAI3E,OAAA,CAAQ4E,IAAR,KAAiB1hD,eAAA,CAAUC,cAA/B,EAA+C;IAE7C,MAAM0hD,SAAA,GAAY1mC,GAAA,CAAIjE,UAAtB;IACA,MAAM4qC,MAAA,GAAS,IAAI7wC,WAAJ,CAAgBwwC,IAAA,CAAKvwC,MAArB,EAA6B,CAA7B,EAAgCuwC,IAAA,CAAKvqC,UAAL,IAAmB,CAAnD,CAAf;IACA,MAAM6qC,gBAAA,GAAmBD,MAAA,CAAO10C,MAAhC;IACA,MAAM40C,WAAA,GAAeruB,KAAA,GAAQ,CAAT,IAAe,CAAnC;IACA,MAAMsuB,KAAA,GAAQ,UAAd;IACA,MAAMC,KAAA,GAAQ7wC,iBAAA,CAAYP,cAAZ,GAA6B,UAA7B,GAA0C,UAAxD;IAEA,KAAKnB,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIyxC,WAAhB,EAA6BzxC,CAAA,EAA7B,EAAkC;MAChC+xC,eAAA,GAAkB/xC,CAAA,GAAIwxC,UAAJ,GAAiBlI,iBAAjB,GAAqCiI,kBAAvD;MACAM,OAAA,GAAU,CAAV;MACA,KAAK1rC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAI4rC,eAAhB,EAAiC5rC,CAAA,EAAjC,EAAsC;QACpC,MAAMqsC,OAAA,GAAUN,SAAA,GAAYN,MAA5B;QACA,IAAI5V,CAAA,GAAI,CAAR;QACA,MAAMyW,IAAA,GAAOD,OAAA,GAAUH,WAAV,GAAwBruB,KAAxB,GAAgCwuB,OAAA,GAAU,CAAV,GAAc,CAA3D;QACA,MAAME,YAAA,GAAeD,IAAA,GAAO,CAAC,CAA7B;QACA,IAAI3E,IAAA,GAAO,CAAX;QACA,IAAI6E,OAAA,GAAU,CAAd;QACA,OAAO3W,CAAA,GAAI0W,YAAX,EAAyB1W,CAAA,IAAK,CAA9B,EAAiC;UAC/B2W,OAAA,GAAUnnC,GAAA,CAAIomC,MAAA,EAAJ,CAAV;UACAO,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,GAAV,GAAgBL,KAAhB,GAAwBC,KAA5C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,EAAV,GAAeL,KAAf,GAAuBC,KAA3C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,EAAV,GAAeL,KAAf,GAAuBC,KAA3C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,EAAV,GAAeL,KAAf,GAAuBC,KAA3C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;UACAJ,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU,CAAV,GAAcL,KAAd,GAAsBC,KAA1C;QAT+B;QAWjC,OAAOvW,CAAA,GAAIyW,IAAX,EAAiBzW,CAAA,EAAjB,EAAsB;UACpB,IAAI8R,IAAA,KAAS,CAAb,EAAgB;YACd6E,OAAA,GAAUnnC,GAAA,CAAIomC,MAAA,EAAJ,CAAV;YACA9D,IAAA,GAAO,GAAP;UAFc;UAKhBqE,MAAA,CAAON,OAAA,EAAP,IAAoBc,OAAA,GAAU7E,IAAV,GAAiBwE,KAAjB,GAAyBC,KAA7C;UACAzE,IAAA,KAAS,CAAT;QAPoB;MAlBc;MA6BtC,OAAO+D,OAAA,GAAUO,gBAAjB,EAAmC;QACjCD,MAAA,CAAON,OAAA,EAAP,IAAoB,CAApB;MADiC;MAInCzP,GAAA,CAAIkP,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkC1xC,CAAA,GAAIspC,iBAAtC;IApCgC;EATW,CAA/C,MA+CO,IAAI+D,OAAA,CAAQ4E,IAAR,KAAiB1hD,eAAA,CAAUG,UAA/B,EAA2C;IAEhDyV,CAAA,GAAI,CAAJ;IACA6rC,gBAAA,GAAmBhuB,KAAA,GAAQslB,iBAAR,GAA4B,CAA/C;IACA,KAAKtpC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIwxC,UAAhB,EAA4BxxC,CAAA,EAA5B,EAAiC;MAC/B8xC,IAAA,CAAKh6B,GAAL,CAAStM,GAAA,CAAInL,QAAJ,CAAauxC,MAAb,EAAqBA,MAAA,GAASI,gBAA9B,CAAT;MACAJ,MAAA,IAAUI,gBAAV;MAEA5P,GAAA,CAAIkP,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkCvrC,CAAlC;MACAA,CAAA,IAAKmjC,iBAAL;IAL+B;IAOjC,IAAItpC,CAAA,GAAIyxC,WAAR,EAAqB;MACnBO,gBAAA,GAAmBhuB,KAAA,GAAQutB,kBAAR,GAA6B,CAAhD;MACAO,IAAA,CAAKh6B,GAAL,CAAStM,GAAA,CAAInL,QAAJ,CAAauxC,MAAb,EAAqBA,MAAA,GAASI,gBAA9B,CAAT;MAEA5P,GAAA,CAAIkP,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkCvrC,CAAlC;IAJmB;EAX2B,CAA3C,MAiBA,IAAIknC,OAAA,CAAQ4E,IAAR,KAAiB1hD,eAAA,CAAUE,SAA/B,EAA0C;IAE/CshD,eAAA,GAAkBzI,iBAAlB;IACA0I,gBAAA,GAAmBhuB,KAAA,GAAQ+tB,eAA3B;IACA,KAAK/xC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIyxC,WAAhB,EAA6BzxC,CAAA,EAA7B,EAAkC;MAChC,IAAIA,CAAA,IAAKwxC,UAAT,EAAqB;QACnBO,eAAA,GAAkBR,kBAAlB;QACAS,gBAAA,GAAmBhuB,KAAA,GAAQ+tB,eAA3B;MAFmB;MAKrBF,OAAA,GAAU,CAAV;MACA,KAAK1rC,CAAA,GAAI6rC,gBAAT,EAA2B7rC,CAAA,EAA3B,GAAkC;QAChC2rC,IAAA,CAAKD,OAAA,EAAL,IAAkBrmC,GAAA,CAAIomC,MAAA,EAAJ,CAAlB;QACAE,IAAA,CAAKD,OAAA,EAAL,IAAkBrmC,GAAA,CAAIomC,MAAA,EAAJ,CAAlB;QACAE,IAAA,CAAKD,OAAA,EAAL,IAAkBrmC,GAAA,CAAIomC,MAAA,EAAJ,CAAlB;QACAE,IAAA,CAAKD,OAAA,EAAL,IAAkB,GAAlB;MAJgC;MAOlCzP,GAAA,CAAIkP,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkC1xC,CAAA,GAAIspC,iBAAtC;IAdgC;EAJa,CAA1C,MAoBA;IACL,MAAM,IAAI1sC,KAAJ,CAAW,mBAAkBywC,OAAA,CAAQ4E,IAA3B,EAAV,CAAN;EADK;AApHiC;AAyH1C,SAASW,kBAATA,CAA4BxQ,GAA5B,EAAiCiL,OAAjC,EAA0C;EACxC,IAAIA,OAAA,CAAQtpB,MAAZ,EAAoB;IAElBqe,GAAA,CAAI4K,SAAJ,CAAcK,OAAA,CAAQtpB,MAAtB,EAA8B,CAA9B,EAAiC,CAAjC;IACA;EAHkB;EAOpB,MAAME,MAAA,GAASopB,OAAA,CAAQppB,MAAvB;IACED,KAAA,GAAQqpB,OAAA,CAAQrpB,KADlB;EAEA,MAAMutB,kBAAA,GAAqBttB,MAAA,GAASqlB,iBAApC;EACA,MAAMkI,UAAA,GAAc,CAAAvtB,MAAA,GAASstB,kBAAT,IAA+BjI,iBAAnD;EACA,MAAMmI,WAAA,GAAcF,kBAAA,KAAuB,CAAvB,GAA2BC,UAA3B,GAAwCA,UAAA,GAAa,CAAzE;EAEA,MAAME,YAAA,GAAetP,GAAA,CAAIuP,eAAJ,CAAoB3tB,KAApB,EAA2BslB,iBAA3B,CAArB;EACA,IAAIsI,MAAA,GAAS,CAAb;EACA,MAAMpmC,GAAA,GAAM6hC,OAAA,CAAQ3kC,IAApB;EACA,MAAMopC,IAAA,GAAOJ,YAAA,CAAahpC,IAA1B;EAEA,KAAK,IAAI1I,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIyxC,WAApB,EAAiCzxC,CAAA,EAAjC,EAAsC;IACpC,MAAM+xC,eAAA,GACJ/xC,CAAA,GAAIwxC,UAAJ,GAAiBlI,iBAAjB,GAAqCiI,kBADvC;IAMA,CAAC;MAAEK;IAAF,IAAa,IAAAiB,uCAAA,EAA2B;MACvCrnC,GADuC;MAEvComC,MAFuC;MAGvCE,IAHuC;MAIvC9tB,KAJuC;MAKvCC,MAAA,EAAQ8tB,eAL+B;MAMvCe,aAAA,EAAe;IANwB,CAA3B,CAAd;IASA1Q,GAAA,CAAIkP,YAAJ,CAAiBI,YAAjB,EAA+B,CAA/B,EAAkC1xC,CAAA,GAAIspC,iBAAtC;EAhBoC;AAnBE;AAuC1C,SAASyJ,YAATA,CAAsBC,SAAtB,EAAiCxJ,OAAjC,EAA0C;EACxC,MAAMyJ,UAAA,GAAa,CACjB,aADiB,EAEjB,WAFiB,EAGjB,UAHiB,EAIjB,aAJiB,EAKjB,WALiB,EAMjB,SANiB,EAOjB,UAPiB,EAQjB,YARiB,EASjB,0BATiB,EAUjB,MAViB,EAWjB,QAXiB,CAAnB;EAaA,WAAWC,QAAX,IAAuBD,UAAvB,EAAmC;IACjC,IAAID,SAAA,CAAUE,QAAV,MAAwBxzC,SAA5B,EAAuC;MACrC8pC,OAAA,CAAQ0J,QAAR,IAAoBF,SAAA,CAAUE,QAAV,CAApB;IADqC;EADN;EAKnC,IAAIF,SAAA,CAAUG,WAAV,KAA0BzzC,SAA9B,EAAyC;IACvC8pC,OAAA,CAAQ2J,WAAR,CAAoBH,SAAA,CAAUI,WAAV,EAApB;IACA5J,OAAA,CAAQ6J,cAAR,GAAyBL,SAAA,CAAUK,cAAnC;EAFuC;AAnBD;AAyB1C,SAASC,iBAATA,CAA2BlR,GAA3B,EAAgC;EAC9BA,GAAA,CAAImR,WAAJ,GAAkBnR,GAAA,CAAIoR,SAAJ,GAAgB,SAAlC;EACApR,GAAA,CAAIqR,QAAJ,GAAe,SAAf;EACArR,GAAA,CAAIsR,WAAJ,GAAkB,CAAlB;EACAtR,GAAA,CAAIwN,SAAJ,GAAgB,CAAhB;EACAxN,GAAA,CAAIuR,OAAJ,GAAc,MAAd;EACAvR,GAAA,CAAIwR,QAAJ,GAAe,OAAf;EACAxR,GAAA,CAAIyR,UAAJ,GAAiB,EAAjB;EACAzR,GAAA,CAAI0R,wBAAJ,GAA+B,aAA/B;EACA1R,GAAA,CAAI5e,IAAJ,GAAW,iBAAX;EACA,IAAI4e,GAAA,CAAI+Q,WAAJ,KAAoBzzC,SAAxB,EAAmC;IACjC0iC,GAAA,CAAI+Q,WAAJ,CAAgB,EAAhB;IACA/Q,GAAA,CAAIiR,cAAJ,GAAqB,CAArB;EAFiC;EAInC,IAEE,CAAChpC,iBAFH,EAGE;IACA+3B,GAAA,CAAI9H,MAAJ,GAAa,MAAb;EADA;AAjB4B;AAsBhC,SAASyZ,oBAATA,CAA8Bt0C,KAA9B,EAAqCu0C,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiD;EAC/C,MAAMz2C,MAAA,GAASgC,KAAA,CAAMhC,MAArB;EACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMm0C,KAAA,GAAQ10C,KAAA,CAAMO,CAAN,CAAd;IACA,IAAIm0C,KAAA,KAAU,CAAd,EAAiB;MACf10C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAeg0C,EAAf;MACAv0C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAei0C,EAAf;MACAx0C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAek0C,EAAf;IAHe,CAAjB,MAIO,IAAIC,KAAA,GAAQ,GAAZ,EAAiB;MACtB,MAAMC,MAAA,GAAS,MAAMD,KAArB;MACA10C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAgBP,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAem0C,KAAf,GAAuBH,EAAA,GAAKI,MAA7B,IAAwC,CAAvD;MACA30C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAgBP,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAem0C,KAAf,GAAuBF,EAAA,GAAKG,MAA7B,IAAwC,CAAvD;MACA30C,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAgBP,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAem0C,KAAf,GAAuBD,EAAA,GAAKE,MAA7B,IAAwC,CAAvD;IAJsB;EANU;AAFW;AAiBjD,SAASC,iBAATA,CAA2BC,QAA3B,EAAqCC,SAArC,EAAgDC,WAAhD,EAA6D;EAC3D,MAAM/2C,MAAA,GAAS62C,QAAA,CAAS72C,MAAxB;EACA,MAAMyY,KAAA,GAAQ,IAAI,GAAlB;EACA,KAAK,IAAIlW,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMm0C,KAAA,GAAQK,WAAA,GAAcA,WAAA,CAAYF,QAAA,CAASt0C,CAAT,CAAZ,CAAd,GAAyCs0C,QAAA,CAASt0C,CAAT,CAAvD;IACAu0C,SAAA,CAAUv0C,CAAV,IAAgBu0C,SAAA,CAAUv0C,CAAV,IAAem0C,KAAf,GAAuBj+B,KAAxB,GAAiC,CAAhD;EAFkC;AAHuB;AAS7D,SAASu+B,sBAATA,CAAgCH,QAAhC,EAA0CC,SAA1C,EAAqDC,WAArD,EAAkE;EAChE,MAAM/2C,MAAA,GAAS62C,QAAA,CAAS72C,MAAxB;EACA,KAAK,IAAIuC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMwqB,CAAA,GACJ8pB,QAAA,CAASt0C,CAAA,GAAI,CAAb,IAAkB,EAAlB,GACAs0C,QAAA,CAASt0C,CAAA,GAAI,CAAb,IAAkB,GADlB,GAEAs0C,QAAA,CAASt0C,CAAA,GAAI,CAAb,IAAkB,EAHpB;IAIAu0C,SAAA,CAAUv0C,CAAV,IAAew0C,WAAA,GACVD,SAAA,CAAUv0C,CAAV,IAAew0C,WAAA,CAAYhqB,CAAA,IAAK,CAAjB,CAAhB,IAAwC,CAD7B,GAEV+pB,SAAA,CAAUv0C,CAAV,IAAewqB,CAAhB,IAAsB,EAF1B;EALkC;AAF4B;AAalE,SAASkqB,mBAATA,CACEC,OADF,EAEEC,QAFF,EAGE5wB,KAHF,EAIEC,MAJF,EAKE4wB,OALF,EAMEC,QANF,EAOEN,WAPF,EAQEO,YARF,EASEC,YATF,EAUEC,WAVF,EAWEC,WAXF,EAYE;EACA,MAAMC,WAAA,GAAc,CAAC,CAACL,QAAtB;EACA,MAAMd,EAAA,GAAKmB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EACA,MAAMb,EAAA,GAAKkB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EACA,MAAMZ,EAAA,GAAKiB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EAEA,IAAIM,SAAJ;EACA,IAAIP,OAAA,KAAY,YAAhB,EAA8B;IAC5BO,SAAA,GAAYX,sBAAZ;EAD4B,CAA9B,MAEO;IACLW,SAAA,GAAYf,iBAAZ;EADK;EAKP,MAAMgB,iBAAA,GAAoB,OAA1B;EACA,MAAMC,SAAA,GAAYp1C,IAAA,CAAKC,GAAL,CAAS8jB,MAAT,EAAiB/jB,IAAA,CAAKq1C,IAAL,CAAUF,iBAAA,GAAoBrxB,KAA9B,CAAjB,CAAlB;EACA,KAAK,IAAIwxB,GAAA,GAAM,CAAV,EAAaA,GAAA,GAAMvxB,MAAxB,EAAgCuxB,GAAA,IAAOF,SAAvC,EAAkD;IAChD,MAAMG,WAAA,GAAcv1C,IAAA,CAAKC,GAAL,CAASm1C,SAAT,EAAoBrxB,MAAA,GAASuxB,GAA7B,CAApB;IACA,MAAMlB,QAAA,GAAWK,OAAA,CAAQvN,YAAR,CACf2N,YAAA,GAAeE,WADA,EAEfO,GAAA,IAAOR,YAAA,GAAeE,WAAf,CAFQ,EAGflxB,KAHe,EAIfyxB,WAJe,CAAjB;IAMA,MAAMlB,SAAA,GAAYK,QAAA,CAASxN,YAAT,CAChB2N,YADgB,EAEhBS,GAAA,GAAMR,YAFU,EAGhBhxB,KAHgB,EAIhByxB,WAJgB,CAAlB;IAOA,IAAIN,WAAJ,EAAiB;MACfpB,oBAAA,CAAqBO,QAAA,CAAS5rC,IAA9B,EAAoCsrC,EAApC,EAAwCC,EAAxC,EAA4CC,EAA5C;IADe;IAGjBkB,SAAA,CAAUd,QAAA,CAAS5rC,IAAnB,EAAyB6rC,SAAA,CAAU7rC,IAAnC,EAAyC8rC,WAAzC;IAEAI,QAAA,CAAStD,YAAT,CAAsBiD,SAAtB,EAAiCQ,YAAjC,EAA+CS,GAAA,GAAMR,YAArD;EApBgD;AAhBlD;AAwCF,SAASU,YAATA,CAAsBtT,GAAtB,EAA2BuT,KAA3B,EAAkCf,QAAlC,EAA4CgB,QAA5C,EAAsD;EACpD,MAAMb,YAAA,GAAea,QAAA,CAAS,CAAT,CAArB;EACA,MAAMZ,YAAA,GAAeY,QAAA,CAAS,CAAT,CAArB;EACA,MAAMC,UAAA,GAAaD,QAAA,CAAS,CAAT,IAAcb,YAAjC;EACA,MAAMe,WAAA,GAAcF,QAAA,CAAS,CAAT,IAAcZ,YAAlC;EACA,IAAIa,UAAA,KAAe,CAAf,IAAoBC,WAAA,KAAgB,CAAxC,EAA2C;IACzC;EADyC;EAG3CpB,mBAAA,CACEiB,KAAA,CAAM5S,OADR,EAEE6R,QAFF,EAGEiB,UAHF,EAIEC,WAJF,EAKEH,KAAA,CAAMd,OALR,EAMEc,KAAA,CAAMb,QANR,EAOEa,KAAA,CAAMnB,WAPR,EAQEO,YARF,EASEC,YATF,EAUEW,KAAA,CAAMv/B,OAVR,EAWEu/B,KAAA,CAAMt/B,OAXR;EAaA+rB,GAAA,CAAItrC,IAAJ;EACAsrC,GAAA,CAAIsR,WAAJ,GAAkB,CAAlB;EACAtR,GAAA,CAAI0R,wBAAJ,GAA+B,aAA/B;EACA1R,GAAA,CAAI6H,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;EACA7H,GAAA,CAAI4K,SAAJ,CAAc4H,QAAA,CAAS5vB,MAAvB,EAA+B,CAA/B,EAAkC,CAAlC;EACAod,GAAA,CAAIrrC,OAAJ;AA1BoD;AA6BtD,SAASg/C,wBAATA,CAAkC/+C,SAAlC,EAA6Cg/C,WAA7C,EAA0D;EACxD,MAAM9/B,KAAA,GAAQ3T,UAAA,CAAKyB,6BAAL,CAAmChN,SAAnC,CAAd;EAGAkf,KAAA,CAAM,CAAN,IAAWhW,IAAA,CAAK+1C,MAAL,CAAY//B,KAAA,CAAM,CAAN,CAAZ,CAAX;EACAA,KAAA,CAAM,CAAN,IAAWhW,IAAA,CAAK+1C,MAAL,CAAY//B,KAAA,CAAM,CAAN,CAAZ,CAAX;EACA,MAAMggC,WAAA,GAAch2C,IAAA,CAAK+1C,MAAL,CACjB,CAAA3oC,UAAA,CAAW6oC,gBAAX,IAA+B,CAA/B,IAAoCphB,4BAAA,CAAcC,gBADjC,CAApB;EAGA,IAAIghB,WAAA,KAAgBt2C,SAApB,EAA+B;IAE7B,OAAOs2C,WAAP;EAF6B,CAA/B,MAGO,IAAI9/B,KAAA,CAAM,CAAN,KAAYggC,WAAZ,IAA2BhgC,KAAA,CAAM,CAAN,KAAYggC,WAA3C,EAAwD;IAE7D,OAAO,IAAP;EAF6D;EAK/D,OAAO,KAAP;AAjBwD;AAoB1D,MAAME,eAAA,GAAkB,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAAxB;AACA,MAAMC,gBAAA,GAAmB,CAAC,OAAD,EAAU,OAAV,EAAmB,OAAnB,CAAzB;AACA,MAAMC,WAAA,GAAc,EAApB;AACA,MAAMC,OAAA,GAAU,EAAhB;AAEA,MAAMjwB,cAAN,CAAqB;EACnB1nB,YACE43C,SADF,EAEE/gC,UAFF,EAGEC,IAHF,EAIE1H,aAJF,EAKEC,aALF,EAME;IAAEwL,qBAAF;IAAyBg9B,kBAAA,GAAqB;EAA9C,CANF,EAOEl/B,mBAPF,EAQEC,UARF,EASE;IACA,KAAK4qB,GAAL,GAAWoU,SAAX;IACA,KAAKhO,OAAL,GAAe,IAAIgG,gBAAJ,CACb,KAAKpM,GAAL,CAASpd,MAAT,CAAgBhB,KADH,EAEb,KAAKoe,GAAL,CAASpd,MAAT,CAAgBf,MAFH,CAAf;IAIA,KAAKyyB,UAAL,GAAkB,EAAlB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKC,GAAL,GAAW,IAAX;IACA,KAAKC,KAAL,GAAa,IAAb;IACA,KAAKrhC,UAAL,GAAkBA,UAAlB;IACA,KAAKC,IAAL,GAAYA,IAAZ;IACA,KAAK1H,aAAL,GAAqBA,aAArB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAK8oC,UAAL,GAAkB,EAAlB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IAGA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKC,kBAAL,GAA0B,EAA1B;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,UAAL,GAAkB,EAAlB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKC,SAAL,GAAiB,IAAjB;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKC,cAAL,GAAsB,IAAtB;IACA,KAAKf,kBAAL,GAA0BA,kBAAA,IAAsB,EAAhD;IACA,KAAKh9B,qBAAL,GAA6BA,qBAA7B;IACA,KAAKg+B,cAAL,GAAsB,IAAI/L,cAAJ,CAAmB,KAAK19B,aAAxB,CAAtB;IACA,KAAK0pC,cAAL,GAAsB,IAAI3uC,GAAJ,EAAtB;IACA,KAAKwO,mBAAL,GAA2BA,mBAA3B;IACA,KAAKogC,aAAL,GAAqB,CAArB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKrgC,UAAL,GAAkBA,UAAlB;IAEA,KAAKsgC,uBAAL,GAA+B,CAAC,CAAC,CAAF,EAAK,CAAL,CAA/B;IACA,KAAKC,0BAAL,GAAkC,IAAlC;IACA,KAAKC,iBAAL,GAAyB,IAAIjvC,GAAJ,EAAzB;EAvCA;EA0CFkvC,UAAUvvC,IAAV,EAAgBwvC,QAAA,GAAW,IAA3B,EAAiC;IAC/B,IAAI,OAAOxvC,IAAP,KAAgB,QAApB,EAA8B;MAC5B,OAAOA,IAAA,CAAKpL,UAAL,CAAgB,IAAhB,IACH,KAAKmY,UAAL,CAAgBtM,GAAhB,CAAoBT,IAApB,CADG,GAEH,KAAKgN,IAAL,CAAUvM,GAAV,CAAcT,IAAd,CAFJ;IAD4B;IAK9B,OAAOwvC,QAAP;EAN+B;EASjC3xB,aAAa;IACXvvB,SADW;IAEXmgB,QAFW;IAGXqC,YAAA,GAAe,KAHJ;IAIXnC,UAAA,GAAa;EAJF,CAAb,EAKG;IAMD,MAAM2M,KAAA,GAAQ,KAAKoe,GAAL,CAASpd,MAAT,CAAgBhB,KAA9B;IACA,MAAMC,MAAA,GAAS,KAAKme,GAAL,CAASpd,MAAT,CAAgBf,MAA/B;IAEA,MAAMk0B,cAAA,GAAiB,KAAK/V,GAAL,CAASoR,SAAhC;IACA,KAAKpR,GAAL,CAASoR,SAAT,GAAqBn8B,UAAA,IAAc,SAAnC;IACA,KAAK+qB,GAAL,CAASgW,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwBp0B,KAAxB,EAA+BC,MAA/B;IACA,KAAKme,GAAL,CAASoR,SAAT,GAAqB2E,cAArB;IAEA,IAAI3+B,YAAJ,EAAkB;MAChB,MAAM6+B,iBAAA,GAAoB,KAAKZ,cAAL,CAAoB9L,SAApB,CACxB,aADwB,EAExB3nB,KAFwB,EAGxBC,MAHwB,CAA1B;MAKA,KAAKq0B,YAAL,GAAoB,KAAKlW,GAAzB;MACA,KAAKiW,iBAAL,GAAyBA,iBAAA,CAAkBrzB,MAA3C;MACA,KAAKod,GAAL,GAAWiW,iBAAA,CAAkBtV,OAA7B;MACA,KAAKX,GAAL,CAAStrC,IAAT;MAGA,KAAKsrC,GAAL,CAASprC,SAAT,CAAmB,GAAG,IAAAmrC,kCAAA,EAAoB,KAAKmW,YAAzB,CAAtB;IAZgB;IAelB,KAAKlW,GAAL,CAAStrC,IAAT;IACAw8C,iBAAA,CAAkB,KAAKlR,GAAvB;IACA,IAAIprC,SAAJ,EAAe;MACb,KAAKorC,GAAL,CAASprC,SAAT,CAAmB,GAAGA,SAAtB;MACA,KAAK4gD,YAAL,GAAoB5gD,SAAA,CAAU,CAAV,CAApB;MACA,KAAK6gD,YAAL,GAAoB7gD,SAAA,CAAU,CAAV,CAApB;IAHa;IAKf,KAAKorC,GAAL,CAASprC,SAAT,CAAmB,GAAGmgB,QAAA,CAASngB,SAA/B;IACA,KAAK2gD,aAAL,GAAqBxgC,QAAA,CAASjB,KAA9B;IAEA,KAAK+gC,aAAL,GAAqB,IAAA9U,kCAAA,EAAoB,KAAKC,GAAzB,CAArB;EAvCC;EA0CHzb,oBACExO,YADF,EAEEogC,iBAFF,EAGEC,gBAHF,EAIEvyB,OAJF,EAKE;IACA,MAAM5N,SAAA,GAAYF,YAAA,CAAaE,SAA/B;IACA,MAAMD,OAAA,GAAUD,YAAA,CAAaC,OAA7B;IACA,IAAIpY,CAAA,GAAIu4C,iBAAA,IAAqB,CAA7B;IACA,MAAME,YAAA,GAAepgC,SAAA,CAAU5a,MAA/B;IAGA,IAAIg7C,YAAA,KAAiBz4C,CAArB,EAAwB;MACtB,OAAOA,CAAP;IADsB;IAIxB,MAAM04C,eAAA,GACJD,YAAA,GAAez4C,CAAf,GAAmBopC,eAAnB,IACA,OAAOoP,gBAAP,KAA4B,UAF9B;IAGA,MAAMG,OAAA,GAAUD,eAAA,GAAkB7wC,IAAA,CAAKu4B,GAAL,KAAa+I,cAA/B,GAAgD,CAAhE;IACA,IAAI8E,KAAA,GAAQ,CAAZ;IAEA,MAAMx4B,UAAA,GAAa,KAAKA,UAAxB;IACA,MAAMC,IAAA,GAAO,KAAKA,IAAlB;IACA,IAAIkjC,IAAJ;IAEA,OAAO,IAAP,EAAa;MACX,IAAI3yB,OAAA,KAAYvmB,SAAZ,IAAyBM,CAAA,KAAMimB,OAAA,CAAQE,cAA3C,EAA2D;QACzDF,OAAA,CAAQ4yB,OAAR,CAAgB74C,CAAhB,EAAmBw4C,gBAAnB;QACA,OAAOx4C,CAAP;MAFyD;MAK3D44C,IAAA,GAAOxgC,OAAA,CAAQpY,CAAR,CAAP;MAEA,IAAI44C,IAAA,KAASxiD,SAAA,CAAIC,UAAjB,EAA6B;QAE3B,KAAKuiD,IAAL,EAAW94C,KAAX,CAAiB,IAAjB,EAAuBuY,SAAA,CAAUrY,CAAV,CAAvB;MAF2B,CAA7B,MAGO;QACL,WAAW84C,QAAX,IAAuBzgC,SAAA,CAAUrY,CAAV,CAAvB,EAAqC;UACnC,MAAM+4C,QAAA,GAAWD,QAAA,CAASx7C,UAAT,CAAoB,IAApB,IAA4BmY,UAA5B,GAAyCC,IAA1D;UAIA,IAAI,CAACqjC,QAAA,CAASt6B,GAAT,CAAaq6B,QAAb,CAAL,EAA6B;YAC3BC,QAAA,CAAS5vC,GAAT,CAAa2vC,QAAb,EAAuBN,gBAAvB;YACA,OAAOx4C,CAAP;UAF2B;QALM;MADhC;MAaPA,CAAA;MAGA,IAAIA,CAAA,KAAMy4C,YAAV,EAAwB;QACtB,OAAOz4C,CAAP;MADsB;MAMxB,IAAI04C,eAAA,IAAmB,EAAEzK,KAAF,GAAU7E,eAAjC,EAAkD;QAChD,IAAIvhC,IAAA,CAAKu4B,GAAL,KAAauY,OAAjB,EAA0B;UACxBH,gBAAA;UACA,OAAOx4C,CAAP;QAFwB;QAI1BiuC,KAAA,GAAQ,CAAR;MALgD;IAjCvC;EArBb;EAmEF,CAAA+K,oBAAA,EAAuB;IAErB,OAAO,KAAKtC,UAAL,CAAgBj5C,MAAhB,IAA0B,KAAKw7C,WAAtC,EAAmD;MACjD,KAAKliD,OAAL;IADiD;IAInD,KAAKqrC,GAAL,CAASrrC,OAAT;IAEA,IAAI,KAAKshD,iBAAT,EAA4B;MAC1B,KAAKjW,GAAL,GAAW,KAAKkW,YAAhB;MACA,KAAKlW,GAAL,CAAStrC,IAAT;MACA,KAAKsrC,GAAL,CAAS6H,YAAT,CAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC;MACA,KAAK7H,GAAL,CAAS4K,SAAT,CAAmB,KAAKqL,iBAAxB,EAA2C,CAA3C,EAA8C,CAA9C;MACA,KAAKjW,GAAL,CAASrrC,OAAT;MACA,KAAKshD,iBAAL,GAAyB,IAAzB;IAN0B;EARP;EAkBvB7xB,WAAA,EAAa;IACX,KAAK,CAAAwyB,mBAAL;IAEA,KAAKvB,cAAL,CAAoB/7B,KAApB;IACA,KAAKg8B,cAAL,CAAoBh8B,KAApB;IAEA,WAAWyd,KAAX,IAAoB,KAAK6e,iBAAL,CAAuB18B,MAAvB,EAApB,EAAqD;MACnD,WAAW0J,MAAX,IAAqBmU,KAAA,CAAM7d,MAAN,EAArB,EAAqC;QACnC,IACE,OAAO49B,iBAAP,KAA6B,WAA7B,IACAl0B,MAAA,YAAkBk0B,iBAFpB,EAGE;UACAl0B,MAAA,CAAOhB,KAAP,GAAegB,MAAA,CAAOf,MAAP,GAAgB,CAA/B;QADA;MAJiC;MAQrCkV,KAAA,CAAMzd,KAAN;IATmD;IAWrD,KAAKs8B,iBAAL,CAAuBt8B,KAAvB;IACA,KAAK,CAAAy9B,UAAL;EAlBW;EAqBb,CAAAA,WAAA,EAAc;IACZ,IAAI,KAAK3hC,UAAT,EAAqB;MACnB,MAAM4hC,WAAA,GAAc,KAAKnrC,aAAL,CAAmBwsB,YAAnB,CAClB,KAAKjjB,UAAL,CAAgB6hC,UADE,EAElB,KAAK7hC,UAAL,CAAgBH,UAFE,CAApB;MAIA,IAAI+hC,WAAA,KAAgB,MAApB,EAA4B;QAC1B,MAAME,WAAA,GAAc,KAAKlX,GAAL,CAAS9H,MAA7B;QACA,KAAK8H,GAAL,CAAS9H,MAAT,GAAkB8e,WAAlB;QACA,KAAKhX,GAAL,CAAS4K,SAAT,CAAmB,KAAK5K,GAAL,CAASpd,MAA5B,EAAoC,CAApC,EAAuC,CAAvC;QACA,KAAKod,GAAL,CAAS9H,MAAT,GAAkBgf,WAAlB;MAJ0B;IALT;EADT;EAedC,YAAYC,GAAZ,EAAiBz1C,gBAAjB,EAAmC;IAIjC,MAAMigB,KAAA,GAAQw1B,GAAA,CAAIx1B,KAAlB;IACA,MAAMC,MAAA,GAASu1B,GAAA,CAAIv1B,MAAnB;IACA,IAAIw1B,UAAA,GAAav5C,IAAA,CAAK4D,GAAL,CACf5D,IAAA,CAAKgtC,KAAL,CAAWnpC,gBAAA,CAAiB,CAAjB,CAAX,EAAgCA,gBAAA,CAAiB,CAAjB,CAAhC,CADe,EAEf,CAFe,CAAjB;IAIA,IAAI21C,WAAA,GAAcx5C,IAAA,CAAK4D,GAAL,CAChB5D,IAAA,CAAKgtC,KAAL,CAAWnpC,gBAAA,CAAiB,CAAjB,CAAX,EAAgCA,gBAAA,CAAiB,CAAjB,CAAhC,CADgB,EAEhB,CAFgB,CAAlB;IAKA,IAAI41C,UAAA,GAAa31B,KAAjB;MACE41B,WAAA,GAAc31B,MADhB;IAEA,IAAI41B,WAAA,GAAc,WAAlB;IACA,IAAIC,SAAJ,EAAeC,MAAf;IACA,OACGN,UAAA,GAAa,CAAb,IAAkBE,UAAA,GAAa,CAAhC,IACCD,WAAA,GAAc,CAAd,IAAmBE,WAAA,GAAc,CAFpC,EAGE;MACA,IAAII,QAAA,GAAWL,UAAf;QACEM,SAAA,GAAYL,WADd;MAEA,IAAIH,UAAA,GAAa,CAAb,IAAkBE,UAAA,GAAa,CAAnC,EAAsC;QAIpCK,QAAA,GACEL,UAAA,IAAc,KAAd,GACIz5C,IAAA,CAAKg6C,KAAL,CAAWP,UAAA,GAAa,CAAxB,IAA6B,CAA7B,IAAkC,CADtC,GAEIz5C,IAAA,CAAKq1C,IAAL,CAAUoE,UAAA,GAAa,CAAvB,CAHN;QAIAF,UAAA,IAAcE,UAAA,GAAaK,QAA3B;MARoC;MAUtC,IAAIN,WAAA,GAAc,CAAd,IAAmBE,WAAA,GAAc,CAArC,EAAwC;QAEtCK,SAAA,GACEL,WAAA,IAAe,KAAf,GACI15C,IAAA,CAAKg6C,KAAL,CAAWN,WAAA,GAAc,CAAzB,IAA8B,CAA9B,IAAmC,CADvC,GAEI15C,IAAA,CAAKq1C,IAAL,CAAUqE,WAAV,IAAyB,CAH/B;QAIAF,WAAA,IAAeE,WAAA,GAAcK,SAA7B;MANsC;MAQxCH,SAAA,GAAY,KAAKrC,cAAL,CAAoB9L,SAApB,CACVkO,WADU,EAEVG,QAFU,EAGVC,SAHU,CAAZ;MAKAF,MAAA,GAASD,SAAA,CAAU/W,OAAnB;MACAgX,MAAA,CAAOI,SAAP,CAAiB,CAAjB,EAAoB,CAApB,EAAuBH,QAAvB,EAAiCC,SAAjC;MACAF,MAAA,CAAO/M,SAAP,CACEwM,GADF,EAEE,CAFF,EAGE,CAHF,EAIEG,UAJF,EAKEC,WALF,EAME,CANF,EAOE,CAPF,EAQEI,QARF,EASEC,SATF;MAWAT,GAAA,GAAMM,SAAA,CAAU90B,MAAhB;MACA20B,UAAA,GAAaK,QAAb;MACAJ,WAAA,GAAcK,SAAd;MACAJ,WAAA,GAAcA,WAAA,KAAgB,WAAhB,GAA8B,WAA9B,GAA4C,WAA1D;IA1CA;IA4CF,OAAO;MACLL,GADK;MAELG,UAFK;MAGLC;IAHK,CAAP;EAlEiC;EAyEnCQ,kBAAkBZ,GAAlB,EAAuB;IACrB,MAAMpX,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM;MAAEpe,KAAF;MAASC;IAAT,IAAoBu1B,GAA1B;IACA,MAAMjK,SAAA,GAAY,KAAK/G,OAAL,CAAa+G,SAA/B;IACA,MAAM8K,aAAA,GAAgB,KAAK7R,OAAL,CAAaiH,WAAnC;IACA,MAAM6K,gBAAA,GAAmB,IAAAnY,kCAAA,EAAoBC,GAApB,CAAzB;IAEA,IAAIjJ,KAAJ,EAAWthB,QAAX,EAAqB0iC,MAArB,EAA6BC,UAA7B;IACA,IAAK,CAAAhB,GAAA,CAAIz1B,MAAJ,IAAcy1B,GAAA,CAAI9wC,IAAlB,KAA2B8wC,GAAA,CAAIzL,KAAJ,GAAY,CAA5C,EAA+C;MAC7C,MAAM0M,OAAA,GAAUjB,GAAA,CAAIz1B,MAAJ,IAAcy1B,GAAA,CAAI9wC,IAAJ,CAASnH,MAAvC;MAOAsW,QAAA,GAAW0Q,IAAA,CAAKC,SAAL,CACT6xB,aAAA,GACIC,gBADJ,GAEI,CAACA,gBAAA,CAAiB32C,KAAjB,CAAuB,CAAvB,EAA0B,CAA1B,CAAD,EAA+B4rC,SAA/B,CAHK,CAAX;MAMApW,KAAA,GAAQ,KAAK6e,iBAAL,CAAuB7uC,GAAvB,CAA2BsxC,OAA3B,CAAR;MACA,IAAI,CAACthB,KAAL,EAAY;QACVA,KAAA,GAAQ,IAAIpwB,GAAJ,EAAR;QACA,KAAKivC,iBAAL,CAAuBlgC,GAAvB,CAA2B2iC,OAA3B,EAAoCthB,KAApC;MAFU;MAIZ,MAAMuhB,WAAA,GAAcvhB,KAAA,CAAMhwB,GAAN,CAAU0O,QAAV,CAApB;MACA,IAAI6iC,WAAA,IAAe,CAACL,aAApB,EAAmC;QACjC,MAAMjkC,OAAA,GAAUlW,IAAA,CAAK+vB,KAAL,CACd/vB,IAAA,CAAKC,GAAL,CAASm6C,gBAAA,CAAiB,CAAjB,CAAT,EAA8BA,gBAAA,CAAiB,CAAjB,CAA9B,IACEA,gBAAA,CAAiB,CAAjB,CAFY,CAAhB;QAIA,MAAMjkC,OAAA,GAAUnW,IAAA,CAAK+vB,KAAL,CACd/vB,IAAA,CAAKC,GAAL,CAASm6C,gBAAA,CAAiB,CAAjB,CAAT,EAA8BA,gBAAA,CAAiB,CAAjB,CAA9B,IACEA,gBAAA,CAAiB,CAAjB,CAFY,CAAhB;QAIA,OAAO;UACLt1B,MAAA,EAAQ01B,WADH;UAELtkC,OAFK;UAGLC;QAHK,CAAP;MATiC;MAenCkkC,MAAA,GAASG,WAAT;IAnC6C;IAsC/C,IAAI,CAACH,MAAL,EAAa;MACXC,UAAA,GAAa,KAAK/C,cAAL,CAAoB9L,SAApB,CAA8B,YAA9B,EAA4C3nB,KAA5C,EAAmDC,MAAnD,CAAb;MACA2uB,kBAAA,CAAmB4H,UAAA,CAAWzX,OAA9B,EAAuCyW,GAAvC;IAFW;IAUb,IAAImB,YAAA,GAAep4C,UAAA,CAAKvL,SAAL,CAAesjD,gBAAf,EAAiC,CAClD,IAAIt2B,KAD8C,EAElD,CAFkD,EAGlD,CAHkD,EAIlD,CAAC,CAAD,GAAKC,MAJ6C,EAKlD,CALkD,EAMlD,CANkD,CAAjC,CAAnB;IAQA02B,YAAA,GAAep4C,UAAA,CAAKvL,SAAL,CAAe2jD,YAAf,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAC12B,MAAjB,CAA7B,CAAf;IACA,MAAM22B,KAAA,GAAQr4C,UAAA,CAAKU,cAAL,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB,EAA4B03C,YAA5B,CAAd;IACA,MAAME,KAAA,GAAQt4C,UAAA,CAAKU,cAAL,CAAoB,CAAC+gB,KAAD,EAAQC,MAAR,CAApB,EAAqC02B,YAArC,CAAd;IACA,MAAMj2C,IAAA,GAAOnC,UAAA,CAAKkC,aAAL,CAAmB,CAACm2C,KAAA,CAAM,CAAN,CAAD,EAAWA,KAAA,CAAM,CAAN,CAAX,EAAqBC,KAAA,CAAM,CAAN,CAArB,EAA+BA,KAAA,CAAM,CAAN,CAA/B,CAAnB,CAAb;IACA,MAAMC,UAAA,GAAa56C,IAAA,CAAK+vB,KAAL,CAAWvrB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAArB,KAAiC,CAApD;IACA,MAAMq2C,WAAA,GAAc76C,IAAA,CAAK+vB,KAAL,CAAWvrB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAArB,KAAiC,CAArD;IACA,MAAMs2C,UAAA,GAAa,KAAKvD,cAAL,CAAoB9L,SAApB,CACjB,YADiB,EAEjBmP,UAFiB,EAGjBC,WAHiB,CAAnB;IAKA,MAAME,OAAA,GAAUD,UAAA,CAAWjY,OAA3B;IAMA,MAAM3sB,OAAA,GAAUlW,IAAA,CAAKC,GAAL,CAASy6C,KAAA,CAAM,CAAN,CAAT,EAAmBC,KAAA,CAAM,CAAN,CAAnB,CAAhB;IACA,MAAMxkC,OAAA,GAAUnW,IAAA,CAAKC,GAAL,CAASy6C,KAAA,CAAM,CAAN,CAAT,EAAmBC,KAAA,CAAM,CAAN,CAAnB,CAAhB;IACAI,OAAA,CAAQhuB,SAAR,CAAkB,CAAC7W,OAAnB,EAA4B,CAACC,OAA7B;IACA4kC,OAAA,CAAQjkD,SAAR,CAAkB,GAAG2jD,YAArB;IAEA,IAAI,CAACJ,MAAL,EAAa;MAEXA,MAAA,GAAS,KAAKhB,WAAL,CACPiB,UAAA,CAAWx1B,MADJ,EAEP,IAAAwd,yCAAA,EAA2ByY,OAA3B,CAFO,CAAT;MAIAV,MAAA,GAASA,MAAA,CAAOf,GAAhB;MACA,IAAIrgB,KAAA,IAASkhB,aAAb,EAA4B;QAC1BlhB,KAAA,CAAMrhB,GAAN,CAAUD,QAAV,EAAoB0iC,MAApB;MAD0B;IAPjB;IAYbU,OAAA,CAAQC,qBAAR,GAAgCnF,wBAAA,CAC9B,IAAA5T,kCAAA,EAAoB8Y,OAApB,CAD8B,EAE9BzB,GAAA,CAAIxD,WAF0B,CAAhC;IAKAnK,wBAAA,CACEoP,OADF,EAEEV,MAFF,EAGE,CAHF,EAIE,CAJF,EAKEA,MAAA,CAAOv2B,KALT,EAMEu2B,MAAA,CAAOt2B,MANT,EAOE,CAPF,EAQE,CARF,EASED,KATF,EAUEC,MAVF;IAYAg3B,OAAA,CAAQnH,wBAAR,GAAmC,WAAnC;IAEA,MAAMqH,OAAA,GAAU54C,UAAA,CAAKvL,SAAL,CAAe,IAAAwrC,yCAAA,EAA2ByY,OAA3B,CAAf,EAAoD,CAClE,CADkE,EAElE,CAFkE,EAGlE,CAHkE,EAIlE,CAJkE,EAKlE,CAAC7kC,OALiE,EAMlE,CAACC,OANiE,CAApD,CAAhB;IAQA4kC,OAAA,CAAQzH,SAAR,GAAoB6G,aAAA,GAChB9K,SAAA,CAAU6L,UAAV,CAAqBhZ,GAArB,EAA0B,IAA1B,EAAgC+Y,OAAhC,EAAyCtK,wBAAA,CAAShhD,IAAlD,CADgB,GAEhB0/C,SAFJ;IAIA0L,OAAA,CAAQ7C,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuBp0B,KAAvB,EAA8BC,MAA9B;IAEA,IAAIkV,KAAA,IAAS,CAACkhB,aAAd,EAA6B;MAG3B,KAAK5C,cAAL,CAAoB7+B,MAApB,CAA2B,YAA3B;MACAugB,KAAA,CAAMrhB,GAAN,CAAUD,QAAV,EAAoBmjC,UAAA,CAAWh2B,MAA/B;IAJ2B;IAQ7B,OAAO;MACLA,MAAA,EAAQg2B,UAAA,CAAWh2B,MADd;MAEL5O,OAAA,EAASlW,IAAA,CAAK+vB,KAAL,CAAW7Z,OAAX,CAFJ;MAGLC,OAAA,EAASnW,IAAA,CAAK+vB,KAAL,CAAW5Z,OAAX;IAHJ,CAAP;EA3IqB;EAmJvB/f,aAAa0tB,KAAb,EAAoB;IAClB,IAAIA,KAAA,KAAU,KAAKwkB,OAAL,CAAaoH,SAA3B,EAAsC;MACpC,KAAKkI,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IADoC;IAGtC,KAAKtP,OAAL,CAAaoH,SAAb,GAAyB5rB,KAAzB;IACA,KAAKoe,GAAL,CAASwN,SAAT,GAAqB5rB,KAArB;EALkB;EAQpBztB,WAAW+0B,KAAX,EAAkB;IAChB,KAAK8W,GAAL,CAASuR,OAAT,GAAmByC,eAAA,CAAgB9qB,KAAhB,CAAnB;EADgB;EAIlB90B,YAAY80B,KAAZ,EAAmB;IACjB,KAAK8W,GAAL,CAASwR,QAAT,GAAoByC,gBAAA,CAAiB/qB,KAAjB,CAApB;EADiB;EAInB70B,cAAc4kD,KAAd,EAAqB;IACnB,KAAKjZ,GAAL,CAASyR,UAAT,GAAsBwH,KAAtB;EADmB;EAIrB3kD,QAAQ4kD,SAAR,EAAmBC,SAAnB,EAA8B;IAC5B,MAAMnZ,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIA,GAAA,CAAI+Q,WAAJ,KAAoBzzC,SAAxB,EAAmC;MACjC0iC,GAAA,CAAI+Q,WAAJ,CAAgBmI,SAAhB;MACAlZ,GAAA,CAAIiR,cAAJ,GAAqBkI,SAArB;IAFiC;EAFP;EAQ9B5kD,mBAAmB+f,MAAnB,EAA2B;EAI3B9f,YAAY4kD,QAAZ,EAAsB;EAItB3kD,UAAU4kD,MAAV,EAAkB;IAChB,WAAW,CAACv6C,GAAD,EAAMjD,KAAN,CAAX,IAA2Bw9C,MAA3B,EAAmC;MACjC,QAAQv6C,GAAR;QACE,KAAK,IAAL;UACE,KAAK5K,YAAL,CAAkB2H,KAAlB;UACA;QACF,KAAK,IAAL;UACE,KAAK1H,UAAL,CAAgB0H,KAAhB;UACA;QACF,KAAK,IAAL;UACE,KAAKzH,WAAL,CAAiByH,KAAjB;UACA;QACF,KAAK,IAAL;UACE,KAAKxH,aAAL,CAAmBwH,KAAnB;UACA;QACF,KAAK,GAAL;UACE,KAAKvH,OAAL,CAAauH,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKtH,kBAAL,CAAwBsH,KAAxB;UACA;QACF,KAAK,IAAL;UACE,KAAKrH,WAAL,CAAiBqH,KAAjB;UACA;QACF,KAAK,MAAL;UACE,KAAKxF,OAAL,CAAawF,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKuqC,OAAL,CAAamH,WAAb,GAA2B1xC,KAA3B;UACA;QACF,KAAK,IAAL;UACE,KAAKuqC,OAAL,CAAakH,SAAb,GAAyBzxC,KAAzB;UACA,KAAKmkC,GAAL,CAASsR,WAAT,GAAuBz1C,KAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKmkC,GAAL,CAAS0R,wBAAT,GAAoC71C,KAApC;UACA;QACF,KAAK,OAAL;UACE,KAAKuqC,OAAL,CAAaqH,WAAb,GAA2B5xC,KAAA,GAAQ,KAAKq5C,SAAb,GAAyB,IAApD;UACA,KAAKA,SAAL,GAAiB,IAAjB;UACA,KAAKoE,eAAL;UACA;QACF,KAAK,IAAL;UACE,KAAKtZ,GAAL,CAAS9H,MAAT,GAAkB,KAAKkO,OAAL,CAAasH,YAAb,GAChB,KAAK7hC,aAAL,CAAmB0rB,SAAnB,CAA6B17B,KAA7B,CADF;UAEA;MA3CJ;IADiC;EADnB;EAkDlB,IAAIg7C,WAAJA,CAAA,EAAkB;IAChB,OAAO,CAAC,CAAC,KAAK1B,YAAd;EADgB;EAIlBmE,gBAAA,EAAkB;IAChB,MAAMzC,WAAA,GAAc,KAAKA,WAAzB;IACA,IAAI,KAAKzQ,OAAL,CAAaqH,WAAb,IAA4B,CAACoJ,WAAjC,EAA8C;MAC5C,KAAK0C,cAAL;IAD4C,CAA9C,MAEO,IAAI,CAAC,KAAKnT,OAAL,CAAaqH,WAAd,IAA6BoJ,WAAjC,EAA8C;MACnD,KAAK2C,YAAL;IADmD;EAJrC;EAmBlBD,eAAA,EAAiB;IACf,IAAI,KAAK1C,WAAT,EAAsB;MACpB,MAAM,IAAIr8C,KAAJ,CAAU,mDAAV,CAAN;IADoB;IAGtB,MAAMk+C,UAAA,GAAa,KAAK1Y,GAAL,CAASpd,MAAT,CAAgBhB,KAAnC;IACA,MAAM+2B,WAAA,GAAc,KAAK3Y,GAAL,CAASpd,MAAT,CAAgBf,MAApC;IACA,MAAM43B,OAAA,GAAU,iBAAiB,KAAK1E,UAAtC;IACA,MAAM2E,aAAA,GAAgB,KAAKrE,cAAL,CAAoB9L,SAApB,CACpBkQ,OADoB,EAEpBf,UAFoB,EAGpBC,WAHoB,CAAtB;IAKA,KAAKxD,YAAL,GAAoB,KAAKnV,GAAzB;IACA,KAAKA,GAAL,GAAW0Z,aAAA,CAAc/Y,OAAzB;IACA,MAAMX,GAAA,GAAM,KAAKA,GAAjB;IACAA,GAAA,CAAI6H,YAAJ,CAAiB,GAAG,IAAA9H,kCAAA,EAAoB,KAAKoV,YAAzB,CAApB;IACAxE,YAAA,CAAa,KAAKwE,YAAlB,EAAgCnV,GAAhC;IACAmH,uBAAA,CAAwBnH,GAAxB,EAA6B,KAAKmV,YAAlC;IAEA,KAAK1gD,SAAL,CAAe,CACb,CAAC,IAAD,EAAO,aAAP,CADa,EAEb,CAAC,IAAD,EAAO,CAAP,CAFa,EAGb,CAAC,IAAD,EAAO,CAAP,CAHa,CAAf;EAnBe;EA0BjB+kD,aAAA,EAAe;IACb,IAAI,CAAC,KAAK3C,WAAV,EAAuB;MACrB,MAAM,IAAIr8C,KAAJ,CAAU,6CAAV,CAAN;IADqB;IAKvB,KAAKwlC,GAAL,CAASqH,gBAAT;IACAsJ,YAAA,CAAa,KAAK3Q,GAAlB,EAAuB,KAAKmV,YAA5B;IACA,KAAKnV,GAAL,GAAW,KAAKmV,YAAhB;IAEA,KAAKA,YAAL,GAAoB,IAApB;EAVa;EAafwE,QAAQC,QAAR,EAAkB;IAChB,IAAI,CAAC,KAAKxT,OAAL,CAAaqH,WAAlB,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAACmM,QAAL,EAAe;MACbA,QAAA,GAAW,CAAC,CAAD,EAAI,CAAJ,EAAO,KAAK5Z,GAAL,CAASpd,MAAT,CAAgBhB,KAAvB,EAA8B,KAAKoe,GAAL,CAASpd,MAAT,CAAgBf,MAA9C,CAAX;IADa,CAAf,MAEO;MACL+3B,QAAA,CAAS,CAAT,IAAc97C,IAAA,CAAKg6C,KAAL,CAAW8B,QAAA,CAAS,CAAT,CAAX,CAAd;MACAA,QAAA,CAAS,CAAT,IAAc97C,IAAA,CAAKg6C,KAAL,CAAW8B,QAAA,CAAS,CAAT,CAAX,CAAd;MACAA,QAAA,CAAS,CAAT,IAAc97C,IAAA,CAAKq1C,IAAL,CAAUyG,QAAA,CAAS,CAAT,CAAV,CAAd;MACAA,QAAA,CAAS,CAAT,IAAc97C,IAAA,CAAKq1C,IAAL,CAAUyG,QAAA,CAAS,CAAT,CAAV,CAAd;IAJK;IAMP,MAAMrG,KAAA,GAAQ,KAAKnN,OAAL,CAAaqH,WAA3B;IACA,MAAM0H,YAAA,GAAe,KAAKA,YAA1B;IAEA7B,YAAA,CAAa6B,YAAb,EAA2B5B,KAA3B,EAAkC,KAAKvT,GAAvC,EAA4C4Z,QAA5C;IAGA,KAAK5Z,GAAL,CAAStrC,IAAT;IACA,KAAKsrC,GAAL,CAAS6H,YAAT,CAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC;IACA,KAAK7H,GAAL,CAAS+X,SAAT,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB,KAAK/X,GAAL,CAASpd,MAAT,CAAgBhB,KAAzC,EAAgD,KAAKoe,GAAL,CAASpd,MAAT,CAAgBf,MAAhE;IACA,KAAKme,GAAL,CAASrrC,OAAT;EAtBgB;EAyBlBD,KAAA,EAAO;IACL,IAAI,KAAKmiD,WAAT,EAAsB;MAIpBlG,YAAA,CAAa,KAAK3Q,GAAlB,EAAuB,KAAKmV,YAA5B;MAGA,KAAKA,YAAL,CAAkBzgD,IAAlB;IAPoB,CAAtB,MAQO;MACL,KAAKsrC,GAAL,CAAStrC,IAAT;IADK;IAGP,MAAMmlD,GAAA,GAAM,KAAKzT,OAAjB;IACA,KAAKkO,UAAL,CAAgBp2C,IAAhB,CAAqB27C,GAArB;IACA,KAAKzT,OAAL,GAAeyT,GAAA,CAAItzB,KAAJ,EAAf;EAdK;EAiBP5xB,QAAA,EAAU;IACR,IAAI,KAAK2/C,UAAL,CAAgBj5C,MAAhB,KAA2B,CAA3B,IAAgC,KAAKw7C,WAAzC,EAAsD;MACpD,KAAK2C,YAAL;IADoD;IAGtD,IAAI,KAAKlF,UAAL,CAAgBj5C,MAAhB,KAA2B,CAA/B,EAAkC;MAChC,KAAK+qC,OAAL,GAAe,KAAKkO,UAAL,CAAgBwF,GAAhB,EAAf;MACA,IAAI,KAAKjD,WAAT,EAAsB;QAGpB,KAAK1B,YAAL,CAAkBxgD,OAAlB;QACAg8C,YAAA,CAAa,KAAKwE,YAAlB,EAAgC,KAAKnV,GAArC;MAJoB,CAAtB,MAKO;QACL,KAAKA,GAAL,CAASrrC,OAAT;MADK;MAGP,KAAK2kD,eAAL;MAGA,KAAK/E,WAAL,GAAmB,IAAnB;MAEA,KAAKmB,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;MACA,KAAKC,0BAAL,GAAkC,IAAlC;IAhBgC;EAJ1B;EAwBV/gD,UAAUkN,CAAV,EAAavB,CAAb,EAAgBwB,CAAhB,EAAmBZ,CAAnB,EAAsB8+B,CAAtB,EAAyBC,CAAzB,EAA4B;IAC1B,KAAKF,GAAL,CAASprC,SAAT,CAAmBkN,CAAnB,EAAsBvB,CAAtB,EAAyBwB,CAAzB,EAA4BZ,CAA5B,EAA+B8+B,CAA/B,EAAkCC,CAAlC;IAEA,KAAKwV,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IACA,KAAKC,0BAAL,GAAkC,IAAlC;EAJ0B;EAQ5Bn8C,cAAcugD,GAAd,EAAmB1T,IAAnB,EAAyB5lC,MAAzB,EAAiC;IAC/B,MAAMu/B,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMoG,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIje,CAAA,GAAIie,OAAA,CAAQje,CAAhB;MACEC,CAAA,GAAIge,OAAA,CAAQhe,CADd;IAEA,IAAI4B,MAAJ,EAAYE,MAAZ;IACA,MAAMguB,gBAAA,GAAmB,IAAAnY,kCAAA,EAAoBC,GAApB,CAAzB;IAQA,MAAMga,eAAA,GACH9B,gBAAA,CAAiB,CAAjB,MAAwB,CAAxB,IAA6BA,gBAAA,CAAiB,CAAjB,MAAwB,CAAtD,IACCA,gBAAA,CAAiB,CAAjB,MAAwB,CAAxB,IAA6BA,gBAAA,CAAiB,CAAjB,MAAwB,CAFxD;IAGA,MAAM+B,eAAA,GAAkBD,eAAA,GAAkBv5C,MAAA,CAAOc,KAAP,CAAa,CAAb,CAAlB,GAAoC,IAA5D;IAEA,KAAK,IAAI3D,CAAA,GAAI,CAAR,EAAWmG,CAAA,GAAI,CAAf,EAAkBW,EAAA,GAAKq1C,GAAA,CAAI1+C,MAA3B,EAAmCuC,CAAA,GAAI8G,EAA5C,EAAgD9G,CAAA,EAAhD,EAAqD;MACnD,QAAQm8C,GAAA,CAAIn8C,CAAJ,IAAS,CAAjB;QACE,KAAK5J,SAAA,CAAImB,SAAT;UACEgzB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACA,MAAM6d,KAAA,GAAQykB,IAAA,CAAKtiC,CAAA,EAAL,CAAd;UACA,MAAM8d,MAAA,GAASwkB,IAAA,CAAKtiC,CAAA,EAAL,CAAf;UAEA,MAAMm2C,EAAA,GAAK/xB,CAAA,GAAIvG,KAAf;UACA,MAAMu4B,EAAA,GAAK/xB,CAAA,GAAIvG,MAAf;UACAme,GAAA,CAAInrC,MAAJ,CAAWszB,CAAX,EAAcC,CAAd;UACA,IAAIxG,KAAA,KAAU,CAAV,IAAeC,MAAA,KAAW,CAA9B,EAAiC;YAC/Bme,GAAA,CAAIlrC,MAAJ,CAAWolD,EAAX,EAAeC,EAAf;UAD+B,CAAjC,MAEO;YACLna,GAAA,CAAIlrC,MAAJ,CAAWolD,EAAX,EAAe9xB,CAAf;YACA4X,GAAA,CAAIlrC,MAAJ,CAAWolD,EAAX,EAAeC,EAAf;YACAna,GAAA,CAAIlrC,MAAJ,CAAWqzB,CAAX,EAAcgyB,EAAd;UAHK;UAKP,IAAI,CAACH,eAAL,EAAsB;YACpB5T,OAAA,CAAQ+H,gBAAR,CAAyB+J,gBAAzB,EAA2C,CAAC/vB,CAAD,EAAIC,CAAJ,EAAO8xB,EAAP,EAAWC,EAAX,CAA3C;UADoB;UAGtBna,GAAA,CAAI9qC,SAAJ;UACA;QACF,KAAKlB,SAAA,CAAIa,MAAT;UACEszB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAi8B,GAAA,CAAInrC,MAAJ,CAAWszB,CAAX,EAAcC,CAAd;UACA,IAAI,CAAC4xB,eAAL,EAAsB;YACpB5T,OAAA,CAAQ0H,gBAAR,CAAyBoK,gBAAzB,EAA2C/vB,CAA3C,EAA8CC,CAA9C;UADoB;UAGtB;QACF,KAAKp0B,SAAA,CAAIc,MAAT;UACEqzB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAi8B,GAAA,CAAIlrC,MAAJ,CAAWqzB,CAAX,EAAcC,CAAd;UACA,IAAI,CAAC4xB,eAAL,EAAsB;YACpB5T,OAAA,CAAQ0H,gBAAR,CAAyBoK,gBAAzB,EAA2C/vB,CAA3C,EAA8CC,CAA9C;UADoB;UAGtB;QACF,KAAKp0B,SAAA,CAAIe,OAAT;UACEi1B,MAAA,GAAS7B,CAAT;UACA+B,MAAA,GAAS9B,CAAT;UACAD,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAi8B,GAAA,CAAIoI,aAAJ,CACE/B,IAAA,CAAKtiC,CAAL,CADF,EAEEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAFF,EAGEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAHF,EAIEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAJF,EAKEokB,CALF,EAMEC,CANF;UAQAge,OAAA,CAAQiI,qBAAR,CACE6J,gBADF,EAEEluB,MAFF,EAGEE,MAHF,EAIEmc,IAAA,CAAKtiC,CAAL,CAJF,EAKEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CALF,EAMEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CANF,EAOEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAPF,EAQEokB,CARF,EASEC,CATF,EAUE6xB,eAVF;UAYAl2C,CAAA,IAAK,CAAL;UACA;QACF,KAAK/P,SAAA,CAAIgB,QAAT;UACEg1B,MAAA,GAAS7B,CAAT;UACA+B,MAAA,GAAS9B,CAAT;UACA4X,GAAA,CAAIoI,aAAJ,CACEjgB,CADF,EAEEC,CAFF,EAGEie,IAAA,CAAKtiC,CAAL,CAHF,EAIEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAJF,EAKEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CALF,EAMEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CANF;UAQAqiC,OAAA,CAAQiI,qBAAR,CACE6J,gBADF,EAEEluB,MAFF,EAGEE,MAHF,EAIE/B,CAJF,EAKEC,CALF,EAMEie,IAAA,CAAKtiC,CAAL,CANF,EAOEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAPF,EAQEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CARF,EASEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CATF,EAUEk2C,eAVF;UAYA9xB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAA,CAAA,IAAK,CAAL;UACA;QACF,KAAK/P,SAAA,CAAIiB,QAAT;UACE+0B,MAAA,GAAS7B,CAAT;UACA+B,MAAA,GAAS9B,CAAT;UACAD,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAi8B,GAAA,CAAIoI,aAAJ,CAAkB/B,IAAA,CAAKtiC,CAAL,CAAlB,EAA2BsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAA3B,EAAwCokB,CAAxC,EAA2CC,CAA3C,EAA8CD,CAA9C,EAAiDC,CAAjD;UACAge,OAAA,CAAQiI,qBAAR,CACE6J,gBADF,EAEEluB,MAFF,EAGEE,MAHF,EAIEmc,IAAA,CAAKtiC,CAAL,CAJF,EAKEsiC,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CALF,EAMEokB,CANF,EAOEC,CAPF,EAQED,CARF,EASEC,CATF,EAUE6xB,eAVF;UAYAl2C,CAAA,IAAK,CAAL;UACA;QACF,KAAK/P,SAAA,CAAIkB,SAAT;UACE8qC,GAAA,CAAI9qC,SAAJ;UACA;MAlHJ;IADmD;IAuHrD,IAAI8kD,eAAJ,EAAqB;MACnB5T,OAAA,CAAQgI,uBAAR,CAAgC8J,gBAAhC,EAAkD+B,eAAlD;IADmB;IAIrB7T,OAAA,CAAQyH,eAAR,CAAwB1lB,CAAxB,EAA2BC,CAA3B;EA9I+B;EAiJjClzB,UAAA,EAAY;IACV,KAAK8qC,GAAL,CAAS9qC,SAAT;EADU;EAIZE,OAAOglD,WAAA,GAAc,IAArB,EAA2B;IACzB,MAAMpa,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMoN,WAAA,GAAc,KAAKhH,OAAL,CAAagH,WAAjC;IAGApN,GAAA,CAAIsR,WAAJ,GAAkB,KAAKlL,OAAL,CAAamH,WAA/B;IACA,IAAI,KAAK6H,cAAT,EAAyB;MACvB,IAAI,OAAOhI,WAAP,KAAuB,QAAvB,IAAmCA,WAAA,EAAa4L,UAApD,EAAgE;QAC9DhZ,GAAA,CAAItrC,IAAJ;QACAsrC,GAAA,CAAImR,WAAJ,GAAkB/D,WAAA,CAAY4L,UAAZ,CAChBhZ,GADgB,EAEhB,IAFgB,EAGhB,IAAAI,yCAAA,EAA2BJ,GAA3B,CAHgB,EAIhByO,wBAAA,CAAS/gD,MAJO,CAAlB;QAMA,KAAK2sD,gBAAL,CAAwC,KAAxC;QACAra,GAAA,CAAIrrC,OAAJ;MAT8D,CAAhE,MAUO;QACL,KAAK0lD,gBAAL,CAAwC,IAAxC;MADK;IAXgB;IAezB,IAAID,WAAJ,EAAiB;MACf,KAAKA,WAAL,CAAiB,KAAKhU,OAAL,CAAa2I,yBAAb,EAAjB;IADe;IAIjB/O,GAAA,CAAIsR,WAAJ,GAAkB,KAAKlL,OAAL,CAAakH,SAA/B;EAzByB;EA4B3Bj4C,YAAA,EAAc;IACZ,KAAKH,SAAL;IACA,KAAKE,MAAL;EAFY;EAKdE,KAAK8kD,WAAA,GAAc,IAAnB,EAAyB;IACvB,MAAMpa,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMmN,SAAA,GAAY,KAAK/G,OAAL,CAAa+G,SAA/B;IACA,MAAM8K,aAAA,GAAgB,KAAK7R,OAAL,CAAaiH,WAAnC;IACA,IAAIiN,WAAA,GAAc,KAAlB;IAEA,IAAIrC,aAAJ,EAAmB;MACjBjY,GAAA,CAAItrC,IAAJ;MACAsrC,GAAA,CAAIoR,SAAJ,GAAgBjE,SAAA,CAAU6L,UAAV,CACdhZ,GADc,EAEd,IAFc,EAGd,IAAAI,yCAAA,EAA2BJ,GAA3B,CAHc,EAIdyO,wBAAA,CAAShhD,IAJK,CAAhB;MAMA6sD,WAAA,GAAc,IAAd;IARiB;IAWnB,MAAM/3C,SAAA,GAAY,KAAK6jC,OAAL,CAAa2I,yBAAb,EAAlB;IACA,IAAI,KAAKqG,cAAL,IAAuB7yC,SAAA,KAAc,IAAzC,EAA+C;MAC7C,IAAI,KAAKiyC,aAAT,EAAwB;QACtBxU,GAAA,CAAI1qC,IAAJ,CAAS,SAAT;QACA,KAAKk/C,aAAL,GAAqB,KAArB;MAFsB,CAAxB,MAGO;QACLxU,GAAA,CAAI1qC,IAAJ;MADK;IAJsC;IAS/C,IAAIglD,WAAJ,EAAiB;MACfta,GAAA,CAAIrrC,OAAJ;IADe;IAGjB,IAAIylD,WAAJ,EAAiB;MACf,KAAKA,WAAL,CAAiB73C,SAAjB;IADe;EA9BM;EAmCzBhN,OAAA,EAAS;IACP,KAAKi/C,aAAL,GAAqB,IAArB;IACA,KAAKl/C,IAAL;EAFO;EAKTE,WAAA,EAAa;IACX,KAAKF,IAAL,CAAU,KAAV;IACA,KAAKF,MAAL,CAAY,KAAZ;IAEA,KAAKglD,WAAL;EAJW;EAOb3kD,aAAA,EAAe;IACb,KAAK++C,aAAL,GAAqB,IAArB;IACA,KAAKh/C,UAAL;EAFa;EAKfE,gBAAA,EAAkB;IAChB,KAAKR,SAAL;IACA,KAAKM,UAAL;EAFgB;EAKlBG,kBAAA,EAAoB;IAClB,KAAK6+C,aAAL,GAAqB,IAArB;IACA,KAAKt/C,SAAL;IACA,KAAKM,UAAL;EAHkB;EAMpBI,QAAA,EAAU;IACR,KAAKwkD,WAAL;EADQ;EAKVvkD,KAAA,EAAO;IACL,KAAK0+C,WAAL,GAAmBL,WAAnB;EADK;EAIPp+C,OAAA,EAAS;IACP,KAAKy+C,WAAL,GAAmBJ,OAAnB;EADO;EAKTp+C,UAAA,EAAY;IACV,KAAKqwC,OAAL,CAAaoG,UAAb,GAA0B1hD,qBAA1B;IACA,KAAKs7C,OAAL,CAAaqG,eAAb,GAA+B,CAA/B;IACA,KAAKrG,OAAL,CAAaje,CAAb,GAAiB,KAAKie,OAAL,CAAawG,KAAb,GAAqB,CAAtC;IACA,KAAKxG,OAAL,CAAahe,CAAb,GAAiB,KAAKge,OAAL,CAAayG,KAAb,GAAqB,CAAtC;EAJU;EAOZ72C,QAAA,EAAU;IACR,MAAMukD,KAAA,GAAQ,KAAKC,gBAAnB;IACA,MAAMxa,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIua,KAAA,KAAUj9C,SAAd,EAAyB;MACvB0iC,GAAA,CAAIwI,SAAJ;MACA;IAFuB;IAKzBxI,GAAA,CAAItrC,IAAJ;IACAsrC,GAAA,CAAIwI,SAAJ;IACA,WAAWuD,IAAX,IAAmBwO,KAAnB,EAA0B;MACxBva,GAAA,CAAI6H,YAAJ,CAAiB,GAAGkE,IAAA,CAAKn3C,SAAzB;MACAorC,GAAA,CAAInV,SAAJ,CAAckhB,IAAA,CAAK5jB,CAAnB,EAAsB4jB,IAAA,CAAK3jB,CAA3B;MACA2jB,IAAA,CAAK0O,SAAL,CAAeza,GAAf,EAAoB+L,IAAA,CAAKO,QAAzB;IAHwB;IAK1BtM,GAAA,CAAIrrC,OAAJ;IACAqrC,GAAA,CAAInqC,IAAJ;IACAmqC,GAAA,CAAIwI,SAAJ;IACA,OAAO,KAAKgS,gBAAZ;EAlBQ;EAqBVvkD,eAAeykD,OAAf,EAAwB;IACtB,KAAKtU,OAAL,CAAa0G,WAAb,GAA2B4N,OAA3B;EADsB;EAIxBxkD,eAAewkD,OAAf,EAAwB;IACtB,KAAKtU,OAAL,CAAa2G,WAAb,GAA2B2N,OAA3B;EADsB;EAIxBvkD,UAAU2d,KAAV,EAAiB;IACf,KAAKsyB,OAAL,CAAa4G,UAAb,GAA0Bl5B,KAAA,GAAQ,GAAlC;EADe;EAIjB1d,WAAWu2C,OAAX,EAAoB;IAClB,KAAKvG,OAAL,CAAauG,OAAb,GAAuB,CAACA,OAAxB;EADkB;EAIpBt2C,QAAQskD,WAAR,EAAqB1iC,IAArB,EAA2B;IACzB,MAAM2iC,OAAA,GAAU,KAAKvnC,UAAL,CAAgBtM,GAAhB,CAAoB4zC,WAApB,CAAhB;IACA,MAAMvU,OAAA,GAAU,KAAKA,OAArB;IAEA,IAAI,CAACwU,OAAL,EAAc;MACZ,MAAM,IAAIpgD,KAAJ,CAAW,uBAAsBmgD,WAAvB,EAAV,CAAN;IADY;IAGdvU,OAAA,CAAQsG,UAAR,GAAqBkO,OAAA,CAAQlO,UAAR,IAAsB1hD,0BAA3C;IAIA,IAAIo7C,OAAA,CAAQsG,UAAR,CAAmB,CAAnB,MAA0B,CAA1B,IAA+BtG,OAAA,CAAQsG,UAAR,CAAmB,CAAnB,MAA0B,CAA7D,EAAgE;MAC9D,IAAApyC,UAAA,EAAK,kCAAkCqgD,WAAvC;IAD8D;IAMhE,IAAI1iC,IAAA,GAAO,CAAX,EAAc;MACZA,IAAA,GAAO,CAACA,IAAR;MACAmuB,OAAA,CAAQyU,aAAR,GAAwB,CAAC,CAAzB;IAFY,CAAd,MAGO;MACLzU,OAAA,CAAQyU,aAAR,GAAwB,CAAxB;IADK;IAIP,KAAKzU,OAAL,CAAahlB,IAAb,GAAoBw5B,OAApB;IACA,KAAKxU,OAAL,CAAakG,QAAb,GAAwBr0B,IAAxB;IAEA,IAAI2iC,OAAA,CAAQE,WAAZ,EAAyB;MACvB;IADuB;IAIzB,MAAMv+C,IAAA,GAAOq+C,OAAA,CAAQ9X,UAAR,IAAsB,YAAnC;IACA,MAAMiY,QAAA,GACJH,OAAA,CAAQtX,cAAR,EAAwBqC,GAAxB,IAAgC,IAAGppC,IAAK,MAAKq+C,OAAA,CAAQI,YAAtB,EADjC;IAGA,IAAIC,IAAA,GAAO,QAAX;IACA,IAAIL,OAAA,CAAQzK,KAAZ,EAAmB;MACjB8K,IAAA,GAAO,KAAP;IADiB,CAAnB,MAEO,IAAIL,OAAA,CAAQK,IAAZ,EAAkB;MACvBA,IAAA,GAAO,MAAP;IADuB;IAGzB,MAAMC,MAAA,GAASN,OAAA,CAAQM,MAAR,GAAiB,QAAjB,GAA4B,QAA3C;IAMA,IAAIC,eAAA,GAAkBljC,IAAtB;IACA,IAAIA,IAAA,GAAO2uB,aAAX,EAA0B;MACxBuU,eAAA,GAAkBvU,aAAlB;IADwB,CAA1B,MAEO,IAAI3uB,IAAA,GAAO4uB,aAAX,EAA0B;MAC/BsU,eAAA,GAAkBtU,aAAlB;IAD+B;IAGjC,KAAKT,OAAL,CAAamG,aAAb,GAA6Bt0B,IAAA,GAAOkjC,eAApC;IAEA,KAAKnb,GAAL,CAAS5e,IAAT,GAAgB,GAAG85B,MAAO,IAAGD,IAAK,IAAGE,eAAgB,MAAKJ,QAA1C,EAAhB;EAvDyB;EA0D3BzkD,qBAAqB46B,IAArB,EAA2B;IACzB,KAAKkV,OAAL,CAAa6G,iBAAb,GAAiC/b,IAAjC;EADyB;EAI3B36B,YAAY6kD,IAAZ,EAAkB;IAChB,KAAKhV,OAAL,CAAa8G,QAAb,GAAwBkO,IAAxB;EADgB;EAIlB5kD,SAAS2xB,CAAT,EAAYC,CAAZ,EAAe;IACb,KAAKge,OAAL,CAAaje,CAAb,GAAiB,KAAKie,OAAL,CAAawG,KAAb,IAAsBzkB,CAAvC;IACA,KAAKie,OAAL,CAAahe,CAAb,GAAiB,KAAKge,OAAL,CAAayG,KAAb,IAAsBzkB,CAAvC;EAFa;EAKf3xB,mBAAmB0xB,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,KAAKhyB,UAAL,CAAgB,CAACgyB,CAAjB;IACA,KAAK5xB,QAAL,CAAc2xB,CAAd,EAAiBC,CAAjB;EAFuB;EAKzB1xB,cAAcoL,CAAd,EAAiBvB,CAAjB,EAAoBwB,CAApB,EAAuBZ,CAAvB,EAA0B8+B,CAA1B,EAA6BC,CAA7B,EAAgC;IAC9B,KAAKkG,OAAL,CAAaoG,UAAb,GAA0B,CAAC1qC,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAa8+B,CAAb,EAAgBC,CAAhB,CAA1B;IACA,KAAKkG,OAAL,CAAaqG,eAAb,GAA+B3uC,IAAA,CAAKgtC,KAAL,CAAWhpC,CAAX,EAAcvB,CAAd,CAA/B;IAEA,KAAK6lC,OAAL,CAAaje,CAAb,GAAiB,KAAKie,OAAL,CAAawG,KAAb,GAAqB,CAAtC;IACA,KAAKxG,OAAL,CAAahe,CAAb,GAAiB,KAAKge,OAAL,CAAayG,KAAb,GAAqB,CAAtC;EAL8B;EAQhCl2C,SAAA,EAAW;IACT,KAAKH,QAAL,CAAc,CAAd,EAAiB,KAAK4vC,OAAL,CAAauG,OAA9B;EADS;EAIX0O,UAAUpV,SAAV,EAAqB9d,CAArB,EAAwBC,CAAxB,EAA2BkzB,gBAA3B,EAA6C;IAC3C,MAAMtb,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMoG,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMhlB,IAAA,GAAOglB,OAAA,CAAQhlB,IAArB;IACA,MAAM6rB,iBAAA,GAAoB7G,OAAA,CAAQ6G,iBAAlC;IACA,MAAMX,QAAA,GAAWlG,OAAA,CAAQkG,QAAR,GAAmBlG,OAAA,CAAQmG,aAA5C;IACA,MAAMgP,cAAA,GACJtO,iBAAA,GAAoBz/C,uBAAA,CAAkBS,gBADxC;IAEA,MAAMutD,cAAA,GAAiB,CAAC,EACtBvO,iBAAA,GAAoBz/C,uBAAA,CAAkBU,gBAAtC,CADF;IAGA,MAAMm/C,WAAA,GAAcjH,OAAA,CAAQiH,WAAR,IAAuB,CAACjsB,IAAA,CAAKiiB,WAAjD;IAEA,IAAIoX,SAAJ;IACA,IAAIr5B,IAAA,CAAKtW,eAAL,IAAwB0wC,cAAxB,IAA0CnO,WAA9C,EAA2D;MACzDoN,SAAA,GAAYr5B,IAAA,CAAK4kB,gBAAL,CAAsB,KAAK3yB,UAA3B,EAAuC4yB,SAAvC,CAAZ;IADyD;IAI3D,IAAI7kB,IAAA,CAAKtW,eAAL,IAAwBuiC,WAA5B,EAAyC;MACvCrN,GAAA,CAAItrC,IAAJ;MACAsrC,GAAA,CAAInV,SAAJ,CAAc1C,CAAd,EAAiBC,CAAjB;MACA4X,GAAA,CAAIwI,SAAJ;MACAiS,SAAA,CAAUza,GAAV,EAAesM,QAAf;MACA,IAAIgP,gBAAJ,EAAsB;QACpBtb,GAAA,CAAI6H,YAAJ,CAAiB,GAAGyT,gBAApB;MADoB;MAGtB,IACEC,cAAA,KAAmB/tD,uBAAA,CAAkBC,IAArC,IACA8tD,cAAA,KAAmB/tD,uBAAA,CAAkBG,WAFvC,EAGE;QACAqyC,GAAA,CAAI1qC,IAAJ;MADA;MAGF,IACEimD,cAAA,KAAmB/tD,uBAAA,CAAkBE,MAArC,IACA6tD,cAAA,KAAmB/tD,uBAAA,CAAkBG,WAFvC,EAGE;QACAqyC,GAAA,CAAI5qC,MAAJ;MADA;MAGF4qC,GAAA,CAAIrrC,OAAJ;IApBuC,CAAzC,MAqBO;MACL,IACE4mD,cAAA,KAAmB/tD,uBAAA,CAAkBC,IAArC,IACA8tD,cAAA,KAAmB/tD,uBAAA,CAAkBG,WAFvC,EAGE;QACAqyC,GAAA,CAAI+E,QAAJ,CAAakB,SAAb,EAAwB9d,CAAxB,EAA2BC,CAA3B;MADA;MAGF,IACEmzB,cAAA,KAAmB/tD,uBAAA,CAAkBE,MAArC,IACA6tD,cAAA,KAAmB/tD,uBAAA,CAAkBG,WAFvC,EAGE;QACAqyC,GAAA,CAAIyb,UAAJ,CAAexV,SAAf,EAA0B9d,CAA1B,EAA6BC,CAA7B;MADA;IAVG;IAeP,IAAIozB,cAAJ,EAAoB;MAClB,MAAMjB,KAAA,GAAS,KAAKC,gBAAL,KAA0B,EAAzC;MACAD,KAAA,CAAMr8C,IAAN,CAAW;QACTtJ,SAAA,EAAW,IAAAmrC,kCAAA,EAAoBC,GAApB,CADF;QAET7X,CAFS;QAGTC,CAHS;QAITkkB,QAJS;QAKTmO;MALS,CAAX;IAFkB;EAtDuB;EAkE7C,IAAIiB,uBAAJA,CAAA,EAA8B;IAG5B,MAAM;MAAE/a,OAAA,EAASX;IAAX,IAAmB,KAAKqV,cAAL,CAAoB9L,SAApB,CACvB,yBADuB,EAEvB,EAFuB,EAGvB,EAHuB,CAAzB;IAKAvJ,GAAA,CAAIlsB,KAAJ,CAAU,GAAV,EAAe,CAAf;IACAksB,GAAA,CAAI+E,QAAJ,CAAa,GAAb,EAAkB,CAAlB,EAAqB,EAArB;IACA,MAAMz+B,IAAA,GAAO05B,GAAA,CAAIgF,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,EAAvB,EAA2B,EAA3B,EAA+B1+B,IAA5C;IACA,IAAI6a,OAAA,GAAU,KAAd;IACA,KAAK,IAAIvjB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI0I,IAAA,CAAKjL,MAAzB,EAAiCuC,CAAA,IAAK,CAAtC,EAAyC;MACvC,IAAI0I,IAAA,CAAK1I,CAAL,IAAU,CAAV,IAAe0I,IAAA,CAAK1I,CAAL,IAAU,GAA7B,EAAkC;QAChCujB,OAAA,GAAU,IAAV;QACA;MAFgC;IADK;IAMzC,OAAO,IAAAzlB,YAAA,EAAO,IAAP,EAAa,yBAAb,EAAwCylB,OAAxC,CAAP;EAlB4B;EAqB9BvqB,SAAS+kD,MAAT,EAAiB;IACf,MAAMvV,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMhlB,IAAA,GAAOglB,OAAA,CAAQhlB,IAArB;IACA,IAAIA,IAAA,CAAK05B,WAAT,EAAsB;MACpB,OAAO,KAAKc,aAAL,CAAmBD,MAAnB,CAAP;IADoB;IAItB,MAAMrP,QAAA,GAAWlG,OAAA,CAAQkG,QAAzB;IACA,IAAIA,QAAA,KAAa,CAAjB,EAAoB;MAClB,OAAOhvC,SAAP;IADkB;IAIpB,MAAM0iC,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMuM,aAAA,GAAgBnG,OAAA,CAAQmG,aAA9B;IACA,MAAMO,WAAA,GAAc1G,OAAA,CAAQ0G,WAA5B;IACA,MAAMC,WAAA,GAAc3G,OAAA,CAAQ2G,WAA5B;IACA,MAAM8N,aAAA,GAAgBzU,OAAA,CAAQyU,aAA9B;IACA,MAAM7N,UAAA,GAAa5G,OAAA,CAAQ4G,UAAR,GAAqB6N,aAAxC;IACA,MAAMgB,YAAA,GAAeF,MAAA,CAAOtgD,MAA5B;IACA,MAAMygD,QAAA,GAAW16B,IAAA,CAAK06B,QAAtB;IACA,MAAMC,UAAA,GAAaD,QAAA,GAAW,CAAX,GAAe,CAAC,CAAnC;IACA,MAAME,eAAA,GAAkB56B,IAAA,CAAK46B,eAA7B;IACA,MAAMC,iBAAA,GAAoB3P,QAAA,GAAWlG,OAAA,CAAQsG,UAAR,CAAmB,CAAnB,CAArC;IAEA,MAAMwP,cAAA,GACJ9V,OAAA,CAAQ6G,iBAAR,KAA8Bz/C,uBAAA,CAAkBC,IAAhD,IACA,CAAC2zB,IAAA,CAAKtW,eADN,IAEA,CAACs7B,OAAA,CAAQiH,WAHX;IAKArN,GAAA,CAAItrC,IAAJ;IACAsrC,GAAA,CAAIprC,SAAJ,CAAc,GAAGwxC,OAAA,CAAQoG,UAAzB;IACAxM,GAAA,CAAInV,SAAJ,CAAcub,OAAA,CAAQje,CAAtB,EAAyBie,OAAA,CAAQhe,CAAR,GAAYge,OAAA,CAAQ8G,QAA7C;IAEA,IAAI2N,aAAA,GAAgB,CAApB,EAAuB;MACrB7a,GAAA,CAAIlsB,KAAJ,CAAUk5B,UAAV,EAAsB,CAAC,CAAvB;IADqB,CAAvB,MAEO;MACLhN,GAAA,CAAIlsB,KAAJ,CAAUk5B,UAAV,EAAsB,CAAtB;IADK;IAIP,IAAIsO,gBAAJ;IACA,IAAIlV,OAAA,CAAQiH,WAAZ,EAAyB;MACvBrN,GAAA,CAAItrC,IAAJ;MACA,MAAMynD,OAAA,GAAU/V,OAAA,CAAQ+G,SAAR,CAAkB6L,UAAlB,CACdhZ,GADc,EAEd,IAFc,EAGd,IAAAI,yCAAA,EAA2BJ,GAA3B,CAHc,EAIdyO,wBAAA,CAAShhD,IAJK,CAAhB;MAMA6tD,gBAAA,GAAmB,IAAAvb,kCAAA,EAAoBC,GAApB,CAAnB;MACAA,GAAA,CAAIrrC,OAAJ;MACAqrC,GAAA,CAAIoR,SAAJ,GAAgB+K,OAAhB;IAVuB;IAazB,IAAI3O,SAAA,GAAYpH,OAAA,CAAQoH,SAAxB;IACA,MAAM15B,KAAA,GAAQsyB,OAAA,CAAQqG,eAAtB;IACA,IAAI34B,KAAA,KAAU,CAAV,IAAe05B,SAAA,KAAc,CAAjC,EAAoC;MAClC,MAAM+N,cAAA,GACJnV,OAAA,CAAQ6G,iBAAR,GAA4Bz/C,uBAAA,CAAkBS,gBADhD;MAEA,IACEstD,cAAA,KAAmB/tD,uBAAA,CAAkBE,MAArC,IACA6tD,cAAA,KAAmB/tD,uBAAA,CAAkBG,WAFvC,EAGE;QACA6/C,SAAA,GAAY,KAAK4O,mBAAL,EAAZ;MADA;IANgC,CAApC,MASO;MACL5O,SAAA,IAAa15B,KAAb;IADK;IAIP,IAAIy4B,aAAA,KAAkB,GAAtB,EAA2B;MACzBvM,GAAA,CAAIlsB,KAAJ,CAAUy4B,aAAV,EAAyBA,aAAzB;MACAiB,SAAA,IAAajB,aAAb;IAFyB;IAK3BvM,GAAA,CAAIwN,SAAJ,GAAgBA,SAAhB;IAEA,IAAIpsB,IAAA,CAAKi7B,kBAAT,EAA6B;MAC3B,MAAMC,KAAA,GAAQ,EAAd;MACA,IAAI16B,KAAA,GAAQ,CAAZ;MACA,WAAW26B,KAAX,IAAoBZ,MAApB,EAA4B;QAC1BW,KAAA,CAAMp+C,IAAN,CAAWq+C,KAAA,CAAMC,OAAjB;QACA56B,KAAA,IAAS26B,KAAA,CAAM36B,KAAf;MAF0B;MAI5Boe,GAAA,CAAI+E,QAAJ,CAAauX,KAAA,CAAMn+C,IAAN,CAAW,EAAX,CAAb,EAA6B,CAA7B,EAAgC,CAAhC;MACAioC,OAAA,CAAQje,CAAR,IAAavG,KAAA,GAAQq6B,iBAAR,GAA4BjP,UAAzC;MACAhN,GAAA,CAAIrrC,OAAJ;MACA,KAAKglD,OAAL;MAEA,OAAOr8C,SAAP;IAZ2B;IAe7B,IAAI6qB,CAAA,GAAI,CAAR;MACEvqB,CADF;IAEA,KAAKA,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIi+C,YAAhB,EAA8B,EAAEj+C,CAAhC,EAAmC;MACjC,MAAM2+C,KAAA,GAAQZ,MAAA,CAAO/9C,CAAP,CAAd;MACA,IAAI,OAAO2+C,KAAP,KAAiB,QAArB,EAA+B;QAC7Bp0B,CAAA,IAAM4zB,UAAA,GAAaQ,KAAb,GAAqBjQ,QAAtB,GAAkC,IAAvC;QACA;MAF6B;MAK/B,IAAImQ,aAAA,GAAgB,KAApB;MACA,MAAM/B,OAAA,GAAW,CAAA6B,KAAA,CAAMG,OAAN,GAAgB3P,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAM7G,SAAA,GAAYsW,KAAA,CAAMI,QAAxB;MACA,MAAMC,MAAA,GAASL,KAAA,CAAMK,MAArB;MACA,IAAIC,OAAJ,EAAaC,OAAb;MACA,IAAIl7B,KAAA,GAAQ26B,KAAA,CAAM36B,KAAlB;MACA,IAAIk6B,QAAJ,EAAc;QACZ,MAAMiB,OAAA,GAAUR,KAAA,CAAMQ,OAAN,IAAiBf,eAAjC;QACA,MAAMgB,EAAA,GACJ,EAAET,KAAA,CAAMQ,OAAN,GAAgBA,OAAA,CAAQ,CAAR,CAAhB,GAA6Bn7B,KAAA,GAAQ,GAArC,CAAF,GAA8Cq6B,iBADhD;QAEA,MAAMgB,EAAA,GAAKF,OAAA,CAAQ,CAAR,IAAad,iBAAxB;QAEAr6B,KAAA,GAAQm7B,OAAA,GAAU,CAACA,OAAA,CAAQ,CAAR,CAAX,GAAwBn7B,KAAhC;QACAi7B,OAAA,GAAUG,EAAA,GAAKzQ,aAAf;QACAuQ,OAAA,GAAW,CAAA30B,CAAA,GAAI80B,EAAJ,IAAU1Q,aAArB;MARY,CAAd,MASO;QACLsQ,OAAA,GAAU10B,CAAA,GAAIokB,aAAd;QACAuQ,OAAA,GAAU,CAAV;MAFK;MAKP,IAAI17B,IAAA,CAAK87B,SAAL,IAAkBt7B,KAAA,GAAQ,CAA9B,EAAiC;QAI/B,MAAMu7B,aAAA,GACFnd,GAAA,CAAIod,WAAJ,CAAgBnX,SAAhB,EAA2BrkB,KAA3B,GAAmC,IAApC,GAA4C0qB,QAA7C,GACAC,aAFF;QAGA,IAAI3qB,KAAA,GAAQu7B,aAAR,IAAyB,KAAKzB,uBAAlC,EAA2D;UACzD,MAAM2B,eAAA,GAAkBz7B,KAAA,GAAQu7B,aAAhC;UACAV,aAAA,GAAgB,IAAhB;UACAzc,GAAA,CAAItrC,IAAJ;UACAsrC,GAAA,CAAIlsB,KAAJ,CAAUupC,eAAV,EAA2B,CAA3B;UACAR,OAAA,IAAWQ,eAAX;QALyD,CAA3D,MAMO,IAAIz7B,KAAA,KAAUu7B,aAAd,EAA6B;UAClCN,OAAA,IACK,CAAAj7B,KAAA,GAAQu7B,aAAR,IAAyB,IAA3B,GAAmC7Q,QAApC,GAAgDC,aADlD;QADkC;MAbL;MAqBjC,IAAI,KAAK6I,cAAL,KAAwBmH,KAAA,CAAMe,QAAN,IAAkBl8B,IAAA,CAAKiiB,WAAvB,CAA5B,EAAiE;QAC/D,IAAI6Y,cAAA,IAAkB,CAACU,MAAvB,EAA+B;UAE7B5c,GAAA,CAAI+E,QAAJ,CAAakB,SAAb,EAAwB4W,OAAxB,EAAiCC,OAAjC;QAF6B,CAA/B,MAGO;UACL,KAAKzB,SAAL,CAAepV,SAAf,EAA0B4W,OAA1B,EAAmCC,OAAnC,EAA4CxB,gBAA5C;UACA,IAAIsB,MAAJ,EAAY;YACV,MAAMW,aAAA,GACJV,OAAA,GAAWvQ,QAAA,GAAWsQ,MAAA,CAAOrY,MAAP,CAAcpc,CAA1B,GAA+BokB,aAD3C;YAEA,MAAMiR,aAAA,GACJV,OAAA,GAAWxQ,QAAA,GAAWsQ,MAAA,CAAOrY,MAAP,CAAcnc,CAA1B,GAA+BmkB,aAD3C;YAEA,KAAK8O,SAAL,CACEuB,MAAA,CAAOD,QADT,EAEEY,aAFF,EAGEC,aAHF,EAIElC,gBAJF;UALU;QAFP;MAJwD;MAqBjE,IAAImC,SAAJ;MACA,IAAI3B,QAAJ,EAAc;QACZ2B,SAAA,GAAY77B,KAAA,GAAQq6B,iBAAR,GAA4BvB,OAAA,GAAUG,aAAlD;MADY,CAAd,MAEO;QACL4C,SAAA,GAAY77B,KAAA,GAAQq6B,iBAAR,GAA4BvB,OAAA,GAAUG,aAAlD;MADK;MAGP1yB,CAAA,IAAKs1B,SAAL;MAEA,IAAIhB,aAAJ,EAAmB;QACjBzc,GAAA,CAAIrrC,OAAJ;MADiB;IA7Ec;IAiFnC,IAAImnD,QAAJ,EAAc;MACZ1V,OAAA,CAAQhe,CAAR,IAAaD,CAAb;IADY,CAAd,MAEO;MACLie,OAAA,CAAQje,CAAR,IAAaA,CAAA,GAAI6kB,UAAjB;IADK;IAGPhN,GAAA,CAAIrrC,OAAJ;IACA,KAAKglD,OAAL;IAEA,OAAOr8C,SAAP;EArLe;EAwLjBs+C,cAAcD,MAAd,EAAsB;IAEpB,MAAM3b,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMoG,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMhlB,IAAA,GAAOglB,OAAA,CAAQhlB,IAArB;IACA,MAAMkrB,QAAA,GAAWlG,OAAA,CAAQkG,QAAzB;IACA,MAAMuO,aAAA,GAAgBzU,OAAA,CAAQyU,aAA9B;IACA,MAAMkB,UAAA,GAAa36B,IAAA,CAAK06B,QAAL,GAAgB,CAAhB,GAAoB,CAAC,CAAxC;IACA,MAAMhP,WAAA,GAAc1G,OAAA,CAAQ0G,WAA5B;IACA,MAAMC,WAAA,GAAc3G,OAAA,CAAQ2G,WAA5B;IACA,MAAMC,UAAA,GAAa5G,OAAA,CAAQ4G,UAAR,GAAqB6N,aAAxC;IACA,MAAMnO,UAAA,GAAatG,OAAA,CAAQsG,UAAR,IAAsB1hD,0BAAzC;IACA,MAAM6wD,YAAA,GAAeF,MAAA,CAAOtgD,MAA5B;IACA,MAAMqiD,eAAA,GACJtX,OAAA,CAAQ6G,iBAAR,KAA8Bz/C,uBAAA,CAAkBI,SADlD;IAEA,IAAIgQ,CAAJ,EAAO2+C,KAAP,EAAc36B,KAAd,EAAqB+7B,aAArB;IAEA,IAAID,eAAA,IAAmBpR,QAAA,KAAa,CAApC,EAAuC;MACrC;IADqC;IAGvC,KAAKoJ,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IACA,KAAKC,0BAAL,GAAkC,IAAlC;IAEA3V,GAAA,CAAItrC,IAAJ;IACAsrC,GAAA,CAAIprC,SAAJ,CAAc,GAAGwxC,OAAA,CAAQoG,UAAzB;IACAxM,GAAA,CAAInV,SAAJ,CAAcub,OAAA,CAAQje,CAAtB,EAAyBie,OAAA,CAAQhe,CAAjC;IAEA4X,GAAA,CAAIlsB,KAAJ,CAAUk5B,UAAV,EAAsB6N,aAAtB;IAEA,KAAKj9C,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIi+C,YAAhB,EAA8B,EAAEj+C,CAAhC,EAAmC;MACjC2+C,KAAA,GAAQZ,MAAA,CAAO/9C,CAAP,CAAR;MACA,IAAI,OAAO2+C,KAAP,KAAiB,QAArB,EAA+B;QAC7BoB,aAAA,GAAiB5B,UAAA,GAAaQ,KAAb,GAAqBjQ,QAAtB,GAAkC,IAAlD;QACA,KAAKtM,GAAL,CAASnV,SAAT,CAAmB8yB,aAAnB,EAAkC,CAAlC;QACAvX,OAAA,CAAQje,CAAR,IAAaw1B,aAAA,GAAgB3Q,UAA7B;QACA;MAJ6B;MAO/B,MAAM0N,OAAA,GAAW,CAAA6B,KAAA,CAAMG,OAAN,GAAgB3P,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAM/2B,YAAA,GAAeqL,IAAA,CAAKw8B,oBAAL,CAA0BrB,KAAA,CAAMsB,cAAhC,CAArB;MACA,IAAI,CAAC9nC,YAAL,EAAmB;QACjB,IAAAzb,UAAA,EAAM,oBAAmBiiD,KAAA,CAAMsB,cAAe,qBAA9C;QACA;MAFiB;MAInB,IAAI,KAAKzI,cAAT,EAAyB;QACvB,KAAKR,eAAL,GAAuB2H,KAAvB;QACA,KAAK7nD,IAAL;QACAsrC,GAAA,CAAIlsB,KAAJ,CAAUw4B,QAAV,EAAoBA,QAApB;QACAtM,GAAA,CAAIprC,SAAJ,CAAc,GAAG83C,UAAjB;QACA,KAAKnoB,mBAAL,CAAyBxO,YAAzB;QACA,KAAKphB,OAAL;MANuB;MASzB,MAAMmpD,WAAA,GAAc39C,UAAA,CAAKU,cAAL,CAAoB,CAAC07C,KAAA,CAAM36B,KAAP,EAAc,CAAd,CAApB,EAAsC8qB,UAAtC,CAApB;MACA9qB,KAAA,GAAQk8B,WAAA,CAAY,CAAZ,IAAiBxR,QAAjB,GAA4BoO,OAApC;MAEA1a,GAAA,CAAInV,SAAJ,CAAcjJ,KAAd,EAAqB,CAArB;MACAwkB,OAAA,CAAQje,CAAR,IAAavG,KAAA,GAAQorB,UAArB;IA5BiC;IA8BnChN,GAAA,CAAIrrC,OAAJ;IACA,KAAKigD,eAAL,GAAuB,IAAvB;EA5DoB;EAgEtB59C,aAAa+mD,MAAb,EAAqBC,MAArB,EAA6B;EAK7B/mD,sBAAsB8mD,MAAtB,EAA8BC,MAA9B,EAAsCC,GAAtC,EAA2CC,GAA3C,EAAgDC,GAAhD,EAAqDC,GAArD,EAA0D;IACxD,KAAKpe,GAAL,CAAS19B,IAAT,CAAc27C,GAAd,EAAmBC,GAAnB,EAAwBC,GAAA,GAAMF,GAA9B,EAAmCG,GAAA,GAAMF,GAAzC;IACA,KAAKle,GAAL,CAASnqC,IAAT;IACA,KAAKD,OAAL;EAHwD;EAO1DyoD,kBAAkBC,EAAlB,EAAsB;IACpB,IAAInC,OAAJ;IACA,IAAImC,EAAA,CAAG,CAAH,MAAU,eAAd,EAA+B;MAC7B,MAAMvuB,KAAA,GAAQuuB,EAAA,CAAG,CAAH,CAAd;MACA,MAAMzJ,aAAA,GAAgB,KAAKA,aAAL,IAAsB,IAAA9U,kCAAA,EAAoB,KAAKC,GAAzB,CAA5C;MACA,MAAMue,qBAAA,GAAwB;QAC5BC,oBAAA,EAAsBxe,GAAA,IAAO;UAC3B,OAAO,IAAI9b,cAAJ,CACL8b,GADK,EAEL,KAAK3sB,UAFA,EAGL,KAAKC,IAHA,EAIL,KAAK1H,aAJA,EAKL,KAAKC,aALA,EAML;YACEwL,qBAAA,EAAuB,KAAKA,qBAD9B;YAEEg9B,kBAAA,EAAoB,KAAKA;UAF3B,CANK,CAAP;QAD2B;MADD,CAA9B;MAeA8H,OAAA,GAAU,IAAIsC,6BAAJ,CACRH,EADQ,EAERvuB,KAFQ,EAGR,KAAKiQ,GAHG,EAIRue,qBAJQ,EAKR1J,aALQ,CAAV;IAlB6B,CAA/B,MAyBO;MACLsH,OAAA,GAAU,KAAKuC,WAAL,CAAiBJ,EAAA,CAAG,CAAH,CAAjB,EAAwBA,EAAA,CAAG,CAAH,CAAxB,CAAV;IADK;IAGP,OAAOnC,OAAP;EA9BoB;EAiCtB9kD,gBAAA,EAAkB;IAChB,KAAK+uC,OAAL,CAAagH,WAAb,GAA2B,KAAKiR,iBAAL,CAAuBM,SAAvB,CAA3B;EADgB;EAIlBpnD,cAAA,EAAgB;IACd,KAAK6uC,OAAL,CAAa+G,SAAb,GAAyB,KAAKkR,iBAAL,CAAuBM,SAAvB,CAAzB;IACA,KAAKvY,OAAL,CAAaiH,WAAb,GAA2B,IAA3B;EAFc;EAKhB31C,kBAAkB2I,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,EAA2B;IACzB,MAAMwvB,KAAA,GAAQ5vB,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAAd;IACA,KAAKy/B,GAAL,CAASmR,WAAT,GAAuBphB,KAAvB;IACA,KAAKqW,OAAL,CAAagH,WAAb,GAA2Brd,KAA3B;EAHyB;EAM3Bp4B,gBAAgB0I,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,MAAMwvB,KAAA,GAAQ5vB,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAAd;IACA,KAAKy/B,GAAL,CAASoR,SAAT,GAAqBrhB,KAArB;IACA,KAAKqW,OAAL,CAAa+G,SAAb,GAAyBpd,KAAzB;IACA,KAAKqW,OAAL,CAAaiH,WAAb,GAA2B,KAA3B;EAJuB;EAOzBqR,YAAYl8B,KAAZ,EAAmBo8B,MAAA,GAAS,IAA5B,EAAkC;IAChC,IAAIzC,OAAJ;IACA,IAAI,KAAK7G,cAAL,CAAoBj5B,GAApB,CAAwBmG,KAAxB,CAAJ,EAAoC;MAClC25B,OAAA,GAAU,KAAK7G,cAAL,CAAoBvuC,GAApB,CAAwByb,KAAxB,CAAV;IADkC,CAApC,MAEO;MACL25B,OAAA,GAAU,IAAA0C,iCAAA,EAAkB,KAAKhJ,SAAL,CAAerzB,KAAf,CAAlB,CAAV;MACA,KAAK8yB,cAAL,CAAoB5/B,GAApB,CAAwB8M,KAAxB,EAA+B25B,OAA/B;IAFK;IAIP,IAAIyC,MAAJ,EAAY;MACVzC,OAAA,CAAQyC,MAAR,GAAiBA,MAAjB;IADU;IAGZ,OAAOzC,OAAP;EAXgC;EAclCrkD,YAAY0qB,KAAZ,EAAmB;IACjB,IAAI,CAAC,KAAK4yB,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMpV,GAAA,GAAM,KAAKA,GAAjB;IAEA,KAAKtrC,IAAL;IACA,MAAMynD,OAAA,GAAU,KAAKuC,WAAL,CAAiBl8B,KAAjB,CAAhB;IACAwd,GAAA,CAAIoR,SAAJ,GAAgB+K,OAAA,CAAQnD,UAAR,CACdhZ,GADc,EAEd,IAFc,EAGd,IAAAI,yCAAA,EAA2BJ,GAA3B,CAHc,EAIdyO,wBAAA,CAASqQ,OAJK,CAAhB;IAOA,MAAMC,GAAA,GAAM,IAAA3e,yCAAA,EAA2BJ,GAA3B,CAAZ;IACA,IAAI+e,GAAJ,EAAS;MACP,MAAM;QAAEn9B,KAAF;QAASC;MAAT,IAAoBme,GAAA,CAAIpd,MAA9B;MACA,MAAM,CAAC7f,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmB/C,UAAA,CAAKiB,0BAAL,CACvB,CAAC,CAAD,EAAI,CAAJ,EAAOwgB,KAAP,EAAcC,MAAd,CADuB,EAEvBk9B,GAFuB,CAAzB;MAKA,KAAK/e,GAAL,CAASgW,QAAT,CAAkBjzC,EAAlB,EAAsBC,EAAtB,EAA0BC,EAAA,GAAKF,EAA/B,EAAmCG,EAAA,GAAKF,EAAxC;IAPO,CAAT,MAQO;MAOL,KAAKg9B,GAAL,CAASgW,QAAT,CAAkB,CAAC,IAAnB,EAAyB,CAAC,IAA1B,EAAgC,IAAhC,EAAsC,IAAtC;IAPK;IAUP,KAAK2D,OAAL,CAAa,KAAKvT,OAAL,CAAa2I,yBAAb,EAAb;IACA,KAAKp6C,OAAL;EAnCiB;EAuCnBoD,iBAAA,EAAmB;IACjB,IAAAwC,iBAAA,EAAY,kCAAZ;EADiB;EAInBvC,eAAA,EAAiB;IACf,IAAAuC,iBAAA,EAAY,gCAAZ;EADe;EAIjB7B,sBAAsBkmD,MAAtB,EAA8BI,IAA9B,EAAoC;IAClC,IAAI,CAAC,KAAK5J,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAK1gD,IAAL;IACA,KAAKogD,kBAAL,CAAwB52C,IAAxB,CAA6B,KAAK22C,aAAlC;IAEA,IAAI90C,KAAA,CAAM6zB,OAAN,CAAcgrB,MAAd,KAAyBA,MAAA,CAAOvjD,MAAP,KAAkB,CAA/C,EAAkD;MAChD,KAAKzG,SAAL,CAAe,GAAGgqD,MAAlB;IADgD;IAIlD,KAAK/J,aAAL,GAAqB,IAAA9U,kCAAA,EAAoB,KAAKC,GAAzB,CAArB;IAEA,IAAIgf,IAAJ,EAAU;MACR,MAAMp9B,KAAA,GAAQo9B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAMn9B,MAAA,GAASm9B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MACA,KAAKhf,GAAL,CAAS19B,IAAT,CAAc08C,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB,EAAgCp9B,KAAhC,EAAuCC,MAAvC;MACA,KAAKukB,OAAL,CAAa+H,gBAAb,CAA8B,IAAApO,kCAAA,EAAoB,KAAKC,GAAzB,CAA9B,EAA6Dgf,IAA7D;MACA,KAAKnpD,IAAL;MACA,KAAKD,OAAL;IANQ;EAbwB;EAuBpC+C,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAKy8C,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKzgD,OAAL;IACA,KAAKkgD,aAAL,GAAqB,KAAKC,kBAAL,CAAwBgF,GAAxB,EAArB;EALoB;EAQtBlhD,WAAWqmD,KAAX,EAAkB;IAChB,IAAI,CAAC,KAAK7J,cAAV,EAA0B;MACxB;IADwB;IAI1B,KAAK1gD,IAAL;IAGA,IAAI,KAAKmiD,WAAT,EAAsB;MACpB,KAAK2C,YAAL;MACA,KAAKpT,OAAL,CAAaqH,WAAb,GAA2B,IAA3B;IAFoB;IAKtB,MAAMyR,UAAA,GAAa,KAAKlf,GAAxB;IAcA,IAAI,CAACif,KAAA,CAAME,QAAX,EAAqB;MACnB,IAAAjlD,UAAA,EAAK,oCAAL;IADmB;IAMrB,IAAI+kD,KAAA,CAAMG,QAAV,EAAoB;MAClB,IAAA9kD,UAAA,EAAK,gCAAL;IADkB;IAIpB,MAAM49C,gBAAA,GAAmB,IAAAnY,kCAAA,EAAoBmf,UAApB,CAAzB;IACA,IAAID,KAAA,CAAML,MAAV,EAAkB;MAChBM,UAAA,CAAWtqD,SAAX,CAAqB,GAAGqqD,KAAA,CAAML,MAA9B;IADgB;IAGlB,IAAI,CAACK,KAAA,CAAMD,IAAX,EAAiB;MACf,MAAM,IAAIxkD,KAAJ,CAAU,2BAAV,CAAN;IADe;IAMjB,IAAIgJ,MAAA,GAASrD,UAAA,CAAKiB,0BAAL,CACX69C,KAAA,CAAMD,IADK,EAEX,IAAAjf,kCAAA,EAAoBmf,UAApB,CAFW,CAAb;IAKA,MAAMG,YAAA,GAAe,CACnB,CADmB,EAEnB,CAFmB,EAGnBH,UAAA,CAAWt8B,MAAX,CAAkBhB,KAHC,EAInBs9B,UAAA,CAAWt8B,MAAX,CAAkBf,MAJC,CAArB;IAMAre,MAAA,GAASrD,UAAA,CAAKoC,SAAL,CAAeiB,MAAf,EAAuB67C,YAAvB,KAAwC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAjD;IAGA,MAAMrrC,OAAA,GAAUlW,IAAA,CAAKg6C,KAAL,CAAWt0C,MAAA,CAAO,CAAP,CAAX,CAAhB;IACA,MAAMyQ,OAAA,GAAUnW,IAAA,CAAKg6C,KAAL,CAAWt0C,MAAA,CAAO,CAAP,CAAX,CAAhB;IACA,IAAIk1C,UAAA,GAAa56C,IAAA,CAAK4D,GAAL,CAAS5D,IAAA,CAAKq1C,IAAL,CAAU3vC,MAAA,CAAO,CAAP,CAAV,IAAuBwQ,OAAhC,EAAyC,CAAzC,CAAjB;IACA,IAAI2kC,WAAA,GAAc76C,IAAA,CAAK4D,GAAL,CAAS5D,IAAA,CAAKq1C,IAAL,CAAU3vC,MAAA,CAAO,CAAP,CAAV,IAAuByQ,OAAhC,EAAyC,CAAzC,CAAlB;IACA,IAAI42B,MAAA,GAAS,CAAb;MACEE,MAAA,GAAS,CADX;IAEA,IAAI2N,UAAA,GAAa5R,cAAjB,EAAiC;MAC/B+D,MAAA,GAAS6N,UAAA,GAAa5R,cAAtB;MACA4R,UAAA,GAAa5R,cAAb;IAF+B;IAIjC,IAAI6R,WAAA,GAAc7R,cAAlB,EAAkC;MAChCiE,MAAA,GAAS4N,WAAA,GAAc7R,cAAvB;MACA6R,WAAA,GAAc7R,cAAd;IAFgC;IAKlC,KAAKV,OAAL,CAAauH,sBAAb,CAAoC,CAAC,CAAD,EAAI,CAAJ,EAAO+K,UAAP,EAAmBC,WAAnB,CAApC;IAEA,IAAIc,OAAA,GAAU,YAAY,KAAK1E,UAA/B;IACA,IAAIkK,KAAA,CAAM1L,KAAV,EAAiB;MAEfkG,OAAA,IAAW,YAAa,KAAKxE,YAAL,KAAsB,CAA9C;IAFe;IAIjB,MAAMyE,aAAA,GAAgB,KAAKrE,cAAL,CAAoB9L,SAApB,CACpBkQ,OADoB,EAEpBf,UAFoB,EAGpBC,WAHoB,CAAtB;IAKA,MAAM2G,QAAA,GAAW5F,aAAA,CAAc/Y,OAA/B;IAIA2e,QAAA,CAASxrC,KAAT,CAAe,IAAI+2B,MAAnB,EAA2B,IAAIE,MAA/B;IACAuU,QAAA,CAASz0B,SAAT,CAAmB,CAAC7W,OAApB,EAA6B,CAACC,OAA9B;IACAqrC,QAAA,CAAS1qD,SAAT,CAAmB,GAAGsjD,gBAAtB;IAEA,IAAI+G,KAAA,CAAM1L,KAAV,EAAiB;MAEf,KAAKyB,UAAL,CAAgB92C,IAAhB,CAAqB;QACnB0kB,MAAA,EAAQ82B,aAAA,CAAc92B,MADH;QAEnB+d,OAAA,EAAS2e,QAFU;QAGnBtrC,OAHmB;QAInBC,OAJmB;QAKnB42B,MALmB;QAMnBE,MANmB;QAOnB0H,OAAA,EAASwM,KAAA,CAAM1L,KAAN,CAAYd,OAPF;QAQnBC,QAAA,EAAUuM,KAAA,CAAM1L,KAAN,CAAYb,QARH;QASnBN,WAAA,EAAa6M,KAAA,CAAM1L,KAAN,CAAYnB,WAAZ,IAA2B,IATrB;QAUnBmN,qBAAA,EAAuB;MAVJ,CAArB;IAFe,CAAjB,MAcO;MAGLL,UAAA,CAAWrX,YAAX,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC;MACAqX,UAAA,CAAWr0B,SAAX,CAAqB7W,OAArB,EAA8BC,OAA9B;MACAirC,UAAA,CAAWprC,KAAX,CAAiB+2B,MAAjB,EAAyBE,MAAzB;MACAmU,UAAA,CAAWxqD,IAAX;IANK;IAUPi8C,YAAA,CAAauO,UAAb,EAAyBI,QAAzB;IACA,KAAKtf,GAAL,GAAWsf,QAAX;IACA,KAAK7qD,SAAL,CAAe,CACb,CAAC,IAAD,EAAO,aAAP,CADa,EAEb,CAAC,IAAD,EAAO,CAAP,CAFa,EAGb,CAAC,IAAD,EAAO,CAAP,CAHa,CAAf;IAKA,KAAKkgD,UAAL,CAAgBz2C,IAAhB,CAAqBghD,UAArB;IACA,KAAKnK,UAAL;EAhIgB;EAmIlBl8C,SAASomD,KAAT,EAAgB;IACd,IAAI,CAAC,KAAK7J,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKL,UAAL;IACA,MAAMuK,QAAA,GAAW,KAAKtf,GAAtB;IACA,MAAMA,GAAA,GAAM,KAAK2U,UAAL,CAAgBmF,GAAhB,EAAZ;IACA,KAAK9Z,GAAL,GAAWA,GAAX;IAGA,KAAKA,GAAL,CAAS8Y,qBAAT,GAAiC,KAAjC;IAEA,IAAImG,KAAA,CAAM1L,KAAV,EAAiB;MACf,KAAK2B,SAAL,GAAiB,KAAKF,UAAL,CAAgB8E,GAAhB,EAAjB;MACA,KAAKnlD,OAAL;IAFe,CAAjB,MAGO;MACL,KAAKqrC,GAAL,CAASrrC,OAAT;MACA,MAAM6qD,UAAA,GAAa,IAAAzf,kCAAA,EAAoB,KAAKC,GAAzB,CAAnB;MACA,KAAKrrC,OAAL;MACA,KAAKqrC,GAAL,CAAStrC,IAAT;MACA,KAAKsrC,GAAL,CAAS6H,YAAT,CAAsB,GAAG2X,UAAzB;MACA,MAAM5F,QAAA,GAAWz5C,UAAA,CAAKiB,0BAAL,CACf,CAAC,CAAD,EAAI,CAAJ,EAAOk+C,QAAA,CAAS18B,MAAT,CAAgBhB,KAAvB,EAA8B09B,QAAA,CAAS18B,MAAT,CAAgBf,MAA9C,CADe,EAEf29B,UAFe,CAAjB;MAIA,KAAKxf,GAAL,CAAS4K,SAAT,CAAmB0U,QAAA,CAAS18B,MAA5B,EAAoC,CAApC,EAAuC,CAAvC;MACA,KAAKod,GAAL,CAASrrC,OAAT;MACA,KAAKglD,OAAL,CAAaC,QAAb;IAZK;EAfO;EA+BhB9gD,gBAAgBkY,EAAhB,EAAoB1O,IAApB,EAA0B1N,SAA1B,EAAqCgqD,MAArC,EAA6Ca,YAA7C,EAA2D;IAKzD,KAAK,CAAA7I,mBAAL;IACA1F,iBAAA,CAAkB,KAAKlR,GAAvB;IAEA,KAAKA,GAAL,CAAStrC,IAAT;IACA,KAAKA,IAAL;IAEA,IAAI,KAAKmgD,aAAT,EAAwB;MACtB,KAAK7U,GAAL,CAAS6H,YAAT,CAAsB,GAAG,KAAKgN,aAA9B;IADsB;IAIxB,IAAI90C,KAAA,CAAM6zB,OAAN,CAActxB,IAAd,KAAuBA,IAAA,CAAKjH,MAAL,KAAgB,CAA3C,EAA8C;MAC5C,MAAMumB,KAAA,GAAQtf,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAMuf,MAAA,GAASvf,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MAEA,IAAIm9C,YAAA,IAAgB,KAAKtqC,mBAAzB,EAA8C;QAC5CvgB,SAAA,GAAYA,SAAA,CAAU2M,KAAV,EAAZ;QACA3M,SAAA,CAAU,CAAV,KAAgB0N,IAAA,CAAK,CAAL,CAAhB;QACA1N,SAAA,CAAU,CAAV,KAAgB0N,IAAA,CAAK,CAAL,CAAhB;QAEAA,IAAA,GAAOA,IAAA,CAAKf,KAAL,EAAP;QACAe,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,IAAU,CAApB;QACAA,IAAA,CAAK,CAAL,IAAUsf,KAAV;QACAtf,IAAA,CAAK,CAAL,IAAUuf,MAAV;QAEA,MAAM,CAACgpB,MAAD,EAASE,MAAT,IAAmB5qC,UAAA,CAAKyB,6BAAL,CACvB,IAAAm+B,kCAAA,EAAoB,KAAKC,GAAzB,CADuB,CAAzB;QAGA,MAAM;UAAEuV;QAAF,IAAoB,IAA1B;QACA,MAAMmK,WAAA,GAAc5hD,IAAA,CAAKq1C,IAAL,CAClBvxB,KAAA,GAAQ,KAAK4zB,YAAb,GAA4BD,aADV,CAApB;QAGA,MAAMoK,YAAA,GAAe7hD,IAAA,CAAKq1C,IAAL,CACnBtxB,MAAA,GAAS,KAAK4zB,YAAd,GAA6BF,aADV,CAArB;QAIA,KAAKqK,gBAAL,GAAwB,KAAKh0C,aAAL,CAAmB/M,MAAnB,CACtB6gD,WADsB,EAEtBC,YAFsB,CAAxB;QAIA,MAAM;UAAE/8B,MAAF;UAAU+d;QAAV,IAAsB,KAAKif,gBAAjC;QACA,KAAKzqC,mBAAL,CAAyBO,GAAzB,CAA6B1E,EAA7B,EAAiC4R,MAAjC;QACA,KAAKg9B,gBAAL,CAAsBC,QAAtB,GAAiC,KAAK7f,GAAtC;QACA,KAAKA,GAAL,GAAWW,OAAX;QACA,KAAKX,GAAL,CAAStrC,IAAT;QACA,KAAKsrC,GAAL,CAAS6H,YAAT,CAAsBgD,MAAtB,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAACE,MAArC,EAA6C,CAA7C,EAAgDlpB,MAAA,GAASkpB,MAAzD;QAEAmG,iBAAA,CAAkB,KAAKlR,GAAvB;MAhC4C,CAA9C,MAiCO;QACLkR,iBAAA,CAAkB,KAAKlR,GAAvB;QAEA,KAAKA,GAAL,CAAS19B,IAAT,CAAcA,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB,EAAgCsf,KAAhC,EAAuCC,MAAvC;QACA,KAAKme,GAAL,CAASnqC,IAAT;QACA,KAAKD,OAAL;MALK;IArCqC;IA8C9C,KAAKwwC,OAAL,GAAe,IAAIgG,gBAAJ,CACb,KAAKpM,GAAL,CAASpd,MAAT,CAAgBhB,KADH,EAEb,KAAKoe,GAAL,CAASpd,MAAT,CAAgBf,MAFH,CAAf;IAKA,KAAKjtB,SAAL,CAAe,GAAGA,SAAlB;IACA,KAAKA,SAAL,CAAe,GAAGgqD,MAAlB;EAnEyD;EAsE3D7lD,cAAA,EAAgB;IACd,IAAI,KAAK6mD,gBAAT,EAA2B;MACzB,KAAK5f,GAAL,CAASrrC,OAAT;MACA,KAAK,CAAAoiD,UAAL;MAEA,KAAK/W,GAAL,GAAW,KAAK4f,gBAAL,CAAsBC,QAAjC;MACA,OAAO,KAAKD,gBAAL,CAAsBC,QAA7B;MACA,OAAO,KAAKD,gBAAZ;IANyB;EADb;EAWhB5mD,sBAAsBo+C,GAAtB,EAA2B;IACzB,IAAI,CAAC,KAAKhC,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMzJ,KAAA,GAAQyL,GAAA,CAAIzL,KAAlB;IACAyL,GAAA,GAAM,KAAKvB,SAAL,CAAeuB,GAAA,CAAI9wC,IAAnB,EAAyB8wC,GAAzB,CAAN;IACAA,GAAA,CAAIzL,KAAJ,GAAYA,KAAZ;IAEA,MAAM3L,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMuc,KAAA,GAAQ,KAAK3H,eAAnB;IAEA,IAAI2H,KAAJ,EAAW;MACT,IAAIA,KAAA,CAAMuD,QAAN,KAAmBxiD,SAAvB,EAAkC;QAChCi/C,KAAA,CAAMuD,QAAN,GAAiB9U,iBAAA,CAAkBoM,GAAlB,CAAjB;MADgC;MAIlC,IAAImF,KAAA,CAAMuD,QAAV,EAAoB;QAClBvD,KAAA,CAAMuD,QAAN,CAAe9f,GAAf;QACA;MAFkB;IALX;IAUX,MAAM0L,IAAA,GAAO,KAAKsM,iBAAL,CAAuBZ,GAAvB,CAAb;IACA,MAAMgB,UAAA,GAAa1M,IAAA,CAAK9oB,MAAxB;IAEAod,GAAA,CAAItrC,IAAJ;IAGAsrC,GAAA,CAAI6H,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;IACA7H,GAAA,CAAI4K,SAAJ,CAAcwN,UAAd,EAA0B1M,IAAA,CAAK13B,OAA/B,EAAwC03B,IAAA,CAAKz3B,OAA7C;IACA+rB,GAAA,CAAIrrC,OAAJ;IACA,KAAKglD,OAAL;EA9ByB;EAiC3BrgD,4BACE89C,GADF,EAEEvM,MAFF,EAGEkV,KAAA,GAAQ,CAHV,EAIEC,KAAA,GAAQ,CAJV,EAKEjV,MALF,EAMEkV,SANF,EAOE;IACA,IAAI,CAAC,KAAK7K,cAAV,EAA0B;MACxB;IADwB;IAI1BgC,GAAA,GAAM,KAAKvB,SAAL,CAAeuB,GAAA,CAAI9wC,IAAnB,EAAyB8wC,GAAzB,CAAN;IAEA,MAAMpX,GAAA,GAAM,KAAKA,GAAjB;IACAA,GAAA,CAAItrC,IAAJ;IACA,MAAMwjD,gBAAA,GAAmB,IAAAnY,kCAAA,EAAoBC,GAApB,CAAzB;IACAA,GAAA,CAAIprC,SAAJ,CAAci2C,MAAd,EAAsBkV,KAAtB,EAA6BC,KAA7B,EAAoCjV,MAApC,EAA4C,CAA5C,EAA+C,CAA/C;IACA,MAAMW,IAAA,GAAO,KAAKsM,iBAAL,CAAuBZ,GAAvB,CAAb;IAEApX,GAAA,CAAI6H,YAAJ,CACE,CADF,EAEE,CAFF,EAGE,CAHF,EAIE,CAJF,EAKE6D,IAAA,CAAK13B,OAAL,GAAekkC,gBAAA,CAAiB,CAAjB,CALjB,EAMExM,IAAA,CAAKz3B,OAAL,GAAeikC,gBAAA,CAAiB,CAAjB,CANjB;IAQA,KAAK,IAAIt6C,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKu7C,SAAA,CAAU5kD,MAA1B,EAAkCuC,CAAA,GAAI8G,EAA3C,EAA+C9G,CAAA,IAAK,CAApD,EAAuD;MACrD,MAAMsiD,KAAA,GAAQ//C,UAAA,CAAKvL,SAAL,CAAesjD,gBAAf,EAAiC,CAC7CrN,MAD6C,EAE7CkV,KAF6C,EAG7CC,KAH6C,EAI7CjV,MAJ6C,EAK7CkV,SAAA,CAAUriD,CAAV,CAL6C,EAM7CqiD,SAAA,CAAUriD,CAAA,GAAI,CAAd,CAN6C,CAAjC,CAAd;MASA,MAAM,CAACuqB,CAAD,EAAIC,CAAJ,IAASjoB,UAAA,CAAKU,cAAL,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB,EAA4Bq/C,KAA5B,CAAf;MACAlgB,GAAA,CAAI4K,SAAJ,CAAcc,IAAA,CAAK9oB,MAAnB,EAA2BuF,CAA3B,EAA8BC,CAA9B;IAXqD;IAavD4X,GAAA,CAAIrrC,OAAJ;IACA,KAAKglD,OAAL;EAnCA;EAsCF1gD,2BAA2BknD,MAA3B,EAAmC;IACjC,IAAI,CAAC,KAAK/K,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMpV,GAAA,GAAM,KAAKA,GAAjB;IAEA,MAAMmN,SAAA,GAAY,KAAK/G,OAAL,CAAa+G,SAA/B;IACA,MAAM8K,aAAA,GAAgB,KAAK7R,OAAL,CAAaiH,WAAnC;IAEA,WAAW+S,KAAX,IAAoBD,MAApB,EAA4B;MAC1B,MAAM;QAAE75C,IAAF;QAAQsb,KAAR;QAAeC,MAAf;QAAuBjtB;MAAvB,IAAqCwrD,KAA3C;MAEA,MAAMhI,UAAA,GAAa,KAAK/C,cAAL,CAAoB9L,SAApB,CACjB,YADiB,EAEjB3nB,KAFiB,EAGjBC,MAHiB,CAAnB;MAKA,MAAM0wB,OAAA,GAAU6F,UAAA,CAAWzX,OAA3B;MACA4R,OAAA,CAAQ79C,IAAR;MAEA,MAAM0iD,GAAA,GAAM,KAAKvB,SAAL,CAAevvC,IAAf,EAAqB85C,KAArB,CAAZ;MACA5P,kBAAA,CAAmB+B,OAAnB,EAA4B6E,GAA5B;MAEA7E,OAAA,CAAQb,wBAAR,GAAmC,WAAnC;MAEAa,OAAA,CAAQnB,SAAR,GAAoB6G,aAAA,GAChB9K,SAAA,CAAU6L,UAAV,CACEzG,OADF,EAEE,IAFF,EAGE,IAAAnS,yCAAA,EAA2BJ,GAA3B,CAHF,EAIEyO,wBAAA,CAAShhD,IAJX,CADgB,GAOhB0/C,SAPJ;MAQAoF,OAAA,CAAQyD,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuBp0B,KAAvB,EAA8BC,MAA9B;MAEA0wB,OAAA,CAAQ59C,OAAR;MAEAqrC,GAAA,CAAItrC,IAAJ;MACAsrC,GAAA,CAAIprC,SAAJ,CAAc,GAAGA,SAAjB;MACAorC,GAAA,CAAIlsB,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd;MACA21B,wBAAA,CACEzJ,GADF,EAEEoY,UAAA,CAAWx1B,MAFb,EAGE,CAHF,EAIE,CAJF,EAKEhB,KALF,EAMEC,MANF,EAOE,CAPF,EAQE,CAAC,CARH,EASE,CATF,EAUE,CAVF;MAYAme,GAAA,CAAIrrC,OAAJ;IA3C0B;IA6C5B,KAAKglD,OAAL;EAtDiC;EAyDnCzgD,kBAAkBspB,KAAlB,EAAyB;IACvB,IAAI,CAAC,KAAK4yB,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMnK,OAAA,GAAU,KAAK4K,SAAL,CAAerzB,KAAf,CAAhB;IACA,IAAI,CAACyoB,OAAL,EAAc;MACZ,IAAA3wC,UAAA,EAAK,iCAAL;MACA;IAFY;IAKd,KAAKnB,uBAAL,CAA6B8xC,OAA7B;EAVuB;EAazB5xC,wBAAwBmpB,KAAxB,EAA+BqoB,MAA/B,EAAuCE,MAAvC,EAA+CkV,SAA/C,EAA0D;IACxD,IAAI,CAAC,KAAK7K,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMnK,OAAA,GAAU,KAAK4K,SAAL,CAAerzB,KAAf,CAAhB;IACA,IAAI,CAACyoB,OAAL,EAAc;MACZ,IAAA3wC,UAAA,EAAK,iCAAL;MACA;IAFY;IAKd,MAAMsnB,KAAA,GAAQqpB,OAAA,CAAQrpB,KAAtB;IACA,MAAMC,MAAA,GAASopB,OAAA,CAAQppB,MAAvB;IACA,MAAMjjB,GAAA,GAAM,EAAZ;IACA,KAAK,IAAIhB,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKu7C,SAAA,CAAU5kD,MAA1B,EAAkCuC,CAAA,GAAI8G,EAA3C,EAA+C9G,CAAA,IAAK,CAApD,EAAuD;MACrDgB,GAAA,CAAIV,IAAJ,CAAS;QACPtJ,SAAA,EAAW,CAACi2C,MAAD,EAAS,CAAT,EAAY,CAAZ,EAAeE,MAAf,EAAuBkV,SAAA,CAAUriD,CAAV,CAAvB,EAAqCqiD,SAAA,CAAUriD,CAAA,GAAI,CAAd,CAArC,CADJ;QAEPuqB,CAAA,EAAG,CAFI;QAGPC,CAAA,EAAG,CAHI;QAIPi4B,CAAA,EAAGz+B,KAJI;QAKP0+B,CAAA,EAAGz+B;MALI,CAAT;IADqD;IASvD,KAAKzoB,4BAAL,CAAkC6xC,OAAlC,EAA2CrsC,GAA3C;EAtBwD;EAyB1D2hD,0BAA0BvgB,GAA1B,EAA+B;IAC7B,IAAI,KAAKoG,OAAL,CAAasH,YAAb,KAA8B,MAAlC,EAA0C;MACxC1N,GAAA,CAAI9H,MAAJ,GAAa,KAAKkO,OAAL,CAAasH,YAA1B;MACA1N,GAAA,CAAI4K,SAAJ,CAAc5K,GAAA,CAAIpd,MAAlB,EAA0B,CAA1B,EAA6B,CAA7B;MACAod,GAAA,CAAI9H,MAAJ,GAAa,MAAb;IAHwC;IAK1C,OAAO8H,GAAA,CAAIpd,MAAX;EAN6B;EAS/B49B,0BAA0BvV,OAA1B,EAAmC;IACjC,IAAI,KAAK7E,OAAL,CAAasH,YAAb,KAA8B,MAAlC,EAA0C;MACxC,OAAOzC,OAAA,CAAQtpB,MAAf;IADwC;IAG1C,MAAM;MAAEA,MAAF;MAAUC,KAAV;MAAiBC;IAAjB,IAA4BopB,OAAlC;IACA,MAAMyM,SAAA,GAAY,KAAKrC,cAAL,CAAoB9L,SAApB,CAChB,aADgB,EAEhB3nB,KAFgB,EAGhBC,MAHgB,CAAlB;IAKA,MAAM81B,MAAA,GAASD,SAAA,CAAU/W,OAAzB;IACAgX,MAAA,CAAOzf,MAAP,GAAgB,KAAKkO,OAAL,CAAasH,YAA7B;IACAiK,MAAA,CAAO/M,SAAP,CAAiBjpB,MAAjB,EAAyB,CAAzB,EAA4B,CAA5B;IACAg2B,MAAA,CAAOzf,MAAP,GAAgB,MAAhB;IAEA,OAAOwf,SAAA,CAAU90B,MAAjB;EAfiC;EAkBnCzpB,wBAAwB8xC,OAAxB,EAAiC;IAC/B,IAAI,CAAC,KAAKmK,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMxzB,KAAA,GAAQqpB,OAAA,CAAQrpB,KAAtB;IACA,MAAMC,MAAA,GAASopB,OAAA,CAAQppB,MAAvB;IACA,MAAMme,GAAA,GAAM,KAAKA,GAAjB;IAEA,KAAKtrC,IAAL;IAEA,IAEE,CAACuT,iBAFH,EAGE;MAKA+3B,GAAA,CAAI9H,MAAJ,GAAa,MAAb;IALA;IASF8H,GAAA,CAAIlsB,KAAJ,CAAU,IAAI8N,KAAd,EAAqB,CAAC,CAAD,GAAKC,MAA1B;IAEA,IAAI4+B,UAAJ;IACA,IAAIxV,OAAA,CAAQtpB,MAAZ,EAAoB;MAClB8+B,UAAA,GAAa,KAAKD,yBAAL,CAA+BvV,OAA/B,CAAb;IADkB,CAApB,MAEO,IACJ,OAAOyV,WAAP,KAAuB,UAAvB,IAAqCzV,OAAA,YAAmByV,WAAzD,IACA,CAACzV,OAAA,CAAQ3kC,IAFJ,EAGL;MAEAm6C,UAAA,GAAaxV,OAAb;IAFA,CAHK,MAMA;MACL,MAAMyM,SAAA,GAAY,KAAKrC,cAAL,CAAoB9L,SAApB,CAChB,aADgB,EAEhB3nB,KAFgB,EAGhBC,MAHgB,CAAlB;MAKA,MAAM81B,MAAA,GAASD,SAAA,CAAU/W,OAAzB;MACAqO,kBAAA,CAAmB2I,MAAnB,EAA2B1M,OAA3B;MACAwV,UAAA,GAAa,KAAKF,yBAAL,CAA+B5I,MAA/B,CAAb;IARK;IAWP,MAAMQ,MAAA,GAAS,KAAKhB,WAAL,CACbsJ,UADa,EAEb,IAAArgB,yCAAA,EAA2BJ,GAA3B,CAFa,CAAf;IAIAA,GAAA,CAAI8Y,qBAAJ,GAA4BnF,wBAAA,CAC1B,IAAA5T,kCAAA,EAAoBC,GAApB,CAD0B,EAE1BiL,OAAA,CAAQ2I,WAFkB,CAA5B;IAKAnK,wBAAA,CACEzJ,GADF,EAEEmY,MAAA,CAAOf,GAFT,EAGE,CAHF,EAIE,CAJF,EAKEe,MAAA,CAAOZ,UALT,EAMEY,MAAA,CAAOX,WANT,EAOE,CAPF,EAQE,CAAC31B,MARH,EASED,KATF,EAUEC,MAVF;IAYA,KAAK83B,OAAL;IACA,KAAKhlD,OAAL;EAlE+B;EAqEjCyE,6BAA6B6xC,OAA7B,EAAsCrsC,GAAtC,EAA2C;IACzC,IAAI,CAAC,KAAKw2C,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMpV,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIygB,UAAJ;IACA,IAAIxV,OAAA,CAAQtpB,MAAZ,EAAoB;MAClB8+B,UAAA,GAAaxV,OAAA,CAAQtpB,MAArB;IADkB,CAApB,MAEO;MACL,MAAM0+B,CAAA,GAAIpV,OAAA,CAAQrpB,KAAlB;MACA,MAAM0+B,CAAA,GAAIrV,OAAA,CAAQppB,MAAlB;MAEA,MAAM61B,SAAA,GAAY,KAAKrC,cAAL,CAAoB9L,SAApB,CAA8B,aAA9B,EAA6C8W,CAA7C,EAAgDC,CAAhD,CAAlB;MACA,MAAM3I,MAAA,GAASD,SAAA,CAAU/W,OAAzB;MACAqO,kBAAA,CAAmB2I,MAAnB,EAA2B1M,OAA3B;MACAwV,UAAA,GAAa,KAAKF,yBAAL,CAA+B5I,MAA/B,CAAb;IAPK;IAUP,WAAWnyB,KAAX,IAAoB5mB,GAApB,EAAyB;MACvBohC,GAAA,CAAItrC,IAAJ;MACAsrC,GAAA,CAAIprC,SAAJ,CAAc,GAAG4wB,KAAA,CAAM5wB,SAAvB;MACAorC,GAAA,CAAIlsB,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd;MACA21B,wBAAA,CACEzJ,GADF,EAEEygB,UAFF,EAGEj7B,KAAA,CAAM2C,CAHR,EAIE3C,KAAA,CAAM4C,CAJR,EAKE5C,KAAA,CAAM66B,CALR,EAME76B,KAAA,CAAM86B,CANR,EAOE,CAPF,EAQE,CAAC,CARH,EASE,CATF,EAUE,CAVF;MAYAtgB,GAAA,CAAIrrC,OAAJ;IAhBuB;IAkBzB,KAAKglD,OAAL;EApCyC;EAuC3CpgD,yBAAA,EAA2B;IACzB,IAAI,CAAC,KAAK67C,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKpV,GAAL,CAASgW,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B;IACA,KAAK2D,OAAL;EALyB;EAU3BxhD,UAAUwoD,GAAV,EAAe;EAIfvoD,eAAeuoD,GAAf,EAAoB9P,UAApB,EAAgC;EAIhCx4C,mBAAmBsoD,GAAnB,EAAwB;IACtB,KAAKtM,kBAAL,CAAwBn2C,IAAxB,CAA6B;MAC3B0iD,OAAA,EAAS;IADkB,CAA7B;EADsB;EAMxBtoD,wBAAwBqoD,GAAxB,EAA6B9P,UAA7B,EAAyC;IACvC,IAAI8P,GAAA,KAAQ,IAAZ,EAAkB;MAChB,KAAKtM,kBAAL,CAAwBn2C,IAAxB,CAA6B;QAC3B0iD,OAAA,EAAS,KAAKvpC,qBAAL,CAA2BwpC,SAA3B,CAAqChQ,UAArC;MADkB,CAA7B;IADgB,CAAlB,MAIO;MACL,KAAKwD,kBAAL,CAAwBn2C,IAAxB,CAA6B;QAC3B0iD,OAAA,EAAS;MADkB,CAA7B;IADK;IAKP,KAAKxL,cAAL,GAAsB,KAAK0L,gBAAL,EAAtB;EAVuC;EAazCvoD,iBAAA,EAAmB;IACjB,KAAK87C,kBAAL,CAAwByF,GAAxB;IACA,KAAK1E,cAAL,GAAsB,KAAK0L,gBAAL,EAAtB;EAFiB;EAOnBtoD,YAAA,EAAc;EAIdC,UAAA,EAAY;EAMZ2hD,YAAYxM,OAAZ,EAAqB;IACnB,MAAMhkB,OAAA,GAAU,KAAKwc,OAAL,CAAayI,WAAb,EAAhB;IACA,IAAI,KAAK0F,WAAT,EAAsB;MACpB,KAAKnO,OAAL,CAAawI,kBAAb;IADoB;IAGtB,IAAI,CAAC,KAAK2F,WAAV,EAAuB;MACrB,KAAKoF,OAAL,CAAa/L,OAAb;IADqB;IAGvB,MAAM5N,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAI,KAAKuU,WAAT,EAAsB;MACpB,IAAI,CAAC3qB,OAAL,EAAc;QACZ,IAAI,KAAK2qB,WAAL,KAAqBJ,OAAzB,EAAkC;UAChCnU,GAAA,CAAInqC,IAAJ,CAAS,SAAT;QADgC,CAAlC,MAEO;UACLmqC,GAAA,CAAInqC,IAAJ;QADK;MAHK;MAOd,KAAK0+C,WAAL,GAAmB,IAAnB;IARoB;IAUtB,KAAKnO,OAAL,CAAauH,sBAAb,CAAoC,KAAKvH,OAAL,CAAawH,OAAjD;IACA5N,GAAA,CAAIwI,SAAJ;EApBmB;EAuBrB4T,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAKzG,0BAAV,EAAsC;MACpC,MAAM50C,CAAA,GAAI,IAAAg/B,kCAAA,EAAoB,KAAKC,GAAzB,CAAV;MACA,IAAIj/B,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;QAE5B,KAAK40C,0BAAL,GACE,IAAI73C,IAAA,CAAKC,GAAL,CAASD,IAAA,CAAKgG,GAAL,CAAS/C,CAAA,CAAE,CAAF,CAAT,CAAT,EAAyBjD,IAAA,CAAKgG,GAAL,CAAS/C,CAAA,CAAE,CAAF,CAAT,CAAzB,CADN;MAF4B,CAA9B,MAIO;QACL,MAAMggD,MAAA,GAASjjD,IAAA,CAAKgG,GAAL,CAAS/C,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA9B,CAAf;QACA,MAAMigD,KAAA,GAAQljD,IAAA,CAAKgtC,KAAL,CAAW/pC,CAAA,CAAE,CAAF,CAAX,EAAiBA,CAAA,CAAE,CAAF,CAAjB,CAAd;QACA,MAAMkgD,KAAA,GAAQnjD,IAAA,CAAKgtC,KAAL,CAAW/pC,CAAA,CAAE,CAAF,CAAX,EAAiBA,CAAA,CAAE,CAAF,CAAjB,CAAd;QACA,KAAK40C,0BAAL,GAAkC73C,IAAA,CAAK4D,GAAL,CAASs/C,KAAT,EAAgBC,KAAhB,IAAyBF,MAA3D;MAJK;IAN6B;IAatC,OAAO,KAAKpL,0BAAZ;EAdoB;EAiBtBuL,oBAAA,EAAsB;IAOpB,IAAI,KAAKxL,uBAAL,CAA6B,CAA7B,MAAoC,CAAC,CAAzC,EAA4C;MAC1C,MAAM;QAAElI;MAAF,IAAgB,KAAKpH,OAA3B;MACA,MAAM;QAAEtkC,CAAF;QAAKvB,CAAL;QAAQwB,CAAR;QAAWZ;MAAX,IAAiB,KAAK6+B,GAAL,CAASG,YAAT,EAAvB;MACA,IAAI0K,MAAJ,EAAYE,MAAZ;MAEA,IAAIxqC,CAAA,KAAM,CAAN,IAAWwB,CAAA,KAAM,CAArB,EAAwB;QAEtB,MAAMi/C,KAAA,GAAQljD,IAAA,CAAKgG,GAAL,CAAShC,CAAT,CAAd;QACA,MAAMm/C,KAAA,GAAQnjD,IAAA,CAAKgG,GAAL,CAAS3C,CAAT,CAAd;QACA,IAAI6/C,KAAA,KAAUC,KAAd,EAAqB;UACnB,IAAIzT,SAAA,KAAc,CAAlB,EAAqB;YACnB3C,MAAA,GAASE,MAAA,GAAS,IAAIiW,KAAtB;UADmB,CAArB,MAEO;YACL,MAAMG,eAAA,GAAkBH,KAAA,GAAQxT,SAAhC;YACA3C,MAAA,GAASE,MAAA,GAASoW,eAAA,GAAkB,CAAlB,GAAsB,IAAIA,eAA1B,GAA4C,CAA9D;UAFK;QAHY,CAArB,MAOO,IAAI3T,SAAA,KAAc,CAAlB,EAAqB;UAC1B3C,MAAA,GAAS,IAAImW,KAAb;UACAjW,MAAA,GAAS,IAAIkW,KAAb;QAF0B,CAArB,MAGA;UACL,MAAMG,gBAAA,GAAmBJ,KAAA,GAAQxT,SAAjC;UACA,MAAM6T,gBAAA,GAAmBJ,KAAA,GAAQzT,SAAjC;UACA3C,MAAA,GAASuW,gBAAA,GAAmB,CAAnB,GAAuB,IAAIA,gBAA3B,GAA8C,CAAvD;UACArW,MAAA,GAASsW,gBAAA,GAAmB,CAAnB,GAAuB,IAAIA,gBAA3B,GAA8C,CAAvD;QAJK;MAde,CAAxB,MAoBO;QAOL,MAAMN,MAAA,GAASjjD,IAAA,CAAKgG,GAAL,CAAShC,CAAA,GAAIX,CAAJ,GAAQZ,CAAA,GAAIwB,CAArB,CAAf;QACA,MAAMi/C,KAAA,GAAQljD,IAAA,CAAKgtC,KAAL,CAAWhpC,CAAX,EAAcvB,CAAd,CAAd;QACA,MAAM0gD,KAAA,GAAQnjD,IAAA,CAAKgtC,KAAL,CAAW/oC,CAAX,EAAcZ,CAAd,CAAd;QACA,IAAIqsC,SAAA,KAAc,CAAlB,EAAqB;UACnB3C,MAAA,GAASoW,KAAA,GAAQF,MAAjB;UACAhW,MAAA,GAASiW,KAAA,GAAQD,MAAjB;QAFmB,CAArB,MAGO;UACL,MAAMO,QAAA,GAAW9T,SAAA,GAAYuT,MAA7B;UACAlW,MAAA,GAASoW,KAAA,GAAQK,QAAR,GAAmBL,KAAA,GAAQK,QAA3B,GAAsC,CAA/C;UACAvW,MAAA,GAASiW,KAAA,GAAQM,QAAR,GAAmBN,KAAA,GAAQM,QAA3B,GAAsC,CAA/C;QAHK;MAbF;MAmBP,KAAK5L,uBAAL,CAA6B,CAA7B,IAAkC7K,MAAlC;MACA,KAAK6K,uBAAL,CAA6B,CAA7B,IAAkC3K,MAAlC;IA7C0C;IA+C5C,OAAO,KAAK2K,uBAAZ;EAtDoB;EA2DtB2E,iBAAiBkH,WAAjB,EAA8B;IAC5B,MAAM;MAAEvhB;IAAF,IAAU,IAAhB;IACA,MAAM;MAAEwN;IAAF,IAAgB,KAAKpH,OAA3B;IACA,MAAM,CAACyE,MAAD,EAASE,MAAT,IAAmB,KAAKmW,mBAAL,EAAzB;IAEAlhB,GAAA,CAAIwN,SAAJ,GAAgBA,SAAA,IAAa,CAA7B;IAEA,IAAI3C,MAAA,KAAW,CAAX,IAAgBE,MAAA,KAAW,CAA/B,EAAkC;MAChC/K,GAAA,CAAI5qC,MAAJ;MACA;IAFgC;IAKlC,MAAMosD,MAAA,GAASxhB,GAAA,CAAIgR,WAAJ,EAAf;IACA,IAAIuQ,WAAJ,EAAiB;MACfvhB,GAAA,CAAItrC,IAAJ;IADe;IAIjBsrC,GAAA,CAAIlsB,KAAJ,CAAU+2B,MAAV,EAAkBE,MAAlB;IASA,IAAIyW,MAAA,CAAOnmD,MAAP,GAAgB,CAApB,EAAuB;MACrB,MAAMyY,KAAA,GAAQhW,IAAA,CAAK4D,GAAL,CAASmpC,MAAT,EAAiBE,MAAjB,CAAd;MACA/K,GAAA,CAAI+Q,WAAJ,CAAgByQ,MAAA,CAAO5iD,GAAP,CAAWupB,CAAA,IAAKA,CAAA,GAAIrU,KAApB,CAAhB;MACAksB,GAAA,CAAIiR,cAAJ,IAAsBn9B,KAAtB;IAHqB;IAMvBksB,GAAA,CAAI5qC,MAAJ;IAEA,IAAImsD,WAAJ,EAAiB;MACfvhB,GAAA,CAAIrrC,OAAJ;IADe;EAlCW;EAuC9BmsD,iBAAA,EAAmB;IACjB,KAAK,IAAIljD,CAAA,GAAI,KAAKy2C,kBAAL,CAAwBh5C,MAAxB,GAAiC,CAAzC,EAA4CuC,CAAA,IAAK,CAAtD,EAAyDA,CAAA,EAAzD,EAA8D;MAC5D,IAAI,CAAC,KAAKy2C,kBAAL,CAAwBz2C,CAAxB,EAA2BgjD,OAAhC,EAAyC;QACvC,OAAO,KAAP;MADuC;IADmB;IAK9D,OAAO,IAAP;EANiB;AAhwEA;AA76BrB71D,sBAAA,GAAAm5B,cAAA;AAurGA,WAAWu9B,EAAX,IAAiBztD,SAAjB,EAAsB;EACpB,IAAIkwB,cAAA,CAAeznB,SAAf,CAAyBglD,EAAzB,MAAiCnkD,SAArC,EAAgD;IAC9C4mB,cAAA,CAAeznB,SAAf,CAAyBzI,SAAA,CAAIytD,EAAJ,CAAzB,IAAoCv9B,cAAA,CAAeznB,SAAf,CAAyBglD,EAAzB,CAApC;EAD8C;AAD5B;;;;;;;;;;;;;ACxqGtB,IAAAz6C,KAAA,GAAAC,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AAEA,MAAMwnC,QAAA,GAAW;EACfhhD,IAAA,EAAM,MADS;EAEfC,MAAA,EAAQ,QAFO;EAGfoxD,OAAA,EAAS;AAHM,CAAjB;AAlBA/zD,gBAAA,GAAA0jD,QAAA;AAwBA,SAASiT,gBAATA,CAA0B1hB,GAA1B,EAA+Bgf,IAA/B,EAAqC;EACnC,IAAI,CAACA,IAAL,EAAW;IACT;EADS;EAGX,MAAMp9B,KAAA,GAAQo9B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;EACA,MAAMn9B,MAAA,GAASm9B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;EACA,MAAM2C,MAAA,GAAS,IAAI3V,MAAJ,EAAf;EACA2V,MAAA,CAAOr/C,IAAP,CAAY08C,IAAA,CAAK,CAAL,CAAZ,EAAqBA,IAAA,CAAK,CAAL,CAArB,EAA8Bp9B,KAA9B,EAAqCC,MAArC;EACAme,GAAA,CAAInqC,IAAJ,CAAS8rD,MAAT;AARmC;AAWrC,MAAMC,kBAAN,CAAyB;EACvBplD,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqBolD,kBAAzB,EAA6C;MAC3C,IAAArnD,iBAAA,EAAY,uCAAZ;IAD2C;EADjC;EAMdy+C,WAAA,EAAa;IACX,IAAAz+C,iBAAA,EAAY,sCAAZ;EADW;AAPU;AAYzB,MAAMsnD,yBAAN,SAAwCD,kBAAxC,CAA2D;EACzDplD,YAAY8hD,EAAZ,EAAgB;IACd;IACA,KAAK34B,KAAL,GAAa24B,EAAA,CAAG,CAAH,CAAb;IACA,KAAKwD,KAAL,GAAaxD,EAAA,CAAG,CAAH,CAAb;IACA,KAAKyD,WAAL,GAAmBzD,EAAA,CAAG,CAAH,CAAnB;IACA,KAAK0D,GAAL,GAAW1D,EAAA,CAAG,CAAH,CAAX;IACA,KAAK2D,GAAL,GAAW3D,EAAA,CAAG,CAAH,CAAX;IACA,KAAK4D,GAAL,GAAW5D,EAAA,CAAG,CAAH,CAAX;IACA,KAAK6D,GAAL,GAAW7D,EAAA,CAAG,CAAH,CAAX;IACA,KAAKM,MAAL,GAAc,IAAd;EATc;EAYhBwD,gBAAgBpiB,GAAhB,EAAqB;IACnB,IAAIqiB,IAAJ;IACA,IAAI,KAAK18B,KAAL,KAAe,OAAnB,EAA4B;MAC1B08B,IAAA,GAAOriB,GAAA,CAAIsiB,oBAAJ,CACL,KAAKN,GAAL,CAAS,CAAT,CADK,EAEL,KAAKA,GAAL,CAAS,CAAT,CAFK,EAGL,KAAKC,GAAL,CAAS,CAAT,CAHK,EAIL,KAAKA,GAAL,CAAS,CAAT,CAJK,CAAP;IAD0B,CAA5B,MAOO,IAAI,KAAKt8B,KAAL,KAAe,QAAnB,EAA6B;MAClC08B,IAAA,GAAOriB,GAAA,CAAIuiB,oBAAJ,CACL,KAAKP,GAAL,CAAS,CAAT,CADK,EAEL,KAAKA,GAAL,CAAS,CAAT,CAFK,EAGL,KAAKE,GAHA,EAIL,KAAKD,GAAL,CAAS,CAAT,CAJK,EAKL,KAAKA,GAAL,CAAS,CAAT,CALK,EAML,KAAKE,GANA,CAAP;IADkC;IAWpC,WAAWK,SAAX,IAAwB,KAAKT,WAA7B,EAA0C;MACxCM,IAAA,CAAKI,YAAL,CAAkBD,SAAA,CAAU,CAAV,CAAlB,EAAgCA,SAAA,CAAU,CAAV,CAAhC;IADwC;IAG1C,OAAOH,IAAP;EAvBmB;EA0BrBrJ,WAAWhZ,GAAX,EAAgB0iB,KAAhB,EAAuB3J,OAAvB,EAAgCvK,QAAhC,EAA0C;IACxC,IAAI2N,OAAJ;IACA,IAAI3N,QAAA,KAAaC,QAAA,CAAS/gD,MAAtB,IAAgC8gD,QAAA,KAAaC,QAAA,CAAShhD,IAA1D,EAAgE;MAC9D,MAAMk1D,SAAA,GAAYD,KAAA,CAAMtc,OAAN,CAAc2I,yBAAd,CAChBP,QADgB,EAEhB,IAAAzO,kCAAA,EAAoBC,GAApB,CAFgB,KAGb,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAHL;MAOA,MAAMpe,KAAA,GAAQ9jB,IAAA,CAAKq1C,IAAL,CAAUwP,SAAA,CAAU,CAAV,IAAeA,SAAA,CAAU,CAAV,CAAzB,KAA0C,CAAxD;MACA,MAAM9gC,MAAA,GAAS/jB,IAAA,CAAKq1C,IAAL,CAAUwP,SAAA,CAAU,CAAV,IAAeA,SAAA,CAAU,CAAV,CAAzB,KAA0C,CAAzD;MAEA,MAAMjL,SAAA,GAAYgL,KAAA,CAAMrN,cAAN,CAAqB9L,SAArB,CAChB,SADgB,EAEhB3nB,KAFgB,EAGhBC,MAHgB,EAIhB,IAJgB,CAAlB;MAOA,MAAM81B,MAAA,GAASD,SAAA,CAAU/W,OAAzB;MACAgX,MAAA,CAAOI,SAAP,CAAiB,CAAjB,EAAoB,CAApB,EAAuBJ,MAAA,CAAO/0B,MAAP,CAAchB,KAArC,EAA4C+1B,MAAA,CAAO/0B,MAAP,CAAcf,MAA1D;MACA81B,MAAA,CAAOnP,SAAP;MACAmP,MAAA,CAAOr1C,IAAP,CAAY,CAAZ,EAAe,CAAf,EAAkBq1C,MAAA,CAAO/0B,MAAP,CAAchB,KAAhC,EAAuC+1B,MAAA,CAAO/0B,MAAP,CAAcf,MAArD;MAIA81B,MAAA,CAAO9sB,SAAP,CAAiB,CAAC83B,SAAA,CAAU,CAAV,CAAlB,EAAgC,CAACA,SAAA,CAAU,CAAV,CAAjC;MACA5J,OAAA,GAAU54C,UAAA,CAAKvL,SAAL,CAAemkD,OAAf,EAAwB,CAChC,CADgC,EAEhC,CAFgC,EAGhC,CAHgC,EAIhC,CAJgC,EAKhC4J,SAAA,CAAU,CAAV,CALgC,EAMhCA,SAAA,CAAU,CAAV,CANgC,CAAxB,CAAV;MASAhL,MAAA,CAAO/iD,SAAP,CAAiB,GAAG8tD,KAAA,CAAM7N,aAA1B;MACA,IAAI,KAAK+J,MAAT,EAAiB;QACfjH,MAAA,CAAO/iD,SAAP,CAAiB,GAAG,KAAKgqD,MAAzB;MADe;MAGjB8C,gBAAA,CAAiB/J,MAAjB,EAAyB,KAAKmK,KAA9B;MAEAnK,MAAA,CAAOvG,SAAP,GAAmB,KAAKgR,eAAL,CAAqBzK,MAArB,CAAnB;MACAA,MAAA,CAAOriD,IAAP;MAEA6mD,OAAA,GAAUnc,GAAA,CAAI4iB,aAAJ,CAAkBlL,SAAA,CAAU90B,MAA5B,EAAoC,WAApC,CAAV;MACA,MAAMigC,SAAA,GAAY,IAAIC,SAAJ,CAAc/J,OAAd,CAAlB;MACAoD,OAAA,CAAQtU,YAAR,CAAqBgb,SAArB;IA9C8D,CAAhE,MA+CO;MAILnB,gBAAA,CAAiB1hB,GAAjB,EAAsB,KAAK8hB,KAA3B;MACA3F,OAAA,GAAU,KAAKiG,eAAL,CAAqBpiB,GAArB,CAAV;IALK;IAOP,OAAOmc,OAAP;EAxDwC;AAvCe;AAmG3D,SAAS4G,YAATA,CAAsBz8C,IAAtB,EAA4Bq6B,OAA5B,EAAqCt/B,EAArC,EAAyCC,EAAzC,EAA6CE,EAA7C,EAAiDwhD,EAAjD,EAAqDC,EAArD,EAAyDC,EAAzD,EAA6D;EAE3D,MAAMC,MAAA,GAASxiB,OAAA,CAAQwiB,MAAvB;IACEvzB,MAAA,GAAS+Q,OAAA,CAAQ/Q,MADnB;EAEA,MAAMvyB,KAAA,GAAQiJ,IAAA,CAAKA,IAAnB;IACE88C,OAAA,GAAU98C,IAAA,CAAKsb,KAAL,GAAa,CADzB;EAEA,IAAIyhC,GAAJ;EACA,IAAIF,MAAA,CAAO9hD,EAAA,GAAK,CAAZ,IAAiB8hD,MAAA,CAAO7hD,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnC+hD,GAAA,GAAMhiD,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAK+hD,GAAL;IACAA,GAAA,GAAML,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKI,GAAL;EANmC;EAQrC,IAAIF,MAAA,CAAO7hD,EAAA,GAAK,CAAZ,IAAiB6hD,MAAA,CAAO3hD,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnC6hD,GAAA,GAAM/hD,EAAN;IACAA,EAAA,GAAKE,EAAL;IACAA,EAAA,GAAK6hD,GAAL;IACAA,GAAA,GAAMJ,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKG,GAAL;EANmC;EAQrC,IAAIF,MAAA,CAAO9hD,EAAA,GAAK,CAAZ,IAAiB8hD,MAAA,CAAO7hD,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnC+hD,GAAA,GAAMhiD,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAK+hD,GAAL;IACAA,GAAA,GAAML,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKI,GAAL;EANmC;EAQrC,MAAMpgD,EAAA,GAAM,CAAAkgD,MAAA,CAAO9hD,EAAP,IAAas/B,OAAA,CAAQ3sB,OAArB,IAAgC2sB,OAAA,CAAQkK,MAApD;EACA,MAAM3nC,EAAA,GAAM,CAAAigD,MAAA,CAAO9hD,EAAA,GAAK,CAAZ,IAAiBs/B,OAAA,CAAQ1sB,OAAzB,IAAoC0sB,OAAA,CAAQoK,MAAxD;EACA,MAAM5nC,EAAA,GAAM,CAAAggD,MAAA,CAAO7hD,EAAP,IAAaq/B,OAAA,CAAQ3sB,OAArB,IAAgC2sB,OAAA,CAAQkK,MAApD;EACA,MAAMznC,EAAA,GAAM,CAAA+/C,MAAA,CAAO7hD,EAAA,GAAK,CAAZ,IAAiBq/B,OAAA,CAAQ1sB,OAAzB,IAAoC0sB,OAAA,CAAQoK,MAAxD;EACA,MAAM1nC,EAAA,GAAM,CAAA8/C,MAAA,CAAO3hD,EAAP,IAAam/B,OAAA,CAAQ3sB,OAArB,IAAgC2sB,OAAA,CAAQkK,MAApD;EACA,MAAMvnC,EAAA,GAAM,CAAA6/C,MAAA,CAAO3hD,EAAA,GAAK,CAAZ,IAAiBm/B,OAAA,CAAQ1sB,OAAzB,IAAoC0sB,OAAA,CAAQoK,MAAxD;EACA,IAAI7nC,EAAA,IAAMI,EAAV,EAAc;IACZ;EADY;EAGd,MAAMggD,GAAA,GAAM1zB,MAAA,CAAOozB,EAAP,CAAZ;IACEO,GAAA,GAAM3zB,MAAA,CAAOozB,EAAA,GAAK,CAAZ,CADR;IAEEQ,GAAA,GAAM5zB,MAAA,CAAOozB,EAAA,GAAK,CAAZ,CAFR;EAGA,MAAMS,GAAA,GAAM7zB,MAAA,CAAOqzB,EAAP,CAAZ;IACES,GAAA,GAAM9zB,MAAA,CAAOqzB,EAAA,GAAK,CAAZ,CADR;IAEEU,GAAA,GAAM/zB,MAAA,CAAOqzB,EAAA,GAAK,CAAZ,CAFR;EAGA,MAAMW,GAAA,GAAMh0B,MAAA,CAAOszB,EAAP,CAAZ;IACEW,GAAA,GAAMj0B,MAAA,CAAOszB,EAAA,GAAK,CAAZ,CADR;IAEEY,GAAA,GAAMl0B,MAAA,CAAOszB,EAAA,GAAK,CAAZ,CAFR;EAIA,MAAMlV,IAAA,GAAOlwC,IAAA,CAAK+vB,KAAL,CAAW3qB,EAAX,CAAb;IACEgrC,IAAA,GAAOpwC,IAAA,CAAK+vB,KAAL,CAAWvqB,EAAX,CADT;EAEA,IAAIygD,EAAJ,EAAQC,GAAR,EAAaC,GAAb,EAAkBC,GAAlB;EACA,IAAIC,EAAJ,EAAQC,GAAR,EAAaC,GAAb,EAAkBC,GAAlB;EACA,KAAK,IAAIl8B,CAAA,GAAI4lB,IAAR,EAAc5lB,CAAA,IAAK8lB,IAAxB,EAA8B9lB,CAAA,EAA9B,EAAmC;IACjC,IAAIA,CAAA,GAAIhlB,EAAR,EAAY;MACV,IAAIw2B,CAAJ;MACA,IAAIxR,CAAA,GAAIllB,EAAR,EAAY;QACV02B,CAAA,GAAI,CAAJ;MADU,CAAZ,MAEO;QACLA,CAAA,GAAK,CAAA12B,EAAA,GAAKklB,CAAL,KAAWllB,EAAA,GAAKE,EAAL,CAAhB;MADK;MAGP2gD,EAAA,GAAK9gD,EAAA,GAAM,CAAAA,EAAA,GAAKE,EAAL,IAAWy2B,CAAtB;MACAoqB,GAAA,GAAMV,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa7pB,CAA1B;MACAqqB,GAAA,GAAMV,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa9pB,CAA1B;MACAsqB,GAAA,GAAMV,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa/pB,CAA1B;IAVU,CAAZ,MAWO;MACL,IAAIA,CAAJ;MACA,IAAIxR,CAAA,GAAI9kB,EAAR,EAAY;QACVs2B,CAAA,GAAI,CAAJ;MADU,CAAZ,MAEO,IAAIx2B,EAAA,KAAOE,EAAX,EAAe;QACpBs2B,CAAA,GAAI,CAAJ;MADoB,CAAf,MAEA;QACLA,CAAA,GAAK,CAAAx2B,EAAA,GAAKglB,CAAL,KAAWhlB,EAAA,GAAKE,EAAL,CAAhB;MADK;MAGPygD,EAAA,GAAK5gD,EAAA,GAAM,CAAAA,EAAA,GAAKE,EAAL,IAAWu2B,CAAtB;MACAoqB,GAAA,GAAMP,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAahqB,CAA1B;MACAqqB,GAAA,GAAMP,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAajqB,CAA1B;MACAsqB,GAAA,GAAMP,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAalqB,CAA1B;IAZK;IAeP,IAAIA,CAAJ;IACA,IAAIxR,CAAA,GAAIllB,EAAR,EAAY;MACV02B,CAAA,GAAI,CAAJ;IADU,CAAZ,MAEO,IAAIxR,CAAA,GAAI9kB,EAAR,EAAY;MACjBs2B,CAAA,GAAI,CAAJ;IADiB,CAAZ,MAEA;MACLA,CAAA,GAAK,CAAA12B,EAAA,GAAKklB,CAAL,KAAWllB,EAAA,GAAKI,EAAL,CAAhB;IADK;IAGP6gD,EAAA,GAAKlhD,EAAA,GAAM,CAAAA,EAAA,GAAKI,EAAL,IAAWu2B,CAAtB;IACAwqB,GAAA,GAAMd,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAahqB,CAA1B;IACAyqB,GAAA,GAAMd,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAajqB,CAA1B;IACA0qB,GAAA,GAAMd,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAalqB,CAA1B;IACA,MAAM2qB,GAAA,GAAMzmD,IAAA,CAAK+vB,KAAL,CAAW/vB,IAAA,CAAKC,GAAL,CAASgmD,EAAT,EAAaI,EAAb,CAAX,CAAZ;IACA,MAAMK,GAAA,GAAM1mD,IAAA,CAAK+vB,KAAL,CAAW/vB,IAAA,CAAK4D,GAAL,CAASqiD,EAAT,EAAaI,EAAb,CAAX,CAAZ;IACA,IAAIpgD,CAAA,GAAIq/C,OAAA,GAAUh7B,CAAV,GAAcm8B,GAAA,GAAM,CAA5B;IACA,KAAK,IAAIp8B,CAAA,GAAIo8B,GAAR,EAAap8B,CAAA,IAAKq8B,GAAvB,EAA4Br8B,CAAA,EAA5B,EAAiC;MAC/ByR,CAAA,GAAK,CAAAmqB,EAAA,GAAK57B,CAAL,KAAW47B,EAAA,GAAKI,EAAL,CAAhB;MACA,IAAIvqB,CAAA,GAAI,CAAR,EAAW;QACTA,CAAA,GAAI,CAAJ;MADS,CAAX,MAEO,IAAIA,CAAA,GAAI,CAAR,EAAW;QAChBA,CAAA,GAAI,CAAJ;MADgB;MAGlBv8B,KAAA,CAAM0G,CAAA,EAAN,IAAcigD,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAaxqB,CAArB,GAA0B,CAAvC;MACAv8B,KAAA,CAAM0G,CAAA,EAAN,IAAckgD,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAazqB,CAArB,GAA0B,CAAvC;MACAv8B,KAAA,CAAM0G,CAAA,EAAN,IAAcmgD,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAa1qB,CAArB,GAA0B,CAAvC;MACAv8B,KAAA,CAAM0G,CAAA,EAAN,IAAa,GAAb;IAV+B;EA1CA;AAtDwB;AA+G7D,SAAS0gD,UAATA,CAAoBn+C,IAApB,EAA0Bo+C,MAA1B,EAAkC/jB,OAAlC,EAA2C;EACzC,MAAMgkB,EAAA,GAAKD,MAAA,CAAOvB,MAAlB;EACA,MAAMyB,EAAA,GAAKF,MAAA,CAAO90B,MAAlB;EACA,IAAIhyB,CAAJ,EAAO8G,EAAP;EACA,QAAQggD,MAAA,CAAO5jC,IAAf;IACE,KAAK,SAAL;MACE,MAAM+jC,cAAA,GAAiBH,MAAA,CAAOG,cAA9B;MACA,MAAMC,IAAA,GAAOhnD,IAAA,CAAKg6C,KAAL,CAAW6M,EAAA,CAAGtpD,MAAH,GAAYwpD,cAAvB,IAAyC,CAAtD;MACA,MAAME,IAAA,GAAOF,cAAA,GAAiB,CAA9B;MACA,KAAKjnD,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIknD,IAAhB,EAAsBlnD,CAAA,EAAtB,EAA2B;QACzB,IAAIonD,CAAA,GAAIpnD,CAAA,GAAIinD,cAAZ;QACA,KAAK,IAAI9gD,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIghD,IAApB,EAA0BhhD,CAAA,IAAKihD,CAAA,EAA/B,EAAoC;UAClCjC,YAAA,CACEz8C,IADF,EAEEq6B,OAFF,EAGEgkB,EAAA,CAAGK,CAAH,CAHF,EAIEL,EAAA,CAAGK,CAAA,GAAI,CAAP,CAJF,EAKEL,EAAA,CAAGK,CAAA,GAAIH,cAAP,CALF,EAMED,EAAA,CAAGI,CAAH,CANF,EAOEJ,EAAA,CAAGI,CAAA,GAAI,CAAP,CAPF,EAQEJ,EAAA,CAAGI,CAAA,GAAIH,cAAP,CARF;UAUA9B,YAAA,CACEz8C,IADF,EAEEq6B,OAFF,EAGEgkB,EAAA,CAAGK,CAAA,GAAIH,cAAJ,GAAqB,CAAxB,CAHF,EAIEF,EAAA,CAAGK,CAAA,GAAI,CAAP,CAJF,EAKEL,EAAA,CAAGK,CAAA,GAAIH,cAAP,CALF,EAMED,EAAA,CAAGI,CAAA,GAAIH,cAAJ,GAAqB,CAAxB,CANF,EAOED,EAAA,CAAGI,CAAA,GAAI,CAAP,CAPF,EAQEJ,EAAA,CAAGI,CAAA,GAAIH,cAAP,CARF;QAXkC;MAFX;MAyB3B;IACF,KAAK,WAAL;MACE,KAAKjnD,CAAA,GAAI,CAAJ,EAAO8G,EAAA,GAAKigD,EAAA,CAAGtpD,MAApB,EAA4BuC,CAAA,GAAI8G,EAAhC,EAAoC9G,CAAA,IAAK,CAAzC,EAA4C;QAC1CmlD,YAAA,CACEz8C,IADF,EAEEq6B,OAFF,EAGEgkB,EAAA,CAAG/mD,CAAH,CAHF,EAIE+mD,EAAA,CAAG/mD,CAAA,GAAI,CAAP,CAJF,EAKE+mD,EAAA,CAAG/mD,CAAA,GAAI,CAAP,CALF,EAMEgnD,EAAA,CAAGhnD,CAAH,CANF,EAOEgnD,EAAA,CAAGhnD,CAAA,GAAI,CAAP,CAPF,EAQEgnD,EAAA,CAAGhnD,CAAA,GAAI,CAAP,CARF;MAD0C;MAY5C;IACF;MACE,MAAM,IAAIpD,KAAJ,CAAU,gBAAV,CAAN;EA9CJ;AAJyC;AAsD3C,MAAMyqD,kBAAN,SAAiCrD,kBAAjC,CAAoD;EAClDplD,YAAY8hD,EAAZ,EAAgB;IACd;IACA,KAAK4G,OAAL,GAAe5G,EAAA,CAAG,CAAH,CAAf;IACA,KAAK3uB,OAAL,GAAe2uB,EAAA,CAAG,CAAH,CAAf;IACA,KAAK6G,QAAL,GAAgB7G,EAAA,CAAG,CAAH,CAAhB;IACA,KAAK8G,OAAL,GAAe9G,EAAA,CAAG,CAAH,CAAf;IACA,KAAKwD,KAAL,GAAaxD,EAAA,CAAG,CAAH,CAAb;IACA,KAAK+G,WAAL,GAAmB/G,EAAA,CAAG,CAAH,CAAnB;IACA,KAAKM,MAAL,GAAc,IAAd;EARc;EAWhB0G,kBAAkBC,aAAlB,EAAiCC,eAAjC,EAAkDnQ,cAAlD,EAAkE;IAGhE,MAAMoQ,cAAA,GAAiB,GAAvB;IAEA,MAAMC,gBAAA,GAAmB,IAAzB;IAGA,MAAMC,WAAA,GAAc,CAApB;IAEA,MAAM3xC,OAAA,GAAUlW,IAAA,CAAKg6C,KAAL,CAAW,KAAKsN,OAAL,CAAa,CAAb,CAAX,CAAhB;IACA,MAAMnxC,OAAA,GAAUnW,IAAA,CAAKg6C,KAAL,CAAW,KAAKsN,OAAL,CAAa,CAAb,CAAX,CAAhB;IACA,MAAMQ,WAAA,GAAc9nD,IAAA,CAAKq1C,IAAL,CAAU,KAAKiS,OAAL,CAAa,CAAb,CAAV,IAA6BpxC,OAAjD;IACA,MAAM6xC,YAAA,GAAe/nD,IAAA,CAAKq1C,IAAL,CAAU,KAAKiS,OAAL,CAAa,CAAb,CAAV,IAA6BnxC,OAAlD;IAEA,MAAM2N,KAAA,GAAQ9jB,IAAA,CAAKC,GAAL,CACZD,IAAA,CAAKq1C,IAAL,CAAUr1C,IAAA,CAAKgG,GAAL,CAAS8hD,WAAA,GAAcL,aAAA,CAAc,CAAd,CAAd,GAAiCE,cAA1C,CAAV,CADY,EAEZC,gBAFY,CAAd;IAIA,MAAM7jC,MAAA,GAAS/jB,IAAA,CAAKC,GAAL,CACbD,IAAA,CAAKq1C,IAAL,CAAUr1C,IAAA,CAAKgG,GAAL,CAAS+hD,YAAA,GAAeN,aAAA,CAAc,CAAd,CAAf,GAAkCE,cAA3C,CAAV,CADa,EAEbC,gBAFa,CAAf;IAIA,MAAM7a,MAAA,GAAS+a,WAAA,GAAchkC,KAA7B;IACA,MAAMmpB,MAAA,GAAS8a,YAAA,GAAehkC,MAA9B;IAEA,MAAM8e,OAAA,GAAU;MACdwiB,MAAA,EAAQ,KAAK+B,OADC;MAEdt1B,MAAA,EAAQ,KAAKD,OAFC;MAGd3b,OAAA,EAAS,CAACA,OAHI;MAIdC,OAAA,EAAS,CAACA,OAJI;MAKd42B,MAAA,EAAQ,IAAIA,MALE;MAMdE,MAAA,EAAQ,IAAIA;IANE,CAAhB;IASA,MAAM+a,WAAA,GAAclkC,KAAA,GAAQ+jC,WAAA,GAAc,CAA1C;IACA,MAAMI,YAAA,GAAelkC,MAAA,GAAS8jC,WAAA,GAAc,CAA5C;IAEA,MAAMjO,SAAA,GAAYrC,cAAA,CAAe9L,SAAf,CAChB,MADgB,EAEhBuc,WAFgB,EAGhBC,YAHgB,EAIhB,KAJgB,CAAlB;IAMA,MAAMpO,MAAA,GAASD,SAAA,CAAU/W,OAAzB;IAEA,MAAMr6B,IAAA,GAAOqxC,MAAA,CAAOpI,eAAP,CAAuB3tB,KAAvB,EAA8BC,MAA9B,CAAb;IACA,IAAI2jC,eAAJ,EAAqB;MACnB,MAAMnoD,KAAA,GAAQiJ,IAAA,CAAKA,IAAnB;MACA,KAAK,IAAI1I,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKrH,KAAA,CAAMhC,MAAtB,EAA8BuC,CAAA,GAAI8G,EAAvC,EAA2C9G,CAAA,IAAK,CAAhD,EAAmD;QACjDP,KAAA,CAAMO,CAAN,IAAW4nD,eAAA,CAAgB,CAAhB,CAAX;QACAnoD,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAe4nD,eAAA,CAAgB,CAAhB,CAAf;QACAnoD,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAe4nD,eAAA,CAAgB,CAAhB,CAAf;QACAnoD,KAAA,CAAMO,CAAA,GAAI,CAAV,IAAe,GAAf;MAJiD;IAFhC;IASrB,WAAW8mD,MAAX,IAAqB,KAAKS,QAA1B,EAAoC;MAClCV,UAAA,CAAWn+C,IAAX,EAAiBo+C,MAAjB,EAAyB/jB,OAAzB;IADkC;IAGpCgX,MAAA,CAAOzI,YAAP,CAAoB5oC,IAApB,EAA0Bq/C,WAA1B,EAAuCA,WAAvC;IACA,MAAM/iC,MAAA,GAAS80B,SAAA,CAAU90B,MAAzB;IAEA,OAAO;MACLA,MADK;MAEL5O,OAAA,EAASA,OAAA,GAAU2xC,WAAA,GAAc9a,MAF5B;MAGL52B,OAAA,EAASA,OAAA,GAAU0xC,WAAA,GAAc5a,MAH5B;MAILF,MAJK;MAKLE;IALK,CAAP;EA9DgE;EAuElEiO,WAAWhZ,GAAX,EAAgB0iB,KAAhB,EAAuB3J,OAAvB,EAAgCvK,QAAhC,EAA0C;IACxCkT,gBAAA,CAAiB1hB,GAAjB,EAAsB,KAAK8hB,KAA3B;IACA,IAAIhuC,KAAJ;IACA,IAAI06B,QAAA,KAAaC,QAAA,CAASqQ,OAA1B,EAAmC;MACjChrC,KAAA,GAAQ3T,UAAA,CAAKyB,6BAAL,CAAmC,IAAAm+B,kCAAA,EAAoBC,GAApB,CAAnC,CAAR;IADiC,CAAnC,MAEO;MAELlsB,KAAA,GAAQ3T,UAAA,CAAKyB,6BAAL,CAAmC8gD,KAAA,CAAM7N,aAAzC,CAAR;MACA,IAAI,KAAK+J,MAAT,EAAiB;QACf,MAAMoH,WAAA,GAAc7lD,UAAA,CAAKyB,6BAAL,CAAmC,KAAKg9C,MAAxC,CAApB;QACA9qC,KAAA,GAAQ,CAACA,KAAA,CAAM,CAAN,IAAWkyC,WAAA,CAAY,CAAZ,CAAZ,EAA4BlyC,KAAA,CAAM,CAAN,IAAWkyC,WAAA,CAAY,CAAZ,CAAvC,CAAR;MAFe;IAHZ;IAWP,MAAMC,sBAAA,GAAyB,KAAKX,iBAAL,CAC7BxxC,KAD6B,EAE7B06B,QAAA,KAAaC,QAAA,CAASqQ,OAAtB,GAAgC,IAAhC,GAAuC,KAAKuG,WAFf,EAG7B3C,KAAA,CAAMrN,cAHuB,CAA/B;IAMA,IAAI7G,QAAA,KAAaC,QAAA,CAASqQ,OAA1B,EAAmC;MACjC9e,GAAA,CAAI6H,YAAJ,CAAiB,GAAG6a,KAAA,CAAM7N,aAA1B;MACA,IAAI,KAAK+J,MAAT,EAAiB;QACf5e,GAAA,CAAIprC,SAAJ,CAAc,GAAG,KAAKgqD,MAAtB;MADe;IAFgB;IAOnC5e,GAAA,CAAInV,SAAJ,CACEo7B,sBAAA,CAAuBjyC,OADzB,EAEEiyC,sBAAA,CAAuBhyC,OAFzB;IAIA+rB,GAAA,CAAIlsB,KAAJ,CAAUmyC,sBAAA,CAAuBpb,MAAjC,EAAyCob,sBAAA,CAAuBlb,MAAhE;IAEA,OAAO/K,GAAA,CAAI4iB,aAAJ,CAAkBqD,sBAAA,CAAuBrjC,MAAzC,EAAiD,WAAjD,CAAP;EAnCwC;AAnFQ;AA0HpD,MAAMsjC,mBAAN,SAAkCtE,kBAAlC,CAAqD;EACnD5I,WAAA,EAAa;IACX,OAAO,SAAP;EADW;AADsC;AAMrD,SAAS6F,iBAATA,CAA2BP,EAA3B,EAA+B;EAC7B,QAAQA,EAAA,CAAG,CAAH,CAAR;IACE,KAAK,aAAL;MACE,OAAO,IAAIuD,yBAAJ,CAA8BvD,EAA9B,CAAP;IACF,KAAK,MAAL;MACE,OAAO,IAAI2G,kBAAJ,CAAuB3G,EAAvB,CAAP;IACF,KAAK,OAAL;MACE,OAAO,IAAI4H,mBAAJ,EAAP;EANJ;EAQA,MAAM,IAAI1rD,KAAJ,CAAW,oBAAmB8jD,EAAA,CAAG,CAAH,CAApB,EAAV,CAAN;AAT6B;AAY/B,MAAM6H,SAAA,GAAY;EAChBC,OAAA,EAAS,CADO;EAEhBC,SAAA,EAAW;AAFK,CAAlB;AAKA,MAAM5H,aAAN,CAAoB;EAElB,OAAOiH,gBAAP,GAA0B,IAA1B;EAEAlpD,YAAY8hD,EAAZ,EAAgBvuB,KAAhB,EAAuBiQ,GAAvB,EAA4Bue,qBAA5B,EAAmD1J,aAAnD,EAAkE;IAChE,KAAK9+B,YAAL,GAAoBuoC,EAAA,CAAG,CAAH,CAApB;IACA,KAAKM,MAAL,GAAcN,EAAA,CAAG,CAAH,KAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAvB;IACA,KAAKU,IAAL,GAAYV,EAAA,CAAG,CAAH,CAAZ;IACA,KAAKgI,KAAL,GAAahI,EAAA,CAAG,CAAH,CAAb;IACA,KAAKiI,KAAL,GAAajI,EAAA,CAAG,CAAH,CAAb;IACA,KAAKkI,SAAL,GAAiBlI,EAAA,CAAG,CAAH,CAAjB;IACA,KAAKmI,UAAL,GAAkBnI,EAAA,CAAG,CAAH,CAAlB;IACA,KAAKvuB,KAAL,GAAaA,KAAb;IACA,KAAKiQ,GAAL,GAAWA,GAAX;IACA,KAAKue,qBAAL,GAA6BA,qBAA7B;IACA,KAAK1J,aAAL,GAAqBA,aAArB;EAXgE;EAclE6R,oBAAoBhE,KAApB,EAA2B;IACzB,MAAM3sC,YAAA,GAAe,KAAKA,YAA1B;IACA,MAAMipC,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAMsH,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMC,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMC,SAAA,GAAY,KAAKA,SAAvB;IACA,MAAMC,UAAA,GAAa,KAAKA,UAAxB;IACA,MAAM12B,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMwuB,qBAAA,GAAwB,KAAKA,qBAAnC;IAEA,IAAArkD,UAAA,EAAK,iBAAiBusD,UAAtB;IAsBA,MAAM1jD,EAAA,GAAKi8C,IAAA,CAAK,CAAL,CAAX;MACEh8C,EAAA,GAAKg8C,IAAA,CAAK,CAAL,CADP;MAEE/7C,EAAA,GAAK+7C,IAAA,CAAK,CAAL,CAFP;MAGE97C,EAAA,GAAK87C,IAAA,CAAK,CAAL,CAHP;IAMA,MAAMgH,WAAA,GAAc7lD,UAAA,CAAKyB,6BAAL,CAAmC,KAAKg9C,MAAxC,CAApB;IACA,MAAM+H,cAAA,GAAiBxmD,UAAA,CAAKyB,6BAAL,CACrB,KAAKizC,aADgB,CAAvB;IAGA,MAAM0Q,aAAA,GAAgB,CACpBS,WAAA,CAAY,CAAZ,IAAiBW,cAAA,CAAe,CAAf,CADG,EAEpBX,WAAA,CAAY,CAAZ,IAAiBW,cAAA,CAAe,CAAf,CAFG,CAAtB;IAQA,MAAMC,IAAA,GAAO,KAAKC,eAAL,CACXP,KADW,EAEX,KAAKtmB,GAAL,CAASpd,MAAT,CAAgBhB,KAFL,EAGX2jC,aAAA,CAAc,CAAd,CAHW,CAAb;IAKA,MAAMuB,IAAA,GAAO,KAAKD,eAAL,CACXN,KADW,EAEX,KAAKvmB,GAAL,CAASpd,MAAT,CAAgBf,MAFL,EAGX0jC,aAAA,CAAc,CAAd,CAHW,CAAb;IAMA,MAAM7N,SAAA,GAAYgL,KAAA,CAAMrN,cAAN,CAAqB9L,SAArB,CAChB,SADgB,EAEhBqd,IAAA,CAAK3uC,IAFW,EAGhB6uC,IAAA,CAAK7uC,IAHW,EAIhB,IAJgB,CAAlB;IAMA,MAAM0/B,MAAA,GAASD,SAAA,CAAU/W,OAAzB;IACA,MAAMomB,QAAA,GAAWxI,qBAAA,CAAsBC,oBAAtB,CAA2C7G,MAA3C,CAAjB;IACAoP,QAAA,CAAShS,UAAT,GAAsB2N,KAAA,CAAM3N,UAA5B;IAEA,KAAKiS,8BAAL,CAAoCD,QAApC,EAA8CP,SAA9C,EAAyDz2B,KAAzD;IAEA,IAAIk3B,UAAA,GAAalkD,EAAjB;IACA,IAAImkD,UAAA,GAAalkD,EAAjB;IACA,IAAImkD,UAAA,GAAalkD,EAAjB;IACA,IAAImkD,UAAA,GAAalkD,EAAjB;IAIA,IAAIH,EAAA,GAAK,CAAT,EAAY;MACVkkD,UAAA,GAAa,CAAb;MACAE,UAAA,IAAcrpD,IAAA,CAAKgG,GAAL,CAASf,EAAT,CAAd;IAFU;IAIZ,IAAIC,EAAA,GAAK,CAAT,EAAY;MACVkkD,UAAA,GAAa,CAAb;MACAE,UAAA,IAActpD,IAAA,CAAKgG,GAAL,CAASd,EAAT,CAAd;IAFU;IAIZ20C,MAAA,CAAO9sB,SAAP,CAAiB,EAAE+7B,IAAA,CAAK9yC,KAAL,GAAamzC,UAAb,CAAnB,EAA6C,EAAEH,IAAA,CAAKhzC,KAAL,GAAaozC,UAAb,CAA/C;IACAH,QAAA,CAASnyD,SAAT,CAAmBgyD,IAAA,CAAK9yC,KAAxB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCgzC,IAAA,CAAKhzC,KAA1C,EAAiD,CAAjD,EAAoD,CAApD;IAIA6jC,MAAA,CAAOjjD,IAAP;IAEA,KAAK2yD,QAAL,CAAcN,QAAd,EAAwBE,UAAxB,EAAoCC,UAApC,EAAgDC,UAAhD,EAA4DC,UAA5D;IAEAL,QAAA,CAASlS,aAAT,GAAyB,IAAA9U,kCAAA,EAAoBgnB,QAAA,CAAS/mB,GAA7B,CAAzB;IAEA+mB,QAAA,CAASxiC,mBAAT,CAA6BxO,YAA7B;IAEAgxC,QAAA,CAAS3iC,UAAT;IAEA,OAAO;MACLxB,MAAA,EAAQ80B,SAAA,CAAU90B,MADb;MAELioB,MAAA,EAAQ+b,IAAA,CAAK9yC,KAFR;MAGLi3B,MAAA,EAAQ+b,IAAA,CAAKhzC,KAHR;MAILE,OAAA,EAASizC,UAJJ;MAKLhzC,OAAA,EAASizC;IALJ,CAAP;EAvGyB;EAgH3BL,gBAAgBrtB,IAAhB,EAAsB8tB,cAAtB,EAAsCxzC,KAAtC,EAA6C;IAE3C0lB,IAAA,GAAO17B,IAAA,CAAKgG,GAAL,CAAS01B,IAAT,CAAP;IAKA,MAAMrL,OAAA,GAAUrwB,IAAA,CAAK4D,GAAL,CAAS+8C,aAAA,CAAciH,gBAAvB,EAAyC4B,cAAzC,CAAhB;IACA,IAAIrvC,IAAA,GAAOna,IAAA,CAAKq1C,IAAL,CAAU3Z,IAAA,GAAO1lB,KAAjB,CAAX;IACA,IAAImE,IAAA,IAAQkW,OAAZ,EAAqB;MACnBlW,IAAA,GAAOkW,OAAP;IADmB,CAArB,MAEO;MACLra,KAAA,GAAQmE,IAAA,GAAOuhB,IAAf;IADK;IAGP,OAAO;MAAE1lB,KAAF;MAASmE;IAAT,CAAP;EAd2C;EAiB7CovC,SAASN,QAAT,EAAmBhkD,EAAnB,EAAuBC,EAAvB,EAA2BC,EAA3B,EAA+BC,EAA/B,EAAmC;IACjC,MAAMqkD,SAAA,GAAYtkD,EAAA,GAAKF,EAAvB;IACA,MAAMykD,UAAA,GAAatkD,EAAA,GAAKF,EAAxB;IACA+jD,QAAA,CAAS/mB,GAAT,CAAa19B,IAAb,CAAkBS,EAAlB,EAAsBC,EAAtB,EAA0BukD,SAA1B,EAAqCC,UAArC;IACAT,QAAA,CAAS3gB,OAAT,CAAiB+H,gBAAjB,CAAkC,IAAApO,kCAAA,EAAoBgnB,QAAA,CAAS/mB,GAA7B,CAAlC,EAAqE,CACnEj9B,EADmE,EAEnEC,EAFmE,EAGnEC,EAHmE,EAInEC,EAJmE,CAArE;IAMA6jD,QAAA,CAASlxD,IAAT;IACAkxD,QAAA,CAASnxD,OAAT;EAXiC;EAcnCoxD,+BAA+BD,QAA/B,EAAyCP,SAAzC,EAAoDz2B,KAApD,EAA2D;IACzD,MAAM4Q,OAAA,GAAUomB,QAAA,CAAS/mB,GAAzB;MACEoG,OAAA,GAAU2gB,QAAA,CAAS3gB,OADrB;IAEA,QAAQogB,SAAR;MACE,KAAKL,SAAA,CAAUC,OAAf;QACE,MAAMpmB,GAAA,GAAM,KAAKA,GAAjB;QACAW,OAAA,CAAQyQ,SAAR,GAAoBpR,GAAA,CAAIoR,SAAxB;QACAzQ,OAAA,CAAQwQ,WAAR,GAAsBnR,GAAA,CAAImR,WAA1B;QACA/K,OAAA,CAAQ+G,SAAR,GAAoBnN,GAAA,CAAIoR,SAAxB;QACAhL,OAAA,CAAQgH,WAAR,GAAsBpN,GAAA,CAAImR,WAA1B;QACA;MACF,KAAKgV,SAAA,CAAUE,SAAf;QACE,MAAMoB,QAAA,GAAWtnD,UAAA,CAAKC,YAAL,CAAkB2vB,KAAA,CAAM,CAAN,CAAlB,EAA4BA,KAAA,CAAM,CAAN,CAA5B,EAAsCA,KAAA,CAAM,CAAN,CAAtC,CAAjB;QACA4Q,OAAA,CAAQyQ,SAAR,GAAoBqW,QAApB;QACA9mB,OAAA,CAAQwQ,WAAR,GAAsBsW,QAAtB;QAEArhB,OAAA,CAAQ+G,SAAR,GAAoBsa,QAApB;QACArhB,OAAA,CAAQgH,WAAR,GAAsBqa,QAAtB;QACA;MACF;QACE,MAAM,IAAIvqD,iBAAJ,CAAiB,2BAA0BspD,SAA3B,EAAhB,CAAN;IAjBJ;EAHyD;EAwB3DxN,WAAWhZ,GAAX,EAAgB0iB,KAAhB,EAAuB3J,OAAvB,EAAgCvK,QAAhC,EAA0C;IAExC,IAAIoQ,MAAA,GAAS7F,OAAb;IACA,IAAIvK,QAAA,KAAaC,QAAA,CAASqQ,OAA1B,EAAmC;MACjCF,MAAA,GAASz+C,UAAA,CAAKvL,SAAL,CAAegqD,MAAf,EAAuB8D,KAAA,CAAM7N,aAA7B,CAAT;MACA,IAAI,KAAK+J,MAAT,EAAiB;QACfA,MAAA,GAASz+C,UAAA,CAAKvL,SAAL,CAAegqD,MAAf,EAAuB,KAAKA,MAA5B,CAAT;MADe;IAFgB;IAOnC,MAAMqH,sBAAA,GAAyB,KAAKS,mBAAL,CAAyBhE,KAAzB,CAA/B;IAEA,IAAIG,SAAA,GAAY,IAAIC,SAAJ,CAAclE,MAAd,CAAhB;IAGAiE,SAAA,GAAYA,SAAA,CAAUh4B,SAAV,CACVo7B,sBAAA,CAAuBjyC,OADb,EAEViyC,sBAAA,CAAuBhyC,OAFb,CAAZ;IAIA4uC,SAAA,GAAYA,SAAA,CAAU/uC,KAAV,CACV,IAAImyC,sBAAA,CAAuBpb,MADjB,EAEV,IAAIob,sBAAA,CAAuBlb,MAFjB,CAAZ;IAKA,MAAMoR,OAAA,GAAUnc,GAAA,CAAI4iB,aAAJ,CAAkBqD,sBAAA,CAAuBrjC,MAAzC,EAAiD,QAAjD,CAAhB;IACAu5B,OAAA,CAAQtU,YAAR,CAAqBgb,SAArB;IAEA,OAAO1G,OAAP;EA3BwC;AAzLxB;AAxcpBpxD,qBAAA,GAAA0zD,aAAA;;;;;;;;;;;;;;ACeA,IAAAz3C,KAAA,GAAAC,mBAAA;AAEA,SAASygD,aAATA,CAAuB3+C,MAAvB,EAA+B;EAC7B,QAAQA,MAAA,CAAO8mC,IAAf;IACE,KAAK1hD,eAAA,CAAUC,cAAf;MACE,OAAOqiD,0BAAA,CAA2B1nC,MAA3B,CAAP;IACF,KAAK5a,eAAA,CAAUE,SAAf;MACE,OAAOs5D,gBAAA,CAAiB5+C,MAAjB,CAAP;EAJJ;EAOA,OAAO,IAAP;AAR6B;AAW/B,SAAS0nC,0BAATA,CAAoC;EAClCrnC,GADkC;EAElComC,MAAA,GAAS,CAFyB;EAGlCE,IAHkC;EAIlC9tB,KAJkC;EAKlCC,MALkC;EAMlC6uB,aAAA,GAAgB,UANkB;EAOlCkX,aAAA,GAAgB;AAPkB,CAApC,EAQG;EACD,MAAMzX,KAAA,GAAQ7wC,iBAAA,CAAYP,cAAZ,GAA6B,UAA7B,GAA0C,UAAxD;EACA,MAAM,CAAC8oD,WAAD,EAAcC,UAAd,IAA4BF,aAAA,GAC9B,CAAClX,aAAD,EAAgBP,KAAhB,CAD8B,GAE9B,CAACA,KAAD,EAAQO,aAAR,CAFJ;EAGA,MAAMqX,aAAA,GAAgBnmC,KAAA,IAAS,CAA/B;EACA,MAAMomC,cAAA,GAAiBpmC,KAAA,GAAQ,CAA/B;EACA,MAAMkuB,SAAA,GAAY1mC,GAAA,CAAI/N,MAAtB;EACAq0C,IAAA,GAAO,IAAIxwC,WAAJ,CAAgBwwC,IAAA,CAAKvwC,MAArB,CAAP;EACA,IAAIswC,OAAA,GAAU,CAAd;EAEA,KAAK,IAAI7xC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIikB,MAApB,EAA4BjkB,CAAA,EAA5B,EAAiC;IAC/B,KAAK,MAAM8D,GAAA,GAAM8tC,MAAA,GAASuY,aAArB,EAAoCvY,MAAA,GAAS9tC,GAAlD,EAAuD8tC,MAAA,EAAvD,EAAiE;MAC/D,MAAM/D,IAAA,GAAO+D,MAAA,GAASM,SAAT,GAAqB1mC,GAAA,CAAIomC,MAAJ,CAArB,GAAmC,GAAhD;MACAE,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,UAAP,GAAoBqc,UAApB,GAAiCD,WAAnD;MACAnY,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,SAAP,GAAmBqc,UAAnB,GAAgCD,WAAlD;MACAnY,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,QAAP,GAAkBqc,UAAlB,GAA+BD,WAAjD;MACAnY,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,OAAP,GAAiBqc,UAAjB,GAA8BD,WAAhD;MACAnY,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,MAAP,GAAgBqc,UAAhB,GAA6BD,WAA/C;MACAnY,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,KAAP,GAAeqc,UAAf,GAA4BD,WAA9C;MACAnY,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,IAAP,GAAcqc,UAAd,GAA2BD,WAA7C;MACAnY,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAO,GAAP,GAAaqc,UAAb,GAA0BD,WAA5C;IAT+D;IAWjE,IAAIG,cAAA,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAG1B,MAAMvc,IAAA,GAAO+D,MAAA,GAASM,SAAT,GAAqB1mC,GAAA,CAAIomC,MAAA,EAAJ,CAArB,GAAqC,GAAlD;IACA,KAAK,IAAIzrC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIikD,cAApB,EAAoCjkD,CAAA,EAApC,EAAyC;MACvC2rC,IAAA,CAAKD,OAAA,EAAL,IAAkBhE,IAAA,GAAQ,KAAM,IAAI1nC,CAAlB,GAAwB+jD,UAAxB,GAAqCD,WAAvD;IADuC;EAhBV;EAoBjC,OAAO;IAAErY,MAAF;IAAUC;EAAV,CAAP;AA/BC;AAkCH,SAASkY,gBAATA,CAA0B;EACxBv+C,GADwB;EAExBomC,MAAA,GAAS,CAFe;EAGxBE,IAHwB;EAIxBD,OAAA,GAAU,CAJc;EAKxB7tB,KALwB;EAMxBC;AANwB,CAA1B,EAOG;EACD,IAAIjkB,CAAA,GAAI,CAAR;EACA,MAAMqqD,KAAA,GAAQ7+C,GAAA,CAAI/N,MAAJ,IAAc,CAA5B;EACA,MAAM6sD,KAAA,GAAQ,IAAIhpD,WAAJ,CAAgBkK,GAAA,CAAIjK,MAApB,EAA4BqwC,MAA5B,EAAoCyY,KAApC,CAAd;EAEA,IAAI3oD,iBAAA,CAAYP,cAAhB,EAAgC;IAG9B,OAAOnB,CAAA,GAAIqqD,KAAA,GAAQ,CAAnB,EAAsBrqD,CAAA,IAAK,CAAL,EAAQ6xC,OAAA,IAAW,CAAzC,EAA4C;MAC1C,MAAM0Y,EAAA,GAAKD,KAAA,CAAMtqD,CAAN,CAAX;MACA,MAAMwqD,EAAA,GAAKF,KAAA,CAAMtqD,CAAA,GAAI,CAAV,CAAX;MACA,MAAMyqD,EAAA,GAAKH,KAAA,CAAMtqD,CAAA,GAAI,CAAV,CAAX;MAEA8xC,IAAA,CAAKD,OAAL,IAAgB0Y,EAAA,GAAK,UAArB;MACAzY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqB0Y,EAAA,KAAO,EAAR,GAAeC,EAAA,IAAM,CAArB,GAA0B,UAA9C;MACA1Y,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqB2Y,EAAA,KAAO,EAAR,GAAeC,EAAA,IAAM,EAArB,GAA2B,UAA/C;MACA3Y,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqB4Y,EAAA,KAAO,CAAR,GAAa,UAAjC;IAR0C;IAW5C,KAAK,IAAItkD,CAAA,GAAInG,CAAA,GAAI,CAAZ,EAAe0qD,EAAA,GAAKl/C,GAAA,CAAI/N,MAAxB,EAAgC0I,CAAA,GAAIukD,EAAzC,EAA6CvkD,CAAA,IAAK,CAAlD,EAAqD;MACnD2rC,IAAA,CAAKD,OAAA,EAAL,IACErmC,GAAA,CAAIrF,CAAJ,IAAUqF,GAAA,CAAIrF,CAAA,GAAI,CAAR,KAAc,CAAxB,GAA8BqF,GAAA,CAAIrF,CAAA,GAAI,CAAR,KAAc,EAA5C,GAAkD,UADpD;IADmD;EAdvB,CAAhC,MAkBO;IACL,OAAOnG,CAAA,GAAIqqD,KAAA,GAAQ,CAAnB,EAAsBrqD,CAAA,IAAK,CAAL,EAAQ6xC,OAAA,IAAW,CAAzC,EAA4C;MAC1C,MAAM0Y,EAAA,GAAKD,KAAA,CAAMtqD,CAAN,CAAX;MACA,MAAMwqD,EAAA,GAAKF,KAAA,CAAMtqD,CAAA,GAAI,CAAV,CAAX;MACA,MAAMyqD,EAAA,GAAKH,KAAA,CAAMtqD,CAAA,GAAI,CAAV,CAAX;MAEA8xC,IAAA,CAAKD,OAAL,IAAgB0Y,EAAA,GAAK,IAArB;MACAzY,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqB0Y,EAAA,IAAM,EAAP,GAAcC,EAAA,KAAO,CAArB,GAA0B,IAA9C;MACA1Y,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqB2Y,EAAA,IAAM,EAAP,GAAcC,EAAA,KAAO,EAArB,GAA2B,IAA/C;MACA3Y,IAAA,CAAKD,OAAA,GAAU,CAAf,IAAqB4Y,EAAA,IAAM,CAAP,GAAY,IAAhC;IAR0C;IAW5C,KAAK,IAAItkD,CAAA,GAAInG,CAAA,GAAI,CAAZ,EAAe0qD,EAAA,GAAKl/C,GAAA,CAAI/N,MAAxB,EAAgC0I,CAAA,GAAIukD,EAAzC,EAA6CvkD,CAAA,IAAK,CAAlD,EAAqD;MACnD2rC,IAAA,CAAKD,OAAA,EAAL,IACGrmC,GAAA,CAAIrF,CAAJ,KAAU,EAAX,GAAkBqF,GAAA,CAAIrF,CAAA,GAAI,CAAR,KAAc,EAAhC,GAAuCqF,GAAA,CAAIrF,CAAA,GAAI,CAAR,KAAc,CAArD,GAA0D,IAD5D;IADmD;EAZhD;EAkBP,OAAO;IAAEyrC,MAAF;IAAUC;EAAV,CAAP;AAzCC;AA4CH,SAAS8Y,UAATA,CAAoBn/C,GAApB,EAAyBsmC,IAAzB,EAA+B;EAC7B,IAAIpwC,iBAAA,CAAYP,cAAhB,EAAgC;IAC9B,KAAK,IAAInB,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK0E,GAAA,CAAI/N,MAApB,EAA4BuC,CAAA,GAAI8G,EAArC,EAAyC9G,CAAA,EAAzC,EAA8C;MAC5C8xC,IAAA,CAAK9xC,CAAL,IAAWwL,GAAA,CAAIxL,CAAJ,IAAS,OAAV,GAAqB,UAA/B;IAD4C;EADhB,CAAhC,MAIO;IACL,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK0E,GAAA,CAAI/N,MAApB,EAA4BuC,CAAA,GAAI8G,EAArC,EAAyC9G,CAAA,EAAzC,EAA8C;MAC5C8xC,IAAA,CAAK9xC,CAAL,IAAWwL,GAAA,CAAIxL,CAAJ,IAAS,SAAV,GAAuB,UAAjC;IAD4C;EADzC;AALsB;;;;;;;;;;;;AC9F/B,MAAMyO,mBAAA,GAAsBtQ,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAA5B;AA3BA9T,2BAAA,GAAAshB,mBAAA;AA6BAA,mBAAA,CAAoBC,UAApB,GAAiC,IAAjC;AACAD,mBAAA,CAAoBwQ,SAApB,GAAgC,EAAhC;;;;;;;;;;;;ACfA,IAAA7V,KAAA,GAAAC,mBAAA;AAWA,MAAMuhD,YAAA,GAAe;EACnBC,OAAA,EAAS,CADU;EAEnBC,IAAA,EAAM,CAFa;EAGnBC,KAAA,EAAO;AAHY,CAArB;AAMA,MAAMC,UAAA,GAAa;EACjBH,OAAA,EAAS,CADQ;EAEjBI,MAAA,EAAQ,CAFS;EAGjBC,eAAA,EAAiB,CAHA;EAIjBC,KAAA,EAAO,CAJU;EAKjBC,OAAA,EAAS,CALQ;EAMjBL,KAAA,EAAO,CANU;EAOjBM,IAAA,EAAM,CAPW;EAQjBC,aAAA,EAAe,CARE;EASjBC,cAAA,EAAgB;AATC,CAAnB;AAYA,SAASC,UAATA,CAAoB7iD,MAApB,EAA4B;EAC1B,IACE,EACEA,MAAA,YAAkB/L,KAAlB,IACC,OAAO+L,MAAP,KAAkB,QAAlB,IAA8BA,MAAA,KAAW,IAD1C,CAFJ,EAKE;IACA,IAAAhM,iBAAA,EACE,gEADF;EADA;EAKF,QAAQgM,MAAA,CAAOhK,IAAf;IACE,KAAK,gBAAL;MACE,OAAO,IAAIY,oBAAJ,CAAmBoJ,MAAA,CAAOjK,OAA1B,CAAP;IACF,KAAK,qBAAL;MACE,OAAO,IAAIS,yBAAJ,CAAwBwJ,MAAA,CAAOjK,OAA/B,CAAP;IACF,KAAK,mBAAL;MACE,OAAO,IAAII,uBAAJ,CAAsB6J,MAAA,CAAOjK,OAA7B,EAAsCiK,MAAA,CAAO5J,IAA7C,CAAP;IACF,KAAK,6BAAL;MACE,OAAO,IAAIK,iCAAJ,CAAgCuJ,MAAA,CAAOjK,OAAvC,EAAgDiK,MAAA,CAAOtJ,MAAvD,CAAP;IACF,KAAK,uBAAL;MACE,OAAO,IAAIL,2BAAJ,CAA0B2J,MAAA,CAAOjK,OAAjC,EAA0CiK,MAAA,CAAO1J,OAAjD,CAAP;IACF;MACE,OAAO,IAAID,2BAAJ,CAA0B2J,MAAA,CAAOjK,OAAjC,EAA0CiK,MAAA,CAAOtG,QAAP,EAA1C,CAAP;EAZJ;AAX0B;AA2B5B,MAAMyN,cAAN,CAAqB;EACnBlR,YAAY6sD,UAAZ,EAAwBC,UAAxB,EAAoCC,MAApC,EAA4C;IAC1C,KAAKF,UAAL,GAAkBA,UAAlB;IACA,KAAKC,UAAL,GAAkBA,UAAlB;IACA,KAAKC,MAAL,GAAcA,MAAd;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,QAAL,GAAgB,CAAhB;IACA,KAAKC,WAAL,GAAmB3tD,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAnB;IACA,KAAK8qD,iBAAL,GAAyB5tD,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAzB;IACA,KAAK+qD,oBAAL,GAA4B7tD,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAA5B;IACA,KAAKgrD,aAAL,GAAqB9tD,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAArB;IAEA,KAAKirD,kBAAL,GAA0BlvC,KAAA,IAAS;MACjC,MAAMtU,IAAA,GAAOsU,KAAA,CAAMtU,IAAnB;MACA,IAAIA,IAAA,CAAKgjD,UAAL,KAAoB,KAAKD,UAA7B,EAAyC;QACvC;MADuC;MAGzC,IAAI/iD,IAAA,CAAKyjD,MAAT,EAAiB;QACf,KAAK,CAAAC,oBAAL,CAA2B1jD,IAA3B;QACA;MAFe;MAIjB,IAAIA,IAAA,CAAKyQ,QAAT,EAAmB;QACjB,MAAMyyC,UAAA,GAAaljD,IAAA,CAAKkjD,UAAxB;QACA,MAAM7yC,UAAA,GAAa,KAAKizC,oBAAL,CAA0BJ,UAA1B,CAAnB;QACA,IAAI,CAAC7yC,UAAL,EAAiB;UACf,MAAM,IAAInc,KAAJ,CAAW,2BAA0BgvD,UAA3B,EAAV,CAAN;QADe;QAGjB,OAAO,KAAKI,oBAAL,CAA0BJ,UAA1B,CAAP;QAEA,IAAIljD,IAAA,CAAKyQ,QAAL,KAAkByxC,YAAA,CAAaE,IAAnC,EAAyC;UACvC/xC,UAAA,CAAWvQ,OAAX,CAAmBE,IAAA,CAAKA,IAAxB;QADuC,CAAzC,MAEO,IAAIA,IAAA,CAAKyQ,QAAL,KAAkByxC,YAAA,CAAaG,KAAnC,EAA0C;UAC/ChyC,UAAA,CAAWtQ,MAAX,CAAkB+iD,UAAA,CAAW9iD,IAAA,CAAKC,MAAhB,CAAlB;QAD+C,CAA1C,MAEA;UACL,MAAM,IAAI/L,KAAJ,CAAU,0BAAV,CAAN;QADK;QAGP;MAfiB;MAiBnB,MAAMyvD,MAAA,GAAS,KAAKJ,aAAL,CAAmBvjD,IAAA,CAAK2jD,MAAxB,CAAf;MACA,IAAI,CAACA,MAAL,EAAa;QACX,MAAM,IAAIzvD,KAAJ,CAAW,+BAA8B8L,IAAA,CAAK2jD,MAApC,EAAV,CAAN;MADW;MAGb,IAAI3jD,IAAA,CAAKkjD,UAAT,EAAqB;QACnB,MAAMU,YAAA,GAAe,KAAKb,UAA1B;QACA,MAAMc,YAAA,GAAe7jD,IAAA,CAAK+iD,UAA1B;QAEA,IAAIljD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQ6jD,MAAA,CAAO3jD,IAAA,CAAKA,IAAZ,CAAR;QAD6B,CAA/B,EAEGuG,IAFH,CAGE,UAAUu9C,MAAV,EAAkB;UAChBb,MAAA,CAAO7uC,WAAP,CAAmB;YACjB2uC,UAAA,EAAYa,YADK;YAEjBZ,UAAA,EAAYa,YAFK;YAGjBpzC,QAAA,EAAUyxC,YAAA,CAAaE,IAHN;YAIjBc,UAAA,EAAYljD,IAAA,CAAKkjD,UAJA;YAKjBljD,IAAA,EAAM8jD;UALW,CAAnB;QADgB,CAHpB,EAYE,UAAU7jD,MAAV,EAAkB;UAChBgjD,MAAA,CAAO7uC,WAAP,CAAmB;YACjB2uC,UAAA,EAAYa,YADK;YAEjBZ,UAAA,EAAYa,YAFK;YAGjBpzC,QAAA,EAAUyxC,YAAA,CAAaG,KAHN;YAIjBa,UAAA,EAAYljD,IAAA,CAAKkjD,UAJA;YAKjBjjD,MAAA,EAAQ6iD,UAAA,CAAW7iD,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA;MA1BmB;MA4BrB,IAAID,IAAA,CAAKmjD,QAAT,EAAmB;QACjB,KAAK,CAAAY,gBAAL,CAAuB/jD,IAAvB;QACA;MAFiB;MAInB2jD,MAAA,CAAO3jD,IAAA,CAAKA,IAAZ;IA9DiC,CAAnC;IAgEAijD,MAAA,CAAOxuC,gBAAP,CAAwB,SAAxB,EAAmC,KAAK+uC,kBAAxC;EA3E0C;EA8E5CntC,GAAG2tC,UAAH,EAAeC,OAAf,EAAwB;IAOtB,MAAMC,EAAA,GAAK,KAAKX,aAAhB;IACA,IAAIW,EAAA,CAAGF,UAAH,CAAJ,EAAoB;MAClB,MAAM,IAAI9vD,KAAJ,CAAW,0CAAyC8vD,UAAW,GAA/D,CAAN;IADkB;IAGpBE,EAAA,CAAGF,UAAH,IAAiBC,OAAjB;EAXsB;EAoBxBz8C,KAAKw8C,UAAL,EAAiBhkD,IAAjB,EAAuByT,SAAvB,EAAkC;IAChC,KAAKwvC,MAAL,CAAY7uC,WAAZ,CACE;MACE2uC,UAAA,EAAY,KAAKA,UADnB;MAEEC,UAAA,EAAY,KAAKA,UAFnB;MAGEW,MAAA,EAAQK,UAHV;MAIEhkD;IAJF,CADF,EAOEyT,SAPF;EADgC;EAoBlC7L,gBAAgBo8C,UAAhB,EAA4BhkD,IAA5B,EAAkCyT,SAAlC,EAA6C;IAC3C,MAAMyvC,UAAA,GAAa,KAAKA,UAAL,EAAnB;IACA,MAAM7yC,UAAA,GAAa,IAAI3Q,uBAAJ,EAAnB;IACA,KAAK4jD,oBAAL,CAA0BJ,UAA1B,IAAwC7yC,UAAxC;IACA,IAAI;MACF,KAAK4yC,MAAL,CAAY7uC,WAAZ,CACE;QACE2uC,UAAA,EAAY,KAAKA,UADnB;QAEEC,UAAA,EAAY,KAAKA,UAFnB;QAGEW,MAAA,EAAQK,UAHV;QAIEd,UAJF;QAKEljD;MALF,CADF,EAQEyT,SARF;IADE,CAAJ,CAWE,OAAOtV,EAAP,EAAW;MACXkS,UAAA,CAAWtQ,MAAX,CAAkB5B,EAAlB;IADW;IAGb,OAAOkS,UAAA,CAAWzQ,OAAlB;EAlB2C;EA+B7C6R,eAAeuyC,UAAf,EAA2BhkD,IAA3B,EAAiCmkD,gBAAjC,EAAmD1wC,SAAnD,EAA8D;IAC5D,MAAM0vC,QAAA,GAAW,KAAKA,QAAL,EAAjB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAa,KAAKA,UAFpB;MAGEC,MAAA,GAAS,KAAKA,MAHhB;IAKA,OAAO,IAAImB,cAAJ,CACL;MACE7xB,KAAA,EAAO8xB,UAAA,IAAc;QACnB,MAAMC,eAAA,GAAkB,IAAI5kD,uBAAJ,EAAxB;QACA,KAAK2jD,iBAAL,CAAuBF,QAAvB,IAAmC;UACjCkB,UADiC;UAEjCE,SAAA,EAAWD,eAFsB;UAGjCE,QAAA,EAAU,IAHuB;UAIjCC,UAAA,EAAY,IAJqB;UAKjCC,QAAA,EAAU;QALuB,CAAnC;QAOAzB,MAAA,CAAO7uC,WAAP,CACE;UACE2uC,UADF;UAEEC,UAFF;UAGEW,MAAA,EAAQK,UAHV;UAIEb,QAJF;UAKEnjD,IALF;UAME2kD,WAAA,EAAaN,UAAA,CAAWM;QAN1B,CADF,EASElxC,SATF;QAYA,OAAO6wC,eAAA,CAAgB1kD,OAAvB;MArBmB,CADvB;MAyBEglD,IAAA,EAAMP,UAAA,IAAc;QAClB,MAAMQ,cAAA,GAAiB,IAAInlD,uBAAJ,EAAvB;QACA,KAAK2jD,iBAAL,CAAuBF,QAAvB,EAAiCqB,QAAjC,GAA4CK,cAA5C;QACA5B,MAAA,CAAO7uC,WAAP,CAAmB;UACjB2uC,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWK,IAHF;UAIjBQ,QAJiB;UAKjBwB,WAAA,EAAaN,UAAA,CAAWM;QALP,CAAnB;QASA,OAAOE,cAAA,CAAejlD,OAAtB;MAZkB,CAzBtB;MAwCEmT,MAAA,EAAQ9S,MAAA,IAAU;QAChB,IAAA9L,YAAA,EAAO8L,MAAA,YAAkB/L,KAAzB,EAAgC,iCAAhC;QACA,MAAM4wD,gBAAA,GAAmB,IAAIplD,uBAAJ,EAAzB;QACA,KAAK2jD,iBAAL,CAAuBF,QAAvB,EAAiCsB,UAAjC,GAA8CK,gBAA9C;QACA,KAAKzB,iBAAL,CAAuBF,QAAvB,EAAiCuB,QAAjC,GAA4C,IAA5C;QACAzB,MAAA,CAAO7uC,WAAP,CAAmB;UACjB2uC,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWC,MAHF;UAIjBY,QAJiB;UAKjBljD,MAAA,EAAQ6iD,UAAA,CAAW7iD,MAAX;QALS,CAAnB;QAQA,OAAO6kD,gBAAA,CAAiBllD,OAAxB;MAbgB;IAxCpB,CADK,EAyDLukD,gBAzDK,CAAP;EAN4D;EAmE9D,CAAAJ,iBAAkB/jD,IAAlB,EAAwB;IACtB,MAAMmjD,QAAA,GAAWnjD,IAAA,CAAKmjD,QAAtB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAahjD,IAAA,CAAK+iD,UAFpB;MAGEE,MAAA,GAAS,KAAKA,MAHhB;IAIA,MAAM/5B,IAAA,GAAO,IAAb;MACEy6B,MAAA,GAAS,KAAKJ,aAAL,CAAmBvjD,IAAA,CAAK2jD,MAAxB,CADX;IAGA,MAAMoB,UAAA,GAAa;MACjBvrC,QAAQ9hB,KAAR,EAAeia,IAAA,GAAO,CAAtB,EAAyB8B,SAAzB,EAAoC;QAClC,IAAI,KAAKuxC,WAAT,EAAsB;UACpB;QADoB;QAGtB,MAAMC,eAAA,GAAkB,KAAKN,WAA7B;QACA,KAAKA,WAAL,IAAoBhzC,IAApB;QAIA,IAAIszC,eAAA,GAAkB,CAAlB,IAAuB,KAAKN,WAAL,IAAoB,CAA/C,EAAkD;UAChD,KAAKO,cAAL,GAAsB,IAAIxlD,uBAAJ,EAAtB;UACA,KAAKga,KAAL,GAAa,KAAKwrC,cAAL,CAAoBtlD,OAAjC;QAFgD;QAIlDqjD,MAAA,CAAO7uC,WAAP,CACE;UACE2uC,UADF;UAEEC,UAFF;UAGES,MAAA,EAAQnB,UAAA,CAAWI,OAHrB;UAIES,QAJF;UAKEzrD;QALF,CADF,EAQE+b,SARF;MAbkC,CADnB;MA0BjB6F,MAAA,EAAQ;QACN,IAAI,KAAK0rC,WAAT,EAAsB;UACpB;QADoB;QAGtB,KAAKA,WAAL,GAAmB,IAAnB;QACA/B,MAAA,CAAO7uC,WAAP,CAAmB;UACjB2uC,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWG,KAHF;UAIjBU;QAJiB,CAAnB;QAMA,OAAOj6B,IAAA,CAAKk6B,WAAL,CAAiBD,QAAjB,CAAP;MAXM,CA1BS;MAwCjBnzC,MAAM/P,MAAN,EAAc;QACZ,IAAA9L,YAAA,EAAO8L,MAAA,YAAkB/L,KAAzB,EAAgC,gCAAhC;QACA,IAAI,KAAK8wD,WAAT,EAAsB;UACpB;QADoB;QAGtB,KAAKA,WAAL,GAAmB,IAAnB;QACA/B,MAAA,CAAO7uC,WAAP,CAAmB;UACjB2uC,UADiB;UAEjBC,UAFiB;UAGjBS,MAAA,EAAQnB,UAAA,CAAWD,KAHF;UAIjBc,QAJiB;UAKjBljD,MAAA,EAAQ6iD,UAAA,CAAW7iD,MAAX;QALS,CAAnB;MANY,CAxCG;MAuDjBilD,cAAA,EAAgB,IAAIxlD,uBAAJ,EAvDC;MAwDjB2Z,MAAA,EAAQ,IAxDS;MAyDjBI,QAAA,EAAU,IAzDO;MA0DjBurC,WAAA,EAAa,KA1DI;MA2DjBL,WAAA,EAAa3kD,IAAA,CAAK2kD,WA3DD;MA4DjBjrC,KAAA,EAAO;IA5DU,CAAnB;IA+DAqrC,UAAA,CAAWG,cAAX,CAA0BplD,OAA1B;IACAilD,UAAA,CAAWrrC,KAAX,GAAmBqrC,UAAA,CAAWG,cAAX,CAA0BtlD,OAA7C;IACA,KAAKwjD,WAAL,CAAiBD,QAAjB,IAA6B4B,UAA7B;IAEA,IAAIllD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;MAC7BA,OAAA,CAAQ6jD,MAAA,CAAO3jD,IAAA,CAAKA,IAAZ,EAAkB+kD,UAAlB,CAAR;IAD6B,CAA/B,EAEGx+C,IAFH,CAGE,YAAY;MACV08C,MAAA,CAAO7uC,WAAP,CAAmB;QACjB2uC,UADiB;QAEjBC,UAFiB;QAGjBS,MAAA,EAAQnB,UAAA,CAAWO,cAHF;QAIjBM,QAJiB;QAKjBjwC,OAAA,EAAS;MALQ,CAAnB;IADU,CAHd,EAYE,UAAUjT,MAAV,EAAkB;MAChBgjD,MAAA,CAAO7uC,WAAP,CAAmB;QACjB2uC,UADiB;QAEjBC,UAFiB;QAGjBS,MAAA,EAAQnB,UAAA,CAAWO,cAHF;QAIjBM,QAJiB;QAKjBljD,MAAA,EAAQ6iD,UAAA,CAAW7iD,MAAX;MALS,CAAnB;IADgB,CAZpB;EA3EsB;EAmGxB,CAAAyjD,qBAAsB1jD,IAAtB,EAA4B;IAC1B,MAAMmjD,QAAA,GAAWnjD,IAAA,CAAKmjD,QAAtB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAahjD,IAAA,CAAK+iD,UAFpB;MAGEE,MAAA,GAAS,KAAKA,MAHhB;IAIA,MAAMkC,gBAAA,GAAmB,KAAK9B,iBAAL,CAAuBF,QAAvB,CAAzB;MACE4B,UAAA,GAAa,KAAK3B,WAAL,CAAiBD,QAAjB,CADf;IAGA,QAAQnjD,IAAA,CAAKyjD,MAAb;MACE,KAAKnB,UAAA,CAAWO,cAAhB;QACE,IAAI7iD,IAAA,CAAKkT,OAAT,EAAkB;UAChBiyC,gBAAA,CAAiBZ,SAAjB,CAA2BzkD,OAA3B;QADgB,CAAlB,MAEO;UACLqlD,gBAAA,CAAiBZ,SAAjB,CAA2BxkD,MAA3B,CAAkC+iD,UAAA,CAAW9iD,IAAA,CAAKC,MAAhB,CAAlC;QADK;QAGP;MACF,KAAKqiD,UAAA,CAAWM,aAAhB;QACE,IAAI5iD,IAAA,CAAKkT,OAAT,EAAkB;UAChBiyC,gBAAA,CAAiBX,QAAjB,CAA0B1kD,OAA1B;QADgB,CAAlB,MAEO;UACLqlD,gBAAA,CAAiBX,QAAjB,CAA0BzkD,MAA1B,CAAiC+iD,UAAA,CAAW9iD,IAAA,CAAKC,MAAhB,CAAjC;QADK;QAGP;MACF,KAAKqiD,UAAA,CAAWK,IAAhB;QAEE,IAAI,CAACoC,UAAL,EAAiB;UACf9B,MAAA,CAAO7uC,WAAP,CAAmB;YACjB2uC,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBjwC,OAAA,EAAS;UALQ,CAAnB;UAOA;QARe;QAYjB,IAAI6xC,UAAA,CAAWJ,WAAX,IAA0B,CAA1B,IAA+B3kD,IAAA,CAAK2kD,WAAL,GAAmB,CAAtD,EAAyD;UACvDI,UAAA,CAAWG,cAAX,CAA0BplD,OAA1B;QADuD;QAIzDilD,UAAA,CAAWJ,WAAX,GAAyB3kD,IAAA,CAAK2kD,WAA9B;QAEA,IAAI9kD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQilD,UAAA,CAAW1rC,MAAX,IAAR;QAD6B,CAA/B,EAEG9S,IAFH,CAGE,YAAY;UACV08C,MAAA,CAAO7uC,WAAP,CAAmB;YACjB2uC,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBjwC,OAAA,EAAS;UALQ,CAAnB;QADU,CAHd,EAYE,UAAUjT,MAAV,EAAkB;UAChBgjD,MAAA,CAAO7uC,WAAP,CAAmB;YACjB2uC,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBljD,MAAA,EAAQ6iD,UAAA,CAAW7iD,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA;MACF,KAAKqiD,UAAA,CAAWI,OAAhB;QACE,IAAAvuD,YAAA,EAAOgxD,gBAAP,EAAyB,uCAAzB;QACA,IAAIA,gBAAA,CAAiBT,QAArB,EAA+B;UAC7B;QAD6B;QAG/BS,gBAAA,CAAiBd,UAAjB,CAA4B7qC,OAA5B,CAAoCxZ,IAAA,CAAKtI,KAAzC;QACA;MACF,KAAK4qD,UAAA,CAAWG,KAAhB;QACE,IAAAtuD,YAAA,EAAOgxD,gBAAP,EAAyB,qCAAzB;QACA,IAAIA,gBAAA,CAAiBT,QAArB,EAA+B;UAC7B;QAD6B;QAG/BS,gBAAA,CAAiBT,QAAjB,GAA4B,IAA5B;QACAS,gBAAA,CAAiBd,UAAjB,CAA4B/qC,KAA5B;QACA,KAAK,CAAA8rC,sBAAL,CAA6BD,gBAA7B,EAA+ChC,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWD,KAAhB;QACE,IAAAluD,YAAA,EAAOgxD,gBAAP,EAAyB,qCAAzB;QACAA,gBAAA,CAAiBd,UAAjB,CAA4Br0C,KAA5B,CAAkC8yC,UAAA,CAAW9iD,IAAA,CAAKC,MAAhB,CAAlC;QACA,KAAK,CAAAmlD,sBAAL,CAA6BD,gBAA7B,EAA+ChC,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWE,eAAhB;QACE,IAAIxiD,IAAA,CAAKkT,OAAT,EAAkB;UAChBiyC,gBAAA,CAAiBV,UAAjB,CAA4B3kD,OAA5B;QADgB,CAAlB,MAEO;UACLqlD,gBAAA,CAAiBV,UAAjB,CAA4B1kD,MAA5B,CAAmC+iD,UAAA,CAAW9iD,IAAA,CAAKC,MAAhB,CAAnC;QADK;QAGP,KAAK,CAAAmlD,sBAAL,CAA6BD,gBAA7B,EAA+ChC,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWC,MAAhB;QACE,IAAI,CAACwC,UAAL,EAAiB;UACf;QADe;QAIjB,IAAIllD,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQilD,UAAA,CAAWtrC,QAAX,GAAsBqpC,UAAA,CAAW9iD,IAAA,CAAKC,MAAhB,CAAtB,CAAR;QAD6B,CAA/B,EAEGsG,IAFH,CAGE,YAAY;UACV08C,MAAA,CAAO7uC,WAAP,CAAmB;YACjB2uC,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWE,eAHF;YAIjBW,QAJiB;YAKjBjwC,OAAA,EAAS;UALQ,CAAnB;QADU,CAHd,EAYE,UAAUjT,MAAV,EAAkB;UAChBgjD,MAAA,CAAO7uC,WAAP,CAAmB;YACjB2uC,UADiB;YAEjBC,UAFiB;YAGjBS,MAAA,EAAQnB,UAAA,CAAWE,eAHF;YAIjBW,QAJiB;YAKjBljD,MAAA,EAAQ6iD,UAAA,CAAW7iD,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA8kD,UAAA,CAAWG,cAAX,CAA0BnlD,MAA1B,CAAiC+iD,UAAA,CAAW9iD,IAAA,CAAKC,MAAhB,CAAjC;QACA8kD,UAAA,CAAWC,WAAX,GAAyB,IAAzB;QACA,OAAO,KAAK5B,WAAL,CAAiBD,QAAjB,CAAP;QACA;MACF;QACE,MAAM,IAAIjvD,KAAJ,CAAU,wBAAV,CAAN;IAvHJ;EAR0B;EAmI5B,MAAM,CAAAkxD,sBAANA,CAA8BD,gBAA9B,EAAgDhC,QAAhD,EAA0D;IAGxD,MAAMtjD,OAAA,CAAQwlD,UAAR,CAAmB,CACvBF,gBAAA,CAAiBZ,SAAjB,EAA4B3kD,OADL,EAEvBulD,gBAAA,CAAiBX,QAAjB,EAA2B5kD,OAFJ,EAGvBulD,gBAAA,CAAiBV,UAAjB,EAA6B7kD,OAHN,CAAnB,CAAN;IAKA,OAAO,KAAKyjD,iBAAL,CAAuBF,QAAvB,CAAP;EARwD;EAW1D96C,QAAA,EAAU;IACR,KAAK46C,MAAL,CAAYvuC,mBAAZ,CAAgC,SAAhC,EAA2C,KAAK8uC,kBAAhD;EADQ;AA1cS;AAvErB/+D,sBAAA,GAAA2iB,cAAA;;;;;;;;;;;;ACeA,IAAA1G,KAAA,GAAAC,mBAAA;AAEA,MAAMob,QAAN,CAAe;EACb,CAAAupC,WAAA;EAEA,CAAAtlD,IAAA;EAEA9J,YAAY;IAAEqvD,UAAF;IAAcC;EAAd,CAAZ,EAAqC;IACnC,KAAK,CAAAF,WAAL,GAAoBC,UAApB;IACA,KAAK,CAAAvlD,IAAL,GAAawlD,OAAb;EAFmC;EAKrCC,OAAA,EAAS;IACP,OAAO,KAAK,CAAAzlD,IAAZ;EADO;EAITS,IAAIxK,IAAJ,EAAU;IACR,OAAO,KAAK,CAAAqvD,WAAL,CAAkB7kD,GAAlB,CAAsBxK,IAAtB,KAA+B,IAAtC;EADQ;EAIVqpB,OAAA,EAAS;IACP,OAAO,IAAAjnB,mBAAA,EAAc,KAAK,CAAAitD,WAAnB,CAAP;EADO;EAITvvC,IAAI9f,IAAJ,EAAU;IACR,OAAO,KAAK,CAAAqvD,WAAL,CAAkBvvC,GAAlB,CAAsB9f,IAAtB,CAAP;EADQ;AAtBG;AAjBfxR,gBAAA,GAAAs3B,QAAA;;;;;;;;;;;;ACeA,IAAArb,KAAA,GAAAC,mBAAA;AACA,IAAA0d,WAAA,GAAA1d,mBAAA;AAEA,MAAM+kD,QAAA,GAAWC,MAAA,CAAO,UAAP,CAAjB;AAEA,MAAMC,oBAAN,CAA2B;EACzB,CAAAtL,OAAA,GAAW,IAAX;EAEApkD,YAAYD,IAAZ,EAAkB+X,MAAlB,EAA0B;IACxB,KAAK/X,IAAL,GAAYA,IAAZ;IACA,KAAK+X,MAAL,GAAcA,MAAd;EAFwB;EAQ1B,IAAIssC,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAA,OAAZ;EADY;EAOduL,YAAYC,QAAZ,EAAsBxL,OAAtB,EAA+B;IAC7B,IAAIwL,QAAA,KAAaJ,QAAjB,EAA2B;MACzB,IAAAzxD,iBAAA,EAAY,uCAAZ;IADyB;IAG3B,KAAK,CAAAqmD,OAAL,GAAgBA,OAAhB;EAJ6B;AAlBN;AA0B3B,MAAMz+B,qBAAN,CAA4B;EAC1B,CAAAkqC,aAAA,GAAiB,IAAjB;EAEA,CAAAC,MAAA,GAAU,IAAI3lD,GAAJ,EAAV;EAEA,CAAA4lD,WAAA,GAAe,IAAf;EAEA,CAAAC,KAAA,GAAS,IAAT;EAEAhwD,YAAY8J,IAAZ,EAAkB;IAChB,KAAK/J,IAAL,GAAY,IAAZ;IACA,KAAKkwD,OAAL,GAAe,IAAf;IAEA,IAAInmD,IAAA,KAAS,IAAb,EAAmB;MACjB;IADiB;IAGnB,KAAK/J,IAAL,GAAY+J,IAAA,CAAK/J,IAAjB;IACA,KAAKkwD,OAAL,GAAenmD,IAAA,CAAKmmD,OAApB;IACA,KAAK,CAAAD,KAAL,GAAclmD,IAAA,CAAKkmD,KAAnB;IACA,WAAWvN,KAAX,IAAoB34C,IAAA,CAAKgmD,MAAzB,EAAiC;MAC/B,KAAK,CAAAA,MAAL,CAAa52C,GAAb,CACEupC,KAAA,CAAMjuC,EADR,EAEE,IAAIk7C,oBAAJ,CAAyBjN,KAAA,CAAM1iD,IAA/B,EAAqC0iD,KAAA,CAAM3qC,MAA3C,CAFF;IAD+B;IAOjC,IAAIhO,IAAA,CAAKomD,SAAL,KAAmB,KAAvB,EAA8B;MAC5B,WAAWzN,KAAX,IAAoB,KAAK,CAAAqN,MAAL,CAAapzC,MAAb,EAApB,EAA2C;QACzC+lC,KAAA,CAAMkN,WAAN,CAAkBH,QAAlB,EAA4B,KAA5B;MADyC;IADf;IAM9B,WAAWrvC,EAAX,IAAiBrW,IAAA,CAAKqW,EAAtB,EAA0B;MACxB,KAAK,CAAA2vC,MAAL,CAAavlD,GAAb,CAAiB4V,EAAjB,EAAqBwvC,WAArB,CAAiCH,QAAjC,EAA2C,IAA3C;IADwB;IAI1B,WAAWW,GAAX,IAAkBrmD,IAAA,CAAKqmD,GAAvB,EAA4B;MAC1B,KAAK,CAAAL,MAAL,CAAavlD,GAAb,CAAiB4lD,GAAjB,EAAsBR,WAAtB,CAAkCH,QAAlC,EAA4C,KAA5C;IAD0B;IAK5B,KAAK,CAAAO,WAAL,GAAoB,KAAKK,OAAL,EAApB;EAhCgB;EAmClB,CAAAC,6BAA8BC,KAA9B,EAAqC;IACnC,MAAMzxD,MAAA,GAASyxD,KAAA,CAAMzxD,MAArB;IACA,IAAIA,MAAA,GAAS,CAAb,EAAgB;MACd,OAAO,IAAP;IADc;IAGhB,MAAM0xD,QAAA,GAAWD,KAAA,CAAM,CAAN,CAAjB;IACA,KAAK,IAAIlvD,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvC,MAApB,EAA4BuC,CAAA,EAA5B,EAAiC;MAC/B,MAAM6vB,OAAA,GAAUq/B,KAAA,CAAMlvD,CAAN,CAAhB;MACA,IAAIovD,KAAJ;MACA,IAAIjtD,KAAA,CAAM6zB,OAAN,CAAcnG,OAAd,CAAJ,EAA4B;QAC1Bu/B,KAAA,GAAQ,KAAK,CAAAH,4BAAL,CAAmCp/B,OAAnC,CAAR;MAD0B,CAA5B,MAEO,IAAI,KAAK,CAAA6+B,MAAL,CAAajwC,GAAb,CAAiBoR,OAAjB,CAAJ,EAA+B;QACpCu/B,KAAA,GAAQ,KAAK,CAAAV,MAAL,CAAavlD,GAAb,CAAiB0mB,OAAjB,EAA0BmzB,OAAlC;MADoC,CAA/B,MAEA;QACL,IAAAtmD,UAAA,EAAM,qCAAoCmzB,OAArC,EAAL;QACA,OAAO,IAAP;MAFK;MAIP,QAAQs/B,QAAR;QACE,KAAK,KAAL;UACE,IAAI,CAACC,KAAL,EAAY;YACV,OAAO,KAAP;UADU;UAGZ;QACF,KAAK,IAAL;UACE,IAAIA,KAAJ,EAAW;YACT,OAAO,IAAP;UADS;UAGX;QACF,KAAK,KAAL;UACE,OAAO,CAACA,KAAR;QACF;UACE,OAAO,IAAP;MAdJ;IAX+B;IA4BjC,OAAOD,QAAA,KAAa,KAApB;EAlCmC;EAqCrClM,UAAU5B,KAAV,EAAiB;IACf,IAAI,KAAK,CAAAqN,MAAL,CAAar0C,IAAb,KAAsB,CAA1B,EAA6B;MAC3B,OAAO,IAAP;IAD2B;IAG7B,IAAI,CAACgnC,KAAL,EAAY;MACV,IAAA3kD,UAAA,EAAK,qCAAL;MACA,OAAO,IAAP;IAFU;IAIZ,IAAI2kD,KAAA,CAAMn+B,IAAN,KAAe,KAAnB,EAA0B;MACxB,IAAI,CAAC,KAAK,CAAAwrC,MAAL,CAAajwC,GAAb,CAAiB4iC,KAAA,CAAMjuC,EAAvB,CAAL,EAAiC;QAC/B,IAAA1W,UAAA,EAAM,qCAAoC2kD,KAAA,CAAMjuC,EAA3C,EAAL;QACA,OAAO,IAAP;MAF+B;MAIjC,OAAO,KAAK,CAAAs7C,MAAL,CAAavlD,GAAb,CAAiBk4C,KAAA,CAAMjuC,EAAvB,EAA2B4vC,OAAlC;IALwB,CAA1B,MAMO,IAAI3B,KAAA,CAAMn+B,IAAN,KAAe,MAAnB,EAA2B;MAEhC,IAAIm+B,KAAA,CAAMgO,UAAV,EAAsB;QACpB,OAAO,KAAK,CAAAJ,4BAAL,CAAmC5N,KAAA,CAAMgO,UAAzC,CAAP;MADoB;MAGtB,IAAI,CAAChO,KAAA,CAAMiO,MAAP,IAAiBjO,KAAA,CAAMiO,MAAN,KAAiB,OAAtC,EAA+C;QAE7C,WAAWl8C,EAAX,IAAiBiuC,KAAA,CAAMkO,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAajwC,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA1W,UAAA,EAAM,qCAAoC0W,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,KAAK,CAAAs7C,MAAL,CAAavlD,GAAb,CAAiBiK,EAAjB,EAAqB4vC,OAAzB,EAAkC;YAChC,OAAO,IAAP;UADgC;QALR;QAS5B,OAAO,KAAP;MAX6C,CAA/C,MAYO,IAAI3B,KAAA,CAAMiO,MAAN,KAAiB,OAArB,EAA8B;QACnC,WAAWl8C,EAAX,IAAiBiuC,KAAA,CAAMkO,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAajwC,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA1W,UAAA,EAAM,qCAAoC0W,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,CAAC,KAAK,CAAAs7C,MAAL,CAAavlD,GAAb,CAAiBiK,EAAjB,EAAqB4vC,OAA1B,EAAmC;YACjC,OAAO,KAAP;UADiC;QALT;QAS5B,OAAO,IAAP;MAVmC,CAA9B,MAWA,IAAI3B,KAAA,CAAMiO,MAAN,KAAiB,QAArB,EAA+B;QACpC,WAAWl8C,EAAX,IAAiBiuC,KAAA,CAAMkO,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAajwC,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA1W,UAAA,EAAM,qCAAoC0W,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,CAAC,KAAK,CAAAs7C,MAAL,CAAavlD,GAAb,CAAiBiK,EAAjB,EAAqB4vC,OAA1B,EAAmC;YACjC,OAAO,IAAP;UADiC;QALT;QAS5B,OAAO,KAAP;MAVoC,CAA/B,MAWA,IAAI3B,KAAA,CAAMiO,MAAN,KAAiB,QAArB,EAA+B;QACpC,WAAWl8C,EAAX,IAAiBiuC,KAAA,CAAMkO,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAb,MAAL,CAAajwC,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;YACzB,IAAA1W,UAAA,EAAM,qCAAoC0W,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,KAAK,CAAAs7C,MAAL,CAAavlD,GAAb,CAAiBiK,EAAjB,EAAqB4vC,OAAzB,EAAkC;YAChC,OAAO,KAAP;UADgC;QALR;QAS5B,OAAO,IAAP;MAVoC;MAYtC,IAAAtmD,UAAA,EAAM,mCAAkC2kD,KAAA,CAAMiO,MAAO,GAArD;MACA,OAAO,IAAP;IApDgC;IAsDlC,IAAA5yD,UAAA,EAAM,sBAAqB2kD,KAAA,CAAMn+B,IAAK,GAAtC;IACA,OAAO,IAAP;EArEe;EAwEjBssC,cAAcp8C,EAAd,EAAkB4vC,OAAA,GAAU,IAA5B,EAAkC;IAChC,IAAI,CAAC,KAAK,CAAA0L,MAAL,CAAajwC,GAAb,CAAiBrL,EAAjB,CAAL,EAA2B;MACzB,IAAA1W,UAAA,EAAM,qCAAoC0W,EAArC,EAAL;MACA;IAFyB;IAI3B,KAAK,CAAAs7C,MAAL,CAAavlD,GAAb,CAAiBiK,EAAjB,EAAqBm7C,WAArB,CAAiCH,QAAjC,EAA2C,CAAC,CAACpL,OAA7C;IAEA,KAAK,CAAAyL,aAAL,GAAsB,IAAtB;EAPgC;EAUlC,IAAIgB,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKT,OAAL,OAAmB,KAAK,CAAAL,WAA/B;EADyB;EAI3Be,SAAA,EAAW;IACT,IAAI,CAAC,KAAK,CAAAhB,MAAL,CAAar0C,IAAlB,EAAwB;MACtB,OAAO,IAAP;IADsB;IAGxB,IAAI,KAAK,CAAAu0C,KAAT,EAAiB;MACf,OAAO,KAAK,CAAAA,KAAL,CAAYjrD,KAAZ,EAAP;IADe;IAGjB,OAAO,CAAC,GAAG,KAAK,CAAA+qD,MAAL,CAAa5tD,IAAb,EAAJ,CAAP;EAPS;EAUX6uD,UAAA,EAAY;IACV,OAAO,KAAK,CAAAjB,MAAL,CAAar0C,IAAb,GAAoB,CAApB,GAAwB,IAAAtZ,mBAAA,EAAc,KAAK,CAAA2tD,MAAnB,CAAxB,GAAsD,IAA7D;EADU;EAIZkB,SAASx8C,EAAT,EAAa;IACX,OAAO,KAAK,CAAAs7C,MAAL,CAAavlD,GAAb,CAAiBiK,EAAjB,KAAwB,IAA/B;EADW;EAIb47C,QAAA,EAAU;IACR,IAAI,KAAK,CAAAP,aAAL,KAAwB,IAA5B,EAAkC;MAChC,OAAO,KAAK,CAAAA,aAAZ;IADgC;IAGlC,MAAMntC,IAAA,GAAO,IAAI6G,0BAAJ,EAAb;IAEA,WAAW,CAAC/U,EAAD,EAAKiuC,KAAL,CAAX,IAA0B,KAAK,CAAAqN,MAA/B,EAAwC;MACtCptC,IAAA,CAAKgH,MAAL,CAAY,GAAGlV,EAAG,IAAGiuC,KAAA,CAAM2B,OAAf,EAAZ;IADsC;IAGxC,OAAQ,KAAK,CAAAyL,aAAL,GAAsBntC,IAAA,CAAKmH,SAAL,EAA9B;EATQ;AAzLgB;AA9C5Bt7B,6BAAA,GAAAo3B,qBAAA;;;;;;;;;;;;ACeA,IAAAnb,KAAA,GAAAC,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AAGA,MAAMkG,sBAAN,CAA6B;EAC3B3Q,YACE;IACEnB,MADF;IAEE+R,WAFF;IAGEC,eAAA,GAAkB,KAHpB;IAIEC,0BAAA,GAA6B,IAJ/B;IAKElC,YAAA,GAAe,KALjB;IAMEC,aAAA,GAAgB;EANlB,CADF,EASEoiD,qBATF,EAUE;IACA,IAAAhzD,YAAA,EACEgzD,qBADF,EAEE,6EAFF;IAKA,KAAKC,aAAL,GAAqB,EAArB;IACA,KAAKC,gBAAL,GAAwBtgD,eAAxB;IACA,KAAKugD,2BAAL,GAAmCtgD,0BAAnC;IAEA,IAAIF,WAAA,EAAa/R,MAAb,GAAsB,CAA1B,EAA6B;MAG3B,MAAM8D,MAAA,GACJiO,WAAA,YAAuB9O,UAAvB,IACA8O,WAAA,CAAYjI,UAAZ,KAA2BiI,WAAA,CAAYjO,MAAZ,CAAmBgG,UAD9C,GAEIiI,WAAA,CAAYjO,MAFhB,GAGI,IAAIb,UAAJ,CAAe8O,WAAf,EAA4BjO,MAJlC;MAKA,KAAKuuD,aAAL,CAAmBxvD,IAAnB,CAAwBiB,MAAxB;IAR2B;IAW7B,KAAK0uD,sBAAL,GAA8BJ,qBAA9B;IACA,KAAKK,qBAAL,GAA6B,CAACziD,aAA9B;IACA,KAAK0iD,iBAAL,GAAyB,CAAC3iD,YAA1B;IACA,KAAK4iD,cAAL,GAAsB3yD,MAAtB;IAEA,KAAK4yD,kBAAL,GAA0B,IAA1B;IACA,KAAKC,aAAL,GAAqB,EAArB;IAEA,KAAKL,sBAAL,CAA4B5+C,gBAA5B,CAA6C,CAACM,KAAD,EAAQvR,KAAR,KAAkB;MAC7D,KAAKmwD,cAAL,CAAoB;QAAE5+C,KAAF;QAASvR;MAAT,CAApB;IAD6D,CAA/D;IAIA,KAAK6vD,sBAAL,CAA4B1+C,mBAA5B,CAAgD,CAACM,MAAD,EAASC,KAAT,KAAmB;MACjE,KAAK0+C,WAAL,CAAiB;QAAE3+C,MAAF;QAAUC;MAAV,CAAjB;IADiE,CAAnE;IAIA,KAAKm+C,sBAAL,CAA4Bz+C,0BAA5B,CAAuDpR,KAAA,IAAS;MAC9D,KAAKmwD,cAAL,CAAoB;QAAEnwD;MAAF,CAApB;IAD8D,CAAhE;IAIA,KAAK6vD,sBAAL,CAA4Bx+C,0BAA5B,CAAuD,MAAM;MAC3D,KAAKg/C,kBAAL;IAD2D,CAA7D;IAIA,KAAKR,sBAAL,CAA4Bh+C,cAA5B;EA7CA;EAgDFs+C,eAAe;IAAE5+C,KAAF;IAASvR;EAAT,CAAf,EAAiC;IAG/B,MAAMmB,MAAA,GACJnB,KAAA,YAAiBM,UAAjB,IACAN,KAAA,CAAMmH,UAAN,KAAqBnH,KAAA,CAAMmB,MAAN,CAAagG,UADlC,GAEInH,KAAA,CAAMmB,MAFV,GAGI,IAAIb,UAAJ,CAAeN,KAAf,EAAsBmB,MAJ5B;IAMA,IAAIoQ,KAAA,KAAUjS,SAAd,EAAyB;MACvB,IAAI,KAAK2wD,kBAAT,EAA6B;QAC3B,KAAKA,kBAAL,CAAwBK,QAAxB,CAAiCnvD,MAAjC;MAD2B,CAA7B,MAEO;QACL,KAAKuuD,aAAL,CAAmBxvD,IAAnB,CAAwBiB,MAAxB;MADK;IAHgB,CAAzB,MAMO;MACL,MAAMovD,KAAA,GAAQ,KAAKL,aAAL,CAAmB95B,IAAnB,CAAwB,UAAU5T,WAAV,EAAuB;QAC3D,IAAIA,WAAA,CAAYguC,MAAZ,KAAuBj/C,KAA3B,EAAkC;UAChC,OAAO,KAAP;QADgC;QAGlCiR,WAAA,CAAY8tC,QAAZ,CAAqBnvD,MAArB;QACA,OAAO,IAAP;MAL2D,CAA/C,CAAd;MAOA,IAAA1E,YAAA,EACE8zD,KADF,EAEE,yEAFF;IARK;EAfwB;EA8BjC,IAAIE,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKR,kBAAL,EAAyBS,OAAzB,IAAoC,CAA3C;EAD2B;EAI7BN,YAAY1uC,GAAZ,EAAiB;IACf,IAAIA,GAAA,CAAIhQ,KAAJ,KAAcpS,SAAlB,EAA6B;MAE3B,KAAK4wD,aAAL,CAAmB,CAAnB,GAAuBx/C,UAAvB,GAAoC;QAAEe,MAAA,EAAQiQ,GAAA,CAAIjQ;MAAd,CAApC;IAF2B,CAA7B,MAGO;MACL,KAAKw+C,kBAAL,EAAyBv/C,UAAzB,GAAsC;QACpCe,MAAA,EAAQiQ,GAAA,CAAIjQ,MADwB;QAEpCC,KAAA,EAAOgQ,GAAA,CAAIhQ;MAFyB,CAAtC;IADK;EAJQ;EAYjB2+C,mBAAA,EAAqB;IACnB,KAAKJ,kBAAL,EAAyB5gD,eAAzB;IACA,KAAKsgD,gBAAL,GAAwB,IAAxB;EAFmB;EAKrBgB,mBAAmBl2C,MAAnB,EAA2B;IACzB,MAAM7a,CAAA,GAAI,KAAKswD,aAAL,CAAmBU,OAAnB,CAA2Bn2C,MAA3B,CAAV;IACA,IAAI7a,CAAA,IAAK,CAAT,EAAY;MACV,KAAKswD,aAAL,CAAmBv/B,MAAnB,CAA0B/wB,CAA1B,EAA6B,CAA7B;IADU;EAFa;EAO3B6hB,cAAA,EAAgB;IACd,IAAAhlB,YAAA,EACE,CAAC,KAAKwzD,kBADR,EAEE,+DAFF;IAIA,MAAMY,YAAA,GAAe,KAAKnB,aAA1B;IACA,KAAKA,aAAL,GAAqB,IAArB;IACA,OAAO,IAAIoB,4BAAJ,CACL,IADK,EAELD,YAFK,EAGL,KAAKlB,gBAHA,EAIL,KAAKC,2BAJA,CAAP;EAPc;EAehBntC,eAAelR,KAAf,EAAsBQ,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAK0+C,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMh2C,MAAA,GAAS,IAAIs2C,iCAAJ,CAAsC,IAAtC,EAA4Cx/C,KAA5C,EAAmDQ,GAAnD,CAAf;IACA,KAAK89C,sBAAL,CAA4B/9C,gBAA5B,CAA6CP,KAA7C,EAAoDQ,GAApD;IACA,KAAKm+C,aAAL,CAAmBhwD,IAAnB,CAAwBua,MAAxB;IACA,OAAOA,MAAP;EAPyB;EAU3B8G,kBAAkBhZ,MAAlB,EAA0B;IACxB,KAAK0nD,kBAAL,EAAyB50C,MAAzB,CAAgC9S,MAAhC;IAEA,WAAWkS,MAAX,IAAqB,KAAKy1C,aAAL,CAAmB3sD,KAAnB,CAAyB,CAAzB,CAArB,EAAkD;MAChDkX,MAAA,CAAOY,MAAP,CAAc9S,MAAd;IADgD;IAGlD,KAAKsnD,sBAAL,CAA4B79C,KAA5B;EANwB;AA9IC;AAnB7BjlB,8BAAA,GAAAoiB,sBAAA;AA4KA,MAAM2hD,4BAAN,CAAmC;EACjCtyD,YACEutD,MADF,EAEE8E,YAFF,EAGExhD,eAAA,GAAkB,KAHpB,EAIEC,0BAAA,GAA6B,IAJ/B,EAKE;IACA,KAAK0hD,OAAL,GAAejF,MAAf;IACA,KAAKkF,KAAL,GAAa5hD,eAAA,IAAmB,KAAhC;IACA,KAAK6hD,SAAL,GAAiB,IAAA/xB,wBAAA,EAAU7vB,0BAAV,IACbA,0BADa,GAEb,IAFJ;IAGA,KAAKogD,aAAL,GAAqBmB,YAAA,IAAgB,EAArC;IACA,KAAKH,OAAL,GAAe,CAAf;IACA,WAAW1wD,KAAX,IAAoB,KAAK0vD,aAAzB,EAAwC;MACtC,KAAKgB,OAAL,IAAgB1wD,KAAA,CAAMmH,UAAtB;IADsC;IAGxC,KAAKgqD,SAAL,GAAiB,EAAjB;IACA,KAAKC,aAAL,GAAqBjpD,OAAA,CAAQC,OAAR,EAArB;IACA2jD,MAAA,CAAOkE,kBAAP,GAA4B,IAA5B;IAEA,KAAKv/C,UAAL,GAAkB,IAAlB;EAfA;EAkBF4/C,SAAStwD,KAAT,EAAgB;IACd,IAAI,KAAKixD,KAAT,EAAgB;MACd;IADc;IAGhB,IAAI,KAAKE,SAAL,CAAe9zD,MAAf,GAAwB,CAA5B,EAA+B;MAC7B,MAAMg0D,iBAAA,GAAoB,KAAKF,SAAL,CAAejrB,KAAf,EAA1B;MACAmrB,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOmC,KAAT;QAAgB2a,IAAA,EAAM;MAAtB,CAA1B;IAF6B,CAA/B,MAGO;MACL,KAAK+0C,aAAL,CAAmBxvD,IAAnB,CAAwBF,KAAxB;IADK;IAGP,KAAK0wD,OAAL,IAAgB1wD,KAAA,CAAMmH,UAAtB;EAVc;EAahB,IAAIib,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKgvC,aAAZ;EADiB;EAInB,IAAIrtC,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKmtC,SAAZ;EADa;EAIf,IAAI5uC,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK0uC,OAAL,CAAajB,iBAApB;EADqB;EAIvB,IAAI1tC,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK2uC,OAAL,CAAalB,qBAApB;EADyB;EAI3B,IAAIvtC,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKyuC,OAAL,CAAahB,cAApB;EADkB;EAIpB,MAAMt1C,IAANA,CAAA,EAAa;IACX,IAAI,KAAKg1C,aAAL,CAAmBryD,MAAnB,GAA4B,CAAhC,EAAmC;MACjC,MAAM2C,KAAA,GAAQ,KAAK0vD,aAAL,CAAmBxpB,KAAnB,EAAd;MACA,OAAO;QAAEroC,KAAA,EAAOmC,KAAT;QAAgB2a,IAAA,EAAM;MAAtB,CAAP;IAFiC;IAInC,IAAI,KAAKs2C,KAAT,EAAgB;MACd,OAAO;QAAEpzD,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAM02C,iBAAA,GAAoB,IAAIrpD,uBAAJ,EAA1B;IACA,KAAKmpD,SAAL,CAAejxD,IAAf,CAAoBmxD,iBAApB;IACA,OAAOA,iBAAA,CAAkBnpD,OAAzB;EAVW;EAabmT,OAAO9S,MAAP,EAAe;IACb,KAAK0oD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAKw2C,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;EALa;EAQfgS,gBAAA,EAAkB;IAChB,IAAI,KAAK4hD,KAAT,EAAgB;MACd;IADc;IAGhB,KAAKA,KAAL,GAAa,IAAb;EAJgB;AA9Ee;AAuFnC,MAAMF,iCAAN,CAAwC;EACtCvyD,YAAYutD,MAAZ,EAAoBx6C,KAApB,EAA2BQ,GAA3B,EAAgC;IAC9B,KAAKi/C,OAAL,GAAejF,MAAf;IACA,KAAKyE,MAAL,GAAcj/C,KAAd;IACA,KAAK+/C,IAAL,GAAYv/C,GAAZ;IACA,KAAKw/C,YAAL,GAAoB,IAApB;IACA,KAAKJ,SAAL,GAAiB,EAAjB;IACA,KAAKF,KAAL,GAAa,KAAb;IAEA,KAAKvgD,UAAL,GAAkB,IAAlB;EAR8B;EAWhC4/C,SAAStwD,KAAT,EAAgB;IACd,IAAI,KAAKixD,KAAT,EAAgB;MACd;IADc;IAGhB,IAAI,KAAKE,SAAL,CAAe9zD,MAAf,KAA0B,CAA9B,EAAiC;MAC/B,KAAKk0D,YAAL,GAAoBvxD,KAApB;IAD+B,CAAjC,MAEO;MACL,MAAMwxD,kBAAA,GAAqB,KAAKL,SAAL,CAAejrB,KAAf,EAA3B;MACAsrB,kBAAA,CAAmBppD,OAAnB,CAA2B;QAAEvK,KAAA,EAAOmC,KAAT;QAAgB2a,IAAA,EAAM;MAAtB,CAA3B;MACA,WAAW02C,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;QAC9CE,iBAAA,CAAkBjpD,OAAlB,CAA0B;UAAEvK,KAAA,EAAOyB,SAAT;UAAoBqb,IAAA,EAAM;QAA1B,CAA1B;MAD8C;MAGhD,KAAKw2C,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;IANK;IAQP,KAAK4zD,KAAL,GAAa,IAAb;IACA,KAAKD,OAAL,CAAaL,kBAAb,CAAgC,IAAhC;EAfc;EAkBhB,IAAItuC,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAP;EADyB;EAI3B,MAAM3H,IAANA,CAAA,EAAa;IACX,IAAI,KAAK62C,YAAT,EAAuB;MACrB,MAAMvxD,KAAA,GAAQ,KAAKuxD,YAAnB;MACA,KAAKA,YAAL,GAAoB,IAApB;MACA,OAAO;QAAE1zD,KAAA,EAAOmC,KAAT;QAAgB2a,IAAA,EAAM;MAAtB,CAAP;IAHqB;IAKvB,IAAI,KAAKs2C,KAAT,EAAgB;MACd,OAAO;QAAEpzD,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAM02C,iBAAA,GAAoB,IAAIrpD,uBAAJ,EAA1B;IACA,KAAKmpD,SAAL,CAAejxD,IAAf,CAAoBmxD,iBAApB;IACA,OAAOA,iBAAA,CAAkBnpD,OAAzB;EAXW;EAcbmT,OAAO9S,MAAP,EAAe;IACb,KAAK0oD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAKw2C,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;IACA,KAAK2zD,OAAL,CAAaL,kBAAb,CAAgC,IAAhC;EANa;AAhDuB;;;;;;;;;;;;ACpPxC,MAAMr2C,OAAN,CAAc;EAUZ,OAAOJ,WAAPA,CAAmBG,GAAnB,EAAwB;IACtB,MAAMF,KAAA,GAAQ,EAAd;IACA,MAAMs3C,MAAA,GAAS;MACbt3C,KADa;MAEbU,MAAA,EAAQ9c,MAAA,CAAO8C,MAAP,CAAc,IAAd;IAFK,CAAf;IAIA,SAAS6wD,IAATA,CAAcC,IAAd,EAAoB;MAClB,IAAI,CAACA,IAAL,EAAW;QACT;MADS;MAGX,IAAItxD,GAAA,GAAM,IAAV;MACA,MAAM9B,IAAA,GAAOozD,IAAA,CAAKpzD,IAAlB;MACA,IAAIA,IAAA,KAAS,OAAb,EAAsB;QACpB8B,GAAA,GAAMsxD,IAAA,CAAK9zD,KAAX;MADoB,CAAtB,MAEO,IAAI,CAACyc,OAAA,CAAQs3C,eAAR,CAAwBrzD,IAAxB,CAAL,EAAoC;QACzC;MADyC,CAApC,MAEA,IAAIozD,IAAA,EAAMhwB,UAAN,EAAkBznB,WAAtB,EAAmC;QACxC7Z,GAAA,GAAMsxD,IAAA,CAAKhwB,UAAL,CAAgBznB,WAAtB;MADwC,CAAnC,MAEA,IAAIy3C,IAAA,CAAK9zD,KAAT,EAAgB;QACrBwC,GAAA,GAAMsxD,IAAA,CAAK9zD,KAAX;MADqB;MAGvB,IAAIwC,GAAA,KAAQ,IAAZ,EAAkB;QAChB8Z,KAAA,CAAMja,IAAN,CAAW;UACTG;QADS,CAAX;MADgB;MAKlB,IAAI,CAACsxD,IAAA,CAAK/6C,QAAV,EAAoB;QAClB;MADkB;MAGpB,WAAWi7C,KAAX,IAAoBF,IAAA,CAAK/6C,QAAzB,EAAmC;QACjC86C,IAAA,CAAKG,KAAL;MADiC;IAvBjB;IA2BpBH,IAAA,CAAKr3C,GAAL;IACA,OAAOo3C,MAAP;EAlCsB;EA2CxB,OAAOG,eAAPA,CAAuBrzD,IAAvB,EAA6B;IAC3B,OAAO,EACLA,IAAA,KAAS,UAAT,IACAA,IAAA,KAAS,OADT,IAEAA,IAAA,KAAS,QAFT,IAGAA,IAAA,KAAS,QAHT,CADF;EAD2B;AArDjB;AAfdxR,eAAA,GAAAutB,OAAA;;;;;;;;;;;;ACgBA,IAAA2d,aAAA,GAAAhvB,mBAAA;AAOA;AAMA,MAAM2zB,SAAA,GAAY,SAAAA,CAAUhgC,GAAV,EAAe;EAC/B,OAAO,IAAIuL,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtC,MAAMypD,EAAA,GAAKx0C,OAAA,CAAwB,IAAxB,CAAX;IACAw0C,EAAA,CAAGC,QAAH,CAAYn1D,GAAZ,EAAiB,CAAC0b,KAAD,EAAQhQ,IAAR,KAAiB;MAChC,IAAIgQ,KAAA,IAAS,CAAChQ,IAAd,EAAoB;QAClBD,MAAA,CAAO,IAAI7L,KAAJ,CAAU8b,KAAV,CAAP;QACA;MAFkB;MAIpBlQ,OAAA,CAAQ,IAAI9H,UAAJ,CAAegI,IAAf,CAAR;IALgC,CAAlC;EAFsC,CAAjC,CAAP;AAD+B,CAAjC;AAaA,MAAMkC,iBAAN,SAAgC8tB,+BAAhC,CAAkD;AA1ClDvrC,yBAAA,GAAAyd,iBAAA;AA4CA,MAAMN,iBAAN,SAAgCuyB,+BAAhC,CAAkD;EAIhDE,cAAc/Y,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAMmuC,MAAA,GAAS10C,OAAA,CAAwB,QAAxB,CAAf;IACA,OAAO00C,MAAA,CAAOC,YAAP,CAAoBruC,KAApB,EAA2BC,MAA3B,CAAP;EAF2B;AAJmB;AA5ClD92B,yBAAA,GAAAmd,iBAAA;AAsDA,MAAMG,qBAAN,SAAoCszB,mCAApC,CAA0D;EAIxDC,WAAWhhC,GAAX,EAAgBihC,eAAhB,EAAiC;IAC/B,OAAOjB,SAAA,CAAUhgC,GAAV,EAAeiS,IAAf,CAAoBvG,IAAA,IAAQ;MACjC,OAAO;QAAEw1B,QAAA,EAAUx1B,IAAZ;QAAkBu1B;MAAlB,CAAP;IADiC,CAA5B,CAAP;EAD+B;AAJuB;AAtD1D9wC,6BAAA,GAAAsd,qBAAA;AAiEA,MAAMM,2BAAN,SAA0CozB,yCAA1C,CAAsE;EAIpEH,WAAWhhC,GAAX,EAAgB;IACd,OAAOggC,SAAA,CAAUhgC,GAAV,CAAP;EADc;AAJoD;AAjEtE7P,mCAAA,GAAA4d,2BAAA;;;;;;;;;;;;ACgBA,IAAA3B,KAAA,GAAAC,mBAAA;AAMA,IAAAipD,cAAA,GAAAjpD,mBAAA;AAKA;AAMA,MAAM6oD,EAAA,GAAKx0C,OAAA,CAAwB,IAAxB,CAAX;AACA,MAAM60C,IAAA,GAAO70C,OAAA,CAAwB,MAAxB,CAAb;AACA,MAAM80C,KAAA,GAAQ90C,OAAA,CAAwB,OAAxB,CAAd;AACA,MAAM1gB,GAAA,GAAM0gB,OAAA,CAAwB,KAAxB,CAAZ;AAEA,MAAM+0C,YAAA,GAAe,yBAArB;AAEA,SAASC,QAATA,CAAkBC,SAAlB,EAA6B;EAC3B,MAAMC,SAAA,GAAY51D,GAAA,CAAI+4B,KAAJ,CAAU48B,SAAV,CAAlB;EACA,IAAIC,SAAA,CAAU31D,QAAV,KAAuB,OAAvB,IAAkC21D,SAAA,CAAUC,IAAhD,EAAsD;IACpD,OAAOD,SAAP;EADoD;EAItD,IAAI,gBAAgBpzB,IAAhB,CAAqBmzB,SAArB,CAAJ,EAAqC;IACnC,OAAO31D,GAAA,CAAI+4B,KAAJ,CAAW,WAAU48B,SAAX,EAAV,CAAP;EADmC;EAIrC,IAAI,CAACC,SAAA,CAAUC,IAAf,EAAqB;IACnBD,SAAA,CAAU31D,QAAV,GAAqB,OAArB;EADmB;EAGrB,OAAO21D,SAAP;AAb2B;AAgB7B,MAAM1nD,aAAN,CAAoB;EAClBtM,YAAYyR,MAAZ,EAAoB;IAClB,KAAKA,MAAL,GAAcA,MAAd;IACA,KAAKrT,GAAL,GAAW01D,QAAA,CAASriD,MAAA,CAAOrT,GAAhB,CAAX;IACA,KAAK81D,MAAL,GACE,KAAK91D,GAAL,CAASC,QAAT,KAAsB,OAAtB,IAAiC,KAAKD,GAAL,CAASC,QAAT,KAAsB,QADzD;IAGA,KAAK81D,OAAL,GAAe,KAAK/1D,GAAL,CAASC,QAAT,KAAsB,OAArC;IACA,KAAK8O,WAAL,GAAoB,KAAK+mD,MAAL,IAAeziD,MAAA,CAAOtE,WAAvB,IAAuC,EAA1D;IAEA,KAAKskD,kBAAL,GAA0B,IAA1B;IACA,KAAK2C,oBAAL,GAA4B,EAA5B;EAVkB;EAapB,IAAInC,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKR,kBAAL,EAAyBS,OAAzB,IAAoC,CAA3C;EAD2B;EAI7BjvC,cAAA,EAAgB;IACd,IAAAhlB,YAAA,EACE,CAAC,KAAKwzD,kBADR,EAEE,sDAFF;IAIA,KAAKA,kBAAL,GAA0B,KAAK0C,OAAL,GACtB,IAAIE,yBAAJ,CAA8B,IAA9B,CADsB,GAEtB,IAAIC,uBAAJ,CAA4B,IAA5B,CAFJ;IAGA,OAAO,KAAK7C,kBAAZ;EARc;EAWhBxtC,eAAeoY,KAAf,EAAsB9oB,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAK0+C,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMjuC,WAAA,GAAc,KAAKmwC,OAAL,GAChB,IAAII,0BAAJ,CAA+B,IAA/B,EAAqCl4B,KAArC,EAA4C9oB,GAA5C,CADgB,GAEhB,IAAIihD,wBAAJ,CAA6B,IAA7B,EAAmCn4B,KAAnC,EAA0C9oB,GAA1C,CAFJ;IAGA,KAAK6gD,oBAAL,CAA0B1yD,IAA1B,CAA+BsiB,WAA/B;IACA,OAAOA,WAAP;EARyB;EAW3BjB,kBAAkBhZ,MAAlB,EAA0B;IACxB,KAAK0nD,kBAAL,EAAyB50C,MAAzB,CAAgC9S,MAAhC;IAEA,WAAWkS,MAAX,IAAqB,KAAKm4C,oBAAL,CAA0BrvD,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvDkX,MAAA,CAAOY,MAAP,CAAc9S,MAAd;IADuD;EAHjC;AAxCR;AAxDpBxb,qBAAA,GAAA+d,aAAA;AAyGA,MAAMmoD,cAAN,CAAqB;EACnBz0D,YAAYutD,MAAZ,EAAoB;IAClB,KAAKmH,IAAL,GAAYnH,MAAA,CAAOnvD,GAAnB;IACA,KAAKq0D,KAAL,GAAa,KAAb;IACA,KAAKkC,YAAL,GAAoB,IAApB;IACA,KAAKziD,UAAL,GAAkB,IAAlB;IACA,MAAMT,MAAA,GAAS87C,MAAA,CAAO97C,MAAtB;IACA,KAAK+/C,cAAL,GAAsB//C,MAAA,CAAO5S,MAA7B;IACA,KAAKqzD,OAAL,GAAe,CAAf;IACA,KAAKQ,SAAL,GAAiB,IAAjB;IAEA,KAAKkC,aAAL,GAAqBnjD,MAAA,CAAO7C,YAAP,IAAuB,KAA5C;IACA,KAAKimD,eAAL,GAAuBpjD,MAAA,CAAOjE,cAA9B;IACA,IAAI,CAAC,KAAKqnD,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAKtD,qBAAL,GAA6B,CAAC7/C,MAAA,CAAO5C,aAArC;IACA,KAAK0iD,iBAAL,GAAyB,CAAC9/C,MAAA,CAAO7C,YAAjC;IAEA,KAAKkmD,eAAL,GAAuB,IAAvB;IACA,KAAKC,eAAL,GAAuB,IAAIvrD,uBAAJ,EAAvB;IACA,KAAKwrD,kBAAL,GAA0B,IAAIxrD,uBAAJ,EAA1B;EArBkB;EAwBpB,IAAIoa,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKoxC,kBAAL,CAAwBtrD,OAA/B;EADiB;EAInB,IAAI6b,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKmtC,SAAZ;EADa;EAIf,IAAI3uC,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKytC,cAAZ;EADkB;EAIpB,IAAI1tC,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAKytC,iBAAZ;EADqB;EAIvB,IAAI1tC,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKytC,qBAAZ;EADyB;EAI3B,MAAMp1C,IAANA,CAAA,EAAa;IACX,MAAM,KAAK64C,eAAL,CAAqBrrD,OAA3B;IACA,IAAI,KAAK+oD,KAAT,EAAgB;MACd,OAAO;QAAEpzD,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,IAAI,KAAKw4C,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAIvB,MAAMnzD,KAAA,GAAQ,KAAKszD,eAAL,CAAqB54C,IAArB,EAAd;IACA,IAAI1a,KAAA,KAAU,IAAd,EAAoB;MAClB,KAAKuzD,eAAL,GAAuB,IAAIvrD,uBAAJ,EAAvB;MACA,OAAO,KAAK0S,IAAL,EAAP;IAFkB;IAIpB,KAAKg2C,OAAL,IAAgB1wD,KAAA,CAAM3C,MAAtB;IACA,KAAKqT,UAAL,GAAkB;MAChBe,MAAA,EAAQ,KAAKi/C,OADG;MAEhBh/C,KAAA,EAAO,KAAKs+C;IAFI,CAAlB;IAMA,MAAM7uD,MAAA,GAAS,IAAIb,UAAJ,CAAeN,KAAf,EAAsBmB,MAArC;IACA,OAAO;MAAEtD,KAAA,EAAOsD,MAAT;MAAiBwZ,IAAA,EAAM;IAAvB,CAAP;EAtBW;EAyBbU,OAAO9S,MAAP,EAAe;IAGb,IAAI,CAAC,KAAK+qD,eAAV,EAA2B;MACzB,KAAKG,MAAL,CAAYlrD,MAAZ;MACA;IAFyB;IAI3B,KAAK+qD,eAAL,CAAqB3iD,OAArB,CAA6BpI,MAA7B;EAPa;EAUfkrD,OAAOlrD,MAAP,EAAe;IACb,KAAK4qD,YAAL,GAAoB5qD,MAApB;IACA,KAAKgrD,eAAL,CAAqBnrD,OAArB;EAFa;EAKfsrD,mBAAmBn5C,cAAnB,EAAmC;IACjC,KAAK+4C,eAAL,GAAuB/4C,cAAvB;IACAA,cAAA,CAAeoE,EAAf,CAAkB,UAAlB,EAA8B,MAAM;MAClC,KAAK40C,eAAL,CAAqBnrD,OAArB;IADkC,CAApC;IAIAmS,cAAA,CAAeoE,EAAf,CAAkB,KAAlB,EAAyB,MAAM;MAE7BpE,cAAA,CAAe5J,OAAf;MACA,KAAKsgD,KAAL,GAAa,IAAb;MACA,KAAKsC,eAAL,CAAqBnrD,OAArB;IAJ6B,CAA/B;IAOAmS,cAAA,CAAeoE,EAAf,CAAkB,OAAlB,EAA2BpW,MAAA,IAAU;MACnC,KAAKkrD,MAAL,CAAYlrD,MAAZ;IADmC,CAArC;IAMA,IAAI,CAAC,KAAKunD,qBAAN,IAA+B,KAAKC,iBAAxC,EAA2D;MACzD,KAAK0D,MAAL,CAAY,IAAIt0D,oBAAJ,CAAmB,uBAAnB,CAAZ;IADyD;IAK3D,IAAI,KAAKg0D,YAAT,EAAuB;MACrB,KAAKG,eAAL,CAAqB3iD,OAArB,CAA6B,KAAKwiD,YAAlC;IADqB;EAxBU;AArFhB;AAmHrB,MAAMQ,eAAN,CAAsB;EACpBn1D,YAAYutD,MAAZ,EAAoB;IAClB,KAAKmH,IAAL,GAAYnH,MAAA,CAAOnvD,GAAnB;IACA,KAAKq0D,KAAL,GAAa,KAAb;IACA,KAAKkC,YAAL,GAAoB,IAApB;IACA,KAAKziD,UAAL,GAAkB,IAAlB;IACA,KAAKggD,OAAL,GAAe,CAAf;IACA,KAAK4C,eAAL,GAAuB,IAAvB;IACA,KAAKC,eAAL,GAAuB,IAAIvrD,uBAAJ,EAAvB;IACA,MAAMiI,MAAA,GAAS87C,MAAA,CAAO97C,MAAtB;IACA,KAAK6/C,qBAAL,GAA6B,CAAC7/C,MAAA,CAAO5C,aAArC;EATkB;EAYpB,IAAIgV,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKytC,qBAAZ;EADyB;EAI3B,MAAMp1C,IAANA,CAAA,EAAa;IACX,MAAM,KAAK64C,eAAL,CAAqBrrD,OAA3B;IACA,IAAI,KAAK+oD,KAAT,EAAgB;MACd,OAAO;QAAEpzD,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,IAAI,KAAKw4C,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAIvB,MAAMnzD,KAAA,GAAQ,KAAKszD,eAAL,CAAqB54C,IAArB,EAAd;IACA,IAAI1a,KAAA,KAAU,IAAd,EAAoB;MAClB,KAAKuzD,eAAL,GAAuB,IAAIvrD,uBAAJ,EAAvB;MACA,OAAO,KAAK0S,IAAL,EAAP;IAFkB;IAIpB,KAAKg2C,OAAL,IAAgB1wD,KAAA,CAAM3C,MAAtB;IACA,KAAKqT,UAAL,GAAkB;MAAEe,MAAA,EAAQ,KAAKi/C;IAAf,CAAlB;IAGA,MAAMvvD,MAAA,GAAS,IAAIb,UAAJ,CAAeN,KAAf,EAAsBmB,MAArC;IACA,OAAO;MAAEtD,KAAA,EAAOsD,MAAT;MAAiBwZ,IAAA,EAAM;IAAvB,CAAP;EAnBW;EAsBbU,OAAO9S,MAAP,EAAe;IAGb,IAAI,CAAC,KAAK+qD,eAAV,EAA2B;MACzB,KAAKG,MAAL,CAAYlrD,MAAZ;MACA;IAFyB;IAI3B,KAAK+qD,eAAL,CAAqB3iD,OAArB,CAA6BpI,MAA7B;EAPa;EAUfkrD,OAAOlrD,MAAP,EAAe;IACb,KAAK4qD,YAAL,GAAoB5qD,MAApB;IACA,KAAKgrD,eAAL,CAAqBnrD,OAArB;EAFa;EAKfsrD,mBAAmBn5C,cAAnB,EAAmC;IACjC,KAAK+4C,eAAL,GAAuB/4C,cAAvB;IACAA,cAAA,CAAeoE,EAAf,CAAkB,UAAlB,EAA8B,MAAM;MAClC,KAAK40C,eAAL,CAAqBnrD,OAArB;IADkC,CAApC;IAIAmS,cAAA,CAAeoE,EAAf,CAAkB,KAAlB,EAAyB,MAAM;MAE7BpE,cAAA,CAAe5J,OAAf;MACA,KAAKsgD,KAAL,GAAa,IAAb;MACA,KAAKsC,eAAL,CAAqBnrD,OAArB;IAJ6B,CAA/B;IAOAmS,cAAA,CAAeoE,EAAf,CAAkB,OAAlB,EAA2BpW,MAAA,IAAU;MACnC,KAAKkrD,MAAL,CAAYlrD,MAAZ;IADmC,CAArC;IAKA,IAAI,KAAK4qD,YAAT,EAAuB;MACrB,KAAKG,eAAL,CAAqB3iD,OAArB,CAA6B,KAAKwiD,YAAlC;IADqB;EAlBU;AAtDf;AA8EtB,SAASS,oBAATA,CAA8BpB,SAA9B,EAAyCqB,OAAzC,EAAkD;EAChD,OAAO;IACLh3D,QAAA,EAAU21D,SAAA,CAAU31D,QADf;IAELi3D,IAAA,EAAMtB,SAAA,CAAUsB,IAFX;IAGLrB,IAAA,EAAMD,SAAA,CAAUuB,QAHX;IAIL3lD,IAAA,EAAMokD,SAAA,CAAUpkD,IAJX;IAKL2/B,IAAA,EAAMykB,SAAA,CAAUzkB,IALX;IAMLimB,MAAA,EAAQ,KANH;IAOLH;EAPK,CAAP;AADgD;AAYlD,MAAMf,uBAAN,SAAsCG,cAAtC,CAAqD;EACnDz0D,YAAYutD,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IAEA,MAAMkI,cAAA,GAAiBn3B,QAAA,IAAY;MACjC,IAAIA,QAAA,CAASo3B,UAAT,KAAwB,GAA5B,EAAiC;QAC/B,MAAM57C,KAAA,GAAQ,IAAIvZ,yBAAJ,CAAyB,gBAAe,KAAKm0D,IAAK,IAAlD,CAAd;QACA,KAAKC,YAAL,GAAoB76C,KAApB;QACA,KAAKk7C,kBAAL,CAAwBnrD,MAAxB,CAA+BiQ,KAA/B;QACA;MAJ+B;MAMjC,KAAKk7C,kBAAL,CAAwBprD,OAAxB;MACA,KAAKsrD,kBAAL,CAAwB52B,QAAxB;MAEA,MAAMq3B,iBAAA,GAAoB51D,IAAA,IAAQ;QAGhC,OAAO,KAAK+0D,eAAL,CAAqBO,OAArB,CAA6Bt1D,IAAA,CAAK2gC,WAAL,EAA7B,CAAP;MAHgC,CAAlC;MAKA,MAAM;QAAEk1B,kBAAF;QAAsBC;MAAtB,IACJ,IAAAC,+CAAA,EAAiC;QAC/BH,iBAD+B;QAE/BzB,MAAA,EAAQ3G,MAAA,CAAO2G,MAFgB;QAG/B1mD,cAAA,EAAgB,KAAKqnD,eAHU;QAI/BjmD,YAAA,EAAc,KAAKgmD;MAJY,CAAjC,CADF;MAQA,KAAKrD,iBAAL,GAAyBqE,kBAAzB;MAEA,KAAKpE,cAAL,GAAsBqE,eAAA,IAAmB,KAAKrE,cAA9C;MAEA,KAAKkB,SAAL,GAAiB,IAAAqD,wCAAA,EAA0BJ,iBAA1B,CAAjB;IA3BiC,CAAnC;IA8BA,KAAKK,QAAL,GAAgB,IAAhB;IACA,IAAI,KAAKtB,IAAL,CAAUr2D,QAAV,KAAuB,OAA3B,EAAoC;MAClC,KAAK23D,QAAL,GAAgBrC,IAAA,CAAKh1B,OAAL,CACdy2B,oBAAA,CAAqB,KAAKV,IAA1B,EAAgCnH,MAAA,CAAOpgD,WAAvC,CADc,EAEdsoD,cAFc,CAAhB;IADkC,CAApC,MAKO;MACL,KAAKO,QAAL,GAAgBpC,KAAA,CAAMj1B,OAAN,CACdy2B,oBAAA,CAAqB,KAAKV,IAA1B,EAAgCnH,MAAA,CAAOpgD,WAAvC,CADc,EAEdsoD,cAFc,CAAhB;IADK;IAOP,KAAKO,QAAL,CAAc71C,EAAd,CAAiB,OAAjB,EAA0BpW,MAAA,IAAU;MAClC,KAAK4qD,YAAL,GAAoB5qD,MAApB;MACA,KAAKirD,kBAAL,CAAwBnrD,MAAxB,CAA+BE,MAA/B;IAFkC,CAApC;IAOA,KAAKisD,QAAL,CAAcziD,GAAd;EArDkB;AAD+B;AA0DrD,MAAMihD,wBAAN,SAAuCW,eAAvC,CAAuD;EACrDn1D,YAAYutD,MAAZ,EAAoBlxB,KAApB,EAA2B9oB,GAA3B,EAAgC;IAC9B,MAAMg6C,MAAN;IAEA,KAAK0I,YAAL,GAAoB,EAApB;IACA,WAAW3hB,QAAX,IAAuBiZ,MAAA,CAAOpgD,WAA9B,EAA2C;MACzC,MAAM9N,KAAA,GAAQkuD,MAAA,CAAOpgD,WAAP,CAAmBmnC,QAAnB,CAAd;MACA,IAAIj1C,KAAA,KAAUyB,SAAd,EAAyB;QACvB;MADuB;MAGzB,KAAKm1D,YAAL,CAAkB3hB,QAAlB,IAA8Bj1C,KAA9B;IALyC;IAO3C,KAAK42D,YAAL,CAAkBC,KAAlB,GAA2B,SAAQ75B,KAAM,IAAG9oB,GAAA,GAAM,CAAxB,EAA1B;IAEA,MAAMkiD,cAAA,GAAiBn3B,QAAA,IAAY;MACjC,IAAIA,QAAA,CAASo3B,UAAT,KAAwB,GAA5B,EAAiC;QAC/B,MAAM57C,KAAA,GAAQ,IAAIvZ,yBAAJ,CAAyB,gBAAe,KAAKm0D,IAAK,IAAlD,CAAd;QACA,KAAKC,YAAL,GAAoB76C,KAApB;QACA;MAH+B;MAKjC,KAAKo7C,kBAAL,CAAwB52B,QAAxB;IANiC,CAAnC;IASA,KAAK03B,QAAL,GAAgB,IAAhB;IACA,IAAI,KAAKtB,IAAL,CAAUr2D,QAAV,KAAuB,OAA3B,EAAoC;MAClC,KAAK23D,QAAL,GAAgBrC,IAAA,CAAKh1B,OAAL,CACdy2B,oBAAA,CAAqB,KAAKV,IAA1B,EAAgC,KAAKuB,YAArC,CADc,EAEdR,cAFc,CAAhB;IADkC,CAApC,MAKO;MACL,KAAKO,QAAL,GAAgBpC,KAAA,CAAMj1B,OAAN,CACdy2B,oBAAA,CAAqB,KAAKV,IAA1B,EAAgC,KAAKuB,YAArC,CADc,EAEdR,cAFc,CAAhB;IADK;IAOP,KAAKO,QAAL,CAAc71C,EAAd,CAAiB,OAAjB,EAA0BpW,MAAA,IAAU;MAClC,KAAK4qD,YAAL,GAAoB5qD,MAApB;IADkC,CAApC;IAGA,KAAKisD,QAAL,CAAcziD,GAAd;EAtC8B;AADqB;AA2CvD,MAAM8gD,yBAAN,SAAwCI,cAAxC,CAAuD;EACrDz0D,YAAYutD,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IAEA,IAAIhe,IAAA,GAAOnnC,kBAAA,CAAmB,KAAKssD,IAAL,CAAUnlB,IAA7B,CAAX;IAGA,IAAIskB,YAAA,CAAajzB,IAAb,CAAkB,KAAK8zB,IAAL,CAAU9iD,IAA5B,CAAJ,EAAuC;MACrC29B,IAAA,GAAOA,IAAA,CAAKtwB,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;IADqC;IAIvCq0C,EAAA,CAAG6C,KAAH,CAAS5mB,IAAT,EAAe,CAACz1B,KAAD,EAAQs8C,IAAR,KAAiB;MAC9B,IAAIt8C,KAAJ,EAAW;QACT,IAAIA,KAAA,CAAM3Z,IAAN,KAAe,QAAnB,EAA6B;UAC3B2Z,KAAA,GAAQ,IAAIvZ,yBAAJ,CAAyB,gBAAegvC,IAAK,IAA7C,CAAR;QAD2B;QAG7B,KAAKolB,YAAL,GAAoB76C,KAApB;QACA,KAAKk7C,kBAAL,CAAwBnrD,MAAxB,CAA+BiQ,KAA/B;QACA;MANS;MASX,KAAK03C,cAAL,GAAsB4E,IAAA,CAAK36C,IAA3B;MAEA,KAAKy5C,kBAAL,CAAwB5B,EAAA,CAAG+C,gBAAH,CAAoB9mB,IAApB,CAAxB;MACA,KAAKylB,kBAAL,CAAwBprD,OAAxB;IAb8B,CAAhC;EAVkB;AADiC;AA6BvD,MAAM2qD,0BAAN,SAAyCY,eAAzC,CAAyD;EACvDn1D,YAAYutD,MAAZ,EAAoBlxB,KAApB,EAA2B9oB,GAA3B,EAAgC;IAC9B,MAAMg6C,MAAN;IAEA,IAAIhe,IAAA,GAAOnnC,kBAAA,CAAmB,KAAKssD,IAAL,CAAUnlB,IAA7B,CAAX;IAGA,IAAIskB,YAAA,CAAajzB,IAAb,CAAkB,KAAK8zB,IAAL,CAAU9iD,IAA5B,CAAJ,EAAuC;MACrC29B,IAAA,GAAOA,IAAA,CAAKtwB,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;IADqC;IAIvC,KAAKi2C,kBAAL,CAAwB5B,EAAA,CAAG+C,gBAAH,CAAoB9mB,IAApB,EAA0B;MAAElT,KAAF;MAAS9oB,GAAA,EAAKA,GAAA,GAAM;IAApB,CAA1B,CAAxB;EAV8B;AADuB;;;;;;;;;;;;;;;ACzazD,IAAA/I,KAAA,GAAAC,mBAAA;AAKA,IAAA6rD,oBAAA,GAAA7rD,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AAEA,SAASqrD,gCAATA,CAA0C;EACxCH,iBADwC;EAExCzB,MAFwC;EAGxC1mD,cAHwC;EAIxCoB;AAJwC,CAA1C,EAKG;EAOD,MAAM2nD,YAAA,GAAe;IACnBX,kBAAA,EAAoB,KADD;IAEnBC,eAAA,EAAiB/0D;EAFE,CAArB;EAKA,MAAMjC,MAAA,GAAS2jC,QAAA,CAASmzB,iBAAA,CAAkB,gBAAlB,CAAT,EAA8C,EAA9C,CAAf;EACA,IAAI,CAACp4D,MAAA,CAAOC,SAAP,CAAiBqB,MAAjB,CAAL,EAA+B;IAC7B,OAAO03D,YAAP;EAD6B;EAI/BA,YAAA,CAAaV,eAAb,GAA+Bh3D,MAA/B;EAEA,IAAIA,MAAA,IAAU,IAAI2O,cAAlB,EAAkC;IAGhC,OAAO+oD,YAAP;EAHgC;EAMlC,IAAI3nD,YAAA,IAAgB,CAACslD,MAArB,EAA6B;IAC3B,OAAOqC,YAAP;EAD2B;EAG7B,IAAIZ,iBAAA,CAAkB,eAAlB,MAAuC,OAA3C,EAAoD;IAClD,OAAOY,YAAP;EADkD;EAIpD,MAAMC,eAAA,GAAkBb,iBAAA,CAAkB,kBAAlB,KAAyC,UAAjE;EACA,IAAIa,eAAA,KAAoB,UAAxB,EAAoC;IAClC,OAAOD,YAAP;EADkC;EAIpCA,YAAA,CAAaX,kBAAb,GAAkC,IAAlC;EACA,OAAOW,YAAP;AAtCC;AAyCH,SAASR,yBAATA,CAAmCJ,iBAAnC,EAAsD;EACpD,MAAMc,kBAAA,GAAqBd,iBAAA,CAAkB,qBAAlB,CAA3B;EACA,IAAIc,kBAAJ,EAAwB;IACtB,IAAIlxC,QAAA,GAAW,IAAAmxC,4DAAA,EAAwCD,kBAAxC,CAAf;IACA,IAAIlxC,QAAA,CAASliB,QAAT,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B,IAAI;QACFkiB,QAAA,GAAWnd,kBAAA,CAAmBmd,QAAnB,CAAX;MADE,CAAJ,CAEE,MAAM;IAHkB;IAK5B,IAAI,IAAAob,wBAAA,EAAUpb,QAAV,CAAJ,EAAyB;MACvB,OAAOA,QAAP;IADuB;EAPH;EAWxB,OAAO,IAAP;AAboD;AAgBtD,SAASoxC,yBAATA,CAAmCl2D,MAAnC,EAA2CrC,GAA3C,EAAgD;EAC9C,IAAIqC,MAAA,KAAW,GAAX,IAAmBA,MAAA,KAAW,CAAX,IAAgBrC,GAAA,CAAIM,UAAJ,CAAe,OAAf,CAAvC,EAAiE;IAC/D,OAAO,IAAI6B,yBAAJ,CAAwB,kBAAkBnC,GAAlB,GAAwB,IAAhD,CAAP;EAD+D;EAGjE,OAAO,IAAIoC,iCAAJ,CACJ,+BAA8BC,MAAO,2BAA0BrC,GAAI,IAD/D,EAELqC,MAFK,CAAP;AAJ8C;AAUhD,SAASm2D,sBAATA,CAAgCn2D,MAAhC,EAAwC;EACtC,OAAOA,MAAA,KAAW,GAAX,IAAkBA,MAAA,KAAW,GAApC;AADsC;;;;;;;;;;;;AChFxC,IAAA+J,KAAA,GAAAC,mBAAA;AAeA,SAASisD,uCAATA,CAAiDD,kBAAjD,EAAqE;EACnE,IAAII,kBAAA,GAAqB,IAAzB;EAGA,IAAIhQ,GAAA,GAAMiQ,aAAA,CAAc,aAAd,EAA6B,GAA7B,EAAkC/jC,IAAlC,CAAuC0jC,kBAAvC,CAAV;EACA,IAAI5P,GAAJ,EAAS;IACPA,GAAA,GAAMA,GAAA,CAAI,CAAJ,CAAN;IACA,IAAIthC,QAAA,GAAWwxC,cAAA,CAAelQ,GAAf,CAAf;IACAthC,QAAA,GAAWhd,QAAA,CAASgd,QAAT,CAAX;IACAA,QAAA,GAAWyxC,aAAA,CAAczxC,QAAd,CAAX;IACAA,QAAA,GAAW0xC,aAAA,CAAc1xC,QAAd,CAAX;IACA,OAAO2xC,aAAA,CAAc3xC,QAAd,CAAP;EANO;EAYTshC,GAAA,GAAMsQ,eAAA,CAAgBV,kBAAhB,CAAN;EACA,IAAI5P,GAAJ,EAAS;IAEP,MAAMthC,QAAA,GAAW0xC,aAAA,CAAcpQ,GAAd,CAAjB;IACA,OAAOqQ,aAAA,CAAc3xC,QAAd,CAAP;EAHO;EAOTshC,GAAA,GAAMiQ,aAAA,CAAc,UAAd,EAA0B,GAA1B,EAA+B/jC,IAA/B,CAAoC0jC,kBAApC,CAAN;EACA,IAAI5P,GAAJ,EAAS;IACPA,GAAA,GAAMA,GAAA,CAAI,CAAJ,CAAN;IACA,IAAIthC,QAAA,GAAWwxC,cAAA,CAAelQ,GAAf,CAAf;IACAthC,QAAA,GAAW0xC,aAAA,CAAc1xC,QAAd,CAAX;IACA,OAAO2xC,aAAA,CAAc3xC,QAAd,CAAP;EAJO;EAUT,SAASuxC,aAATA,CAAuBM,gBAAvB,EAAyCC,KAAzC,EAAgD;IAC9C,OAAO,IAAI/0B,MAAJ,CACL,gBACE80B,gBADF,GAEE,WAFF,GAKE,GALF,GAME,kBANF,GAOE,GAPF,GAQE,yBARF,GASE,GAVG,EAWLC,KAXK,CAAP;EAD8C;EAehD,SAASC,UAATA,CAAoB1vD,QAApB,EAA8BvI,KAA9B,EAAqC;IACnC,IAAIuI,QAAJ,EAAc;MACZ,IAAI,CAAC,iBAAiBg5B,IAAjB,CAAsBvhC,KAAtB,CAAL,EAAmC;QACjC,OAAOA,KAAP;MADiC;MAGnC,IAAI;QACF,MAAMwI,OAAA,GAAU,IAAIC,WAAJ,CAAgBF,QAAhB,EAA0B;UAAEG,KAAA,EAAO;QAAT,CAA1B,CAAhB;QACA,MAAMpF,MAAA,GAAS,IAAAf,mBAAA,EAAcvC,KAAd,CAAf;QACAA,KAAA,GAAQwI,OAAA,CAAQG,MAAR,CAAerF,MAAf,CAAR;QACAk0D,kBAAA,GAAqB,KAArB;MAJE,CAAJ,CAKE,MAAM;IATI;IAad,OAAOx3D,KAAP;EAdmC;EAgBrC,SAAS63D,aAATA,CAAuB73D,KAAvB,EAA8B;IAC5B,IAAIw3D,kBAAA,IAAsB,cAAcj2B,IAAd,CAAmBvhC,KAAnB,CAA1B,EAAqD;MAEnDA,KAAA,GAAQi4D,UAAA,CAAW,OAAX,EAAoBj4D,KAApB,CAAR;MACA,IAAIw3D,kBAAJ,EAAwB;QAEtBx3D,KAAA,GAAQi4D,UAAA,CAAW,YAAX,EAAyBj4D,KAAzB,CAAR;MAFsB;IAH2B;IAQrD,OAAOA,KAAP;EAT4B;EAW9B,SAAS83D,eAATA,CAAyBI,qBAAzB,EAAgD;IAC9C,MAAM5jC,OAAA,GAAU,EAAhB;IACA,IAAI/0B,KAAJ;IAGA,MAAM44D,IAAA,GAAOV,aAAA,CAAc,iCAAd,EAAiD,IAAjD,CAAb;IACA,OAAQ,CAAAl4D,KAAA,GAAQ44D,IAAA,CAAKzkC,IAAL,CAAUwkC,qBAAV,CAAR,MAA8C,IAAtD,EAA4D;MAC1D,IAAI,GAAG/zD,CAAH,EAAMi0D,IAAN,EAAYC,IAAZ,IAAoB94D,KAAxB;MACA4E,CAAA,GAAIg/B,QAAA,CAASh/B,CAAT,EAAY,EAAZ,CAAJ;MACA,IAAIA,CAAA,IAAKmwB,OAAT,EAAkB;QAEhB,IAAInwB,CAAA,KAAM,CAAV,EAAa;UACX;QADW;QAGb;MALgB;MAOlBmwB,OAAA,CAAQnwB,CAAR,IAAa,CAACi0D,IAAD,EAAOC,IAAP,CAAb;IAV0D;IAY5D,MAAMC,KAAA,GAAQ,EAAd;IACA,KAAK,IAAIn0D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAImwB,OAAA,CAAQ90B,MAA5B,EAAoC,EAAE2E,CAAtC,EAAyC;MACvC,IAAI,EAAEA,CAAA,IAAKmwB,OAAL,CAAN,EAAqB;QAEnB;MAFmB;MAIrB,IAAI,CAAC8jC,IAAD,EAAOC,IAAP,IAAe/jC,OAAA,CAAQnwB,CAAR,CAAnB;MACAk0D,IAAA,GAAOX,cAAA,CAAeW,IAAf,CAAP;MACA,IAAID,IAAJ,EAAU;QACRC,IAAA,GAAOnvD,QAAA,CAASmvD,IAAT,CAAP;QACA,IAAIl0D,CAAA,KAAM,CAAV,EAAa;UACXk0D,IAAA,GAAOV,aAAA,CAAcU,IAAd,CAAP;QADW;MAFL;MAMVC,KAAA,CAAMj2D,IAAN,CAAWg2D,IAAX;IAbuC;IAezC,OAAOC,KAAA,CAAMh2D,IAAN,CAAW,EAAX,CAAP;EAlC8C;EAoChD,SAASo1D,cAATA,CAAwB13D,KAAxB,EAA+B;IAC7B,IAAIA,KAAA,CAAMX,UAAN,CAAiB,GAAjB,CAAJ,EAA2B;MACzB,MAAMi5D,KAAA,GAAQt4D,KAAA,CAAM0F,KAAN,CAAY,CAAZ,EAAe6tB,KAAf,CAAqB,KAArB,CAAd;MAEA,KAAK,IAAIxxB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIu2D,KAAA,CAAM94D,MAA1B,EAAkC,EAAEuC,CAApC,EAAuC;QACrC,MAAMw2D,SAAA,GAAYD,KAAA,CAAMv2D,CAAN,EAASgxD,OAAT,CAAiB,GAAjB,CAAlB;QACA,IAAIwF,SAAA,KAAc,CAAC,CAAnB,EAAsB;UACpBD,KAAA,CAAMv2D,CAAN,IAAWu2D,KAAA,CAAMv2D,CAAN,EAAS2D,KAAT,CAAe,CAAf,EAAkB6yD,SAAlB,CAAX;UACAD,KAAA,CAAM94D,MAAN,GAAeuC,CAAA,GAAI,CAAnB;QAFoB;QAItBu2D,KAAA,CAAMv2D,CAAN,IAAWu2D,KAAA,CAAMv2D,CAAN,EAASgJ,UAAT,CAAoB,QAApB,EAA8B,IAA9B,CAAX;MANqC;MAQvC/K,KAAA,GAAQs4D,KAAA,CAAMh2D,IAAN,CAAW,GAAX,CAAR;IAXyB;IAa3B,OAAOtC,KAAP;EAd6B;EAgB/B,SAAS23D,aAATA,CAAuBa,QAAvB,EAAiC;IAE/B,MAAMC,WAAA,GAAcD,QAAA,CAASzF,OAAT,CAAiB,GAAjB,CAApB;IACA,IAAI0F,WAAA,KAAgB,CAAC,CAArB,EAAwB;MAItB,OAAOD,QAAP;IAJsB;IAMxB,MAAMjwD,QAAA,GAAWiwD,QAAA,CAAS9yD,KAAT,CAAe,CAAf,EAAkB+yD,WAAlB,CAAjB;IACA,MAAMC,SAAA,GAAYF,QAAA,CAAS9yD,KAAT,CAAe+yD,WAAA,GAAc,CAA7B,CAAlB;IAEA,MAAMz4D,KAAA,GAAQ04D,SAAA,CAAU94C,OAAV,CAAkB,SAAlB,EAA6B,EAA7B,CAAd;IACA,OAAOq4C,UAAA,CAAW1vD,QAAX,EAAqBvI,KAArB,CAAP;EAb+B;EAejC,SAAS43D,aAATA,CAAuB53D,KAAvB,EAA8B;IAW5B,IAAI,CAACA,KAAA,CAAMX,UAAN,CAAiB,IAAjB,CAAD,IAA2B,uBAAuBkiC,IAAvB,CAA4BvhC,KAA5B,CAA/B,EAAmE;MACjE,OAAOA,KAAP;IADiE;IAUnE,OAAOA,KAAA,CAAM+K,UAAN,CACL,gDADK,EAEL,UAAUupB,OAAV,EAAmBqkC,OAAnB,EAA4BpwD,QAA5B,EAAsC82B,IAAtC,EAA4C;MAC1C,IAAI92B,QAAA,KAAa,GAAb,IAAoBA,QAAA,KAAa,GAArC,EAA0C;QAExC82B,IAAA,GAAOA,IAAA,CAAKt0B,UAAL,CAAgB,GAAhB,EAAqB,GAArB,CAAP;QACAs0B,IAAA,GAAOA,IAAA,CAAKt0B,UAAL,CAAgB,oBAAhB,EAAsC,UAAUxL,KAAV,EAAiBq5D,GAAjB,EAAsB;UACjE,OAAOj3D,MAAA,CAAOC,YAAP,CAAoBuhC,QAAA,CAASy1B,GAAT,EAAc,EAAd,CAApB,CAAP;QADiE,CAA5D,CAAP;QAGA,OAAOX,UAAA,CAAWU,OAAX,EAAoBt5B,IAApB,CAAP;MANwC;MAQ1C,IAAI;QACFA,IAAA,GAAOmJ,IAAA,CAAKnJ,IAAL,CAAP;MADE,CAAJ,CAEE,MAAM;MACR,OAAO44B,UAAA,CAAWU,OAAX,EAAoBt5B,IAApB,CAAP;IAZ0C,CAFvC,CAAP;EArB4B;EAwC9B,OAAO,EAAP;AAzLmE;;;;;;;;;;;;ACfrE,IAAAl0B,KAAA,GAAAC,mBAAA;AACA,IAAAipD,cAAA,GAAAjpD,mBAAA;AAMA;AAMA,MAAMytD,WAAA,GAAc,GAApB;AACA,MAAMC,wBAAA,GAA2B,GAAjC;AAEA,SAASC,cAATA,CAAwBC,GAAxB,EAA6B;EAC3B,MAAMvuD,IAAA,GAAOuuD,GAAA,CAAI/5B,QAAjB;EACA,IAAI,OAAOx0B,IAAP,KAAgB,QAApB,EAA8B;IAC5B,OAAOA,IAAP;EAD4B;EAG9B,OAAO,IAAAlI,mBAAA,EAAckI,IAAd,EAAoBnH,MAA3B;AAL2B;AAQ7B,MAAM21D,cAAN,CAAqB;EACnBt4D,YAAY5B,GAAZ,EAAiByrC,IAAA,GAAO,EAAxB,EAA4B;IAC1B,KAAKzrC,GAAL,GAAWA,GAAX;IACA,KAAK81D,MAAL,GAAc,YAAYtzB,IAAZ,CAAiBxiC,GAAjB,CAAd;IACA,KAAK+O,WAAL,GAAoB,KAAK+mD,MAAL,IAAerqB,IAAA,CAAK18B,WAArB,IAAqC5N,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAxD;IACA,KAAK+K,eAAL,GAAuBy8B,IAAA,CAAKz8B,eAAL,IAAwB,KAA/C;IAEA,KAAKmrD,SAAL,GAAiB,CAAjB;IACA,KAAKC,eAAL,GAAuBj5D,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAvB;EAP0B;EAU5Bo2D,aAAa1lD,KAAb,EAAoBQ,GAApB,EAAyByK,SAAzB,EAAoC;IAClC,MAAM6rB,IAAA,GAAO;MACX92B,KADW;MAEXQ;IAFW,CAAb;IAIA,WAAWnU,IAAX,IAAmB4e,SAAnB,EAA8B;MAC5B6rB,IAAA,CAAKzqC,IAAL,IAAa4e,SAAA,CAAU5e,IAAV,CAAb;IAD4B;IAG9B,OAAO,KAAKu/B,OAAL,CAAakL,IAAb,CAAP;EARkC;EAWpC6uB,YAAY16C,SAAZ,EAAuB;IACrB,OAAO,KAAK2gB,OAAL,CAAa3gB,SAAb,CAAP;EADqB;EAIvB2gB,QAAQkL,IAAR,EAAc;IACZ,MAAMwuB,GAAA,GAAM,IAAIz5B,cAAJ,EAAZ;IACA,MAAM+5B,KAAA,GAAQ,KAAKJ,SAAL,EAAd;IACA,MAAMK,cAAA,GAAkB,KAAKJ,eAAL,CAAqBG,KAArB,IAA8B;MAAEN;IAAF,CAAtD;IAEAA,GAAA,CAAIx5B,IAAJ,CAAS,KAAT,EAAgB,KAAKzgC,GAArB;IACAi6D,GAAA,CAAIjrD,eAAJ,GAAsB,KAAKA,eAA3B;IACA,WAAWknC,QAAX,IAAuB,KAAKnnC,WAA5B,EAAyC;MACvC,MAAM9N,KAAA,GAAQ,KAAK8N,WAAL,CAAiBmnC,QAAjB,CAAd;MACA,IAAIj1C,KAAA,KAAUyB,SAAd,EAAyB;QACvB;MADuB;MAGzBu3D,GAAA,CAAIQ,gBAAJ,CAAqBvkB,QAArB,EAA+Bj1C,KAA/B;IALuC;IAOzC,IAAI,KAAK60D,MAAL,IAAe,WAAWrqB,IAA1B,IAAkC,SAASA,IAA/C,EAAqD;MACnDwuB,GAAA,CAAIQ,gBAAJ,CAAqB,OAArB,EAA+B,SAAQhvB,IAAA,CAAK92B,KAAM,IAAG82B,IAAA,CAAKt2B,GAAL,GAAW,CAAlC,EAA9B;MACAqlD,cAAA,CAAeE,cAAf,GAAgCX,wBAAhC;IAFmD,CAArD,MAGO;MACLS,cAAA,CAAeE,cAAf,GAAgCZ,WAAhC;IADK;IAGPG,GAAA,CAAIv5B,YAAJ,GAAmB,aAAnB;IAEA,IAAI+K,IAAA,CAAKkvB,OAAT,EAAkB;MAChBV,GAAA,CAAIt2B,OAAJ,GAAc,UAAU7e,GAAV,EAAe;QAC3B2mB,IAAA,CAAKkvB,OAAL,CAAaV,GAAA,CAAI53D,MAAjB;MAD2B,CAA7B;IADgB;IAKlB43D,GAAA,CAAIt5B,kBAAJ,GAAyB,KAAKi6B,aAAL,CAAmBj0C,IAAnB,CAAwB,IAAxB,EAA8B4zC,KAA9B,CAAzB;IACAN,GAAA,CAAIY,UAAJ,GAAiB,KAAK/mD,UAAL,CAAgB6S,IAAhB,CAAqB,IAArB,EAA2B4zC,KAA3B,CAAjB;IAEAC,cAAA,CAAeM,iBAAf,GAAmCrvB,IAAA,CAAKqvB,iBAAxC;IACAN,cAAA,CAAeO,MAAf,GAAwBtvB,IAAA,CAAKsvB,MAA7B;IACAP,cAAA,CAAeG,OAAf,GAAyBlvB,IAAA,CAAKkvB,OAA9B;IACAH,cAAA,CAAe1mD,UAAf,GAA4B23B,IAAA,CAAK33B,UAAjC;IAEAmmD,GAAA,CAAI/mD,IAAJ,CAAS,IAAT;IAEA,OAAOqnD,KAAP;EArCY;EAwCdzmD,WAAWymD,KAAX,EAAkBz1C,GAAlB,EAAuB;IACrB,MAAM01C,cAAA,GAAiB,KAAKJ,eAAL,CAAqBG,KAArB,CAAvB;IACA,IAAI,CAACC,cAAL,EAAqB;MACnB;IADmB;IAGrBA,cAAA,CAAe1mD,UAAf,GAA4BgR,GAA5B;EALqB;EAQvB81C,cAAcL,KAAd,EAAqBz1C,GAArB,EAA0B;IACxB,MAAM01C,cAAA,GAAiB,KAAKJ,eAAL,CAAqBG,KAArB,CAAvB;IACA,IAAI,CAACC,cAAL,EAAqB;MACnB;IADmB;IAIrB,MAAMP,GAAA,GAAMO,cAAA,CAAeP,GAA3B;IACA,IAAIA,GAAA,CAAIr5B,UAAJ,IAAkB,CAAlB,IAAuB45B,cAAA,CAAeM,iBAA1C,EAA6D;MAC3DN,cAAA,CAAeM,iBAAf;MACA,OAAON,cAAA,CAAeM,iBAAtB;IAF2D;IAK7D,IAAIb,GAAA,CAAIr5B,UAAJ,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAI1B,IAAI,EAAE25B,KAAA,IAAS,KAAKH,eAAd,CAAN,EAAsC;MAGpC;IAHoC;IAMtC,OAAO,KAAKA,eAAL,CAAqBG,KAArB,CAAP;IAGA,IAAIN,GAAA,CAAI53D,MAAJ,KAAe,CAAf,IAAoB,KAAKyzD,MAA7B,EAAqC;MACnC0E,cAAA,CAAeG,OAAf,GAAyBV,GAAA,CAAI53D,MAA7B;MACA;IAFmC;IAIrC,MAAM24D,SAAA,GAAYf,GAAA,CAAI53D,MAAJ,IAAcy3D,WAAhC;IAKA,MAAMmB,4BAAA,GACJD,SAAA,KAAclB,WAAd,IACAU,cAAA,CAAeE,cAAf,KAAkCX,wBAFpC;IAIA,IACE,CAACkB,4BAAD,IACAD,SAAA,KAAcR,cAAA,CAAeE,cAF/B,EAGE;MACAF,cAAA,CAAeG,OAAf,GAAyBV,GAAA,CAAI53D,MAA7B;MACA;IAFA;IAKF,MAAMe,KAAA,GAAQ42D,cAAA,CAAeC,GAAf,CAAd;IACA,IAAIe,SAAA,KAAcjB,wBAAlB,EAA4C;MAC1C,MAAMmB,WAAA,GAAcjB,GAAA,CAAI1C,iBAAJ,CAAsB,eAAtB,CAApB;MACA,MAAMhiC,OAAA,GAAU,2BAA2BZ,IAA3B,CAAgCumC,WAAhC,CAAhB;MACAV,cAAA,CAAeO,MAAf,CAAsB;QACpBpmD,KAAA,EAAOyvB,QAAA,CAAS7O,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CADa;QAEpBnyB;MAFoB,CAAtB;IAH0C,CAA5C,MAOO,IAAIA,KAAJ,EAAW;MAChBo3D,cAAA,CAAeO,MAAf,CAAsB;QACpBpmD,KAAA,EAAO,CADa;QAEpBvR;MAFoB,CAAtB;IADgB,CAAX,MAKA;MACLo3D,cAAA,CAAeG,OAAf,GAAyBV,GAAA,CAAI53D,MAA7B;IADK;EA3DiB;EAgE1B84D,cAAcZ,KAAd,EAAqB;IACnB,OAAO,KAAKH,eAAL,CAAqBG,KAArB,EAA4BN,GAAnC;EADmB;EAIrBmB,iBAAiBb,KAAjB,EAAwB;IACtB,OAAOA,KAAA,IAAS,KAAKH,eAArB;EADsB;EAIxBiB,aAAad,KAAb,EAAoB;IAClB,MAAMN,GAAA,GAAM,KAAKG,eAAL,CAAqBG,KAArB,EAA4BN,GAAxC;IACA,OAAO,KAAKG,eAAL,CAAqBG,KAArB,CAAP;IACAN,GAAA,CAAI7kD,KAAJ;EAHkB;AAlJD;AA0JrB,MAAMhH,gBAAN,CAAuB;EACrBxM,YAAYyR,MAAZ,EAAoB;IAClB,KAAKioD,OAAL,GAAejoD,MAAf;IACA,KAAKkoD,QAAL,GAAgB,IAAIrB,cAAJ,CAAmB7mD,MAAA,CAAOrT,GAA1B,EAA+B;MAC7C+O,WAAA,EAAasE,MAAA,CAAOtE,WADyB;MAE7CC,eAAA,EAAiBqE,MAAA,CAAOrE;IAFqB,CAA/B,CAAhB;IAIA,KAAKynD,eAAL,GAAuBpjD,MAAA,CAAOjE,cAA9B;IACA,KAAKikD,kBAAL,GAA0B,IAA1B;IACA,KAAK2C,oBAAL,GAA4B,EAA5B;EARkB;EAWpBwF,4BAA4B39C,MAA5B,EAAoC;IAClC,MAAM7a,CAAA,GAAI,KAAKgzD,oBAAL,CAA0BhC,OAA1B,CAAkCn2C,MAAlC,CAAV;IACA,IAAI7a,CAAA,IAAK,CAAT,EAAY;MACV,KAAKgzD,oBAAL,CAA0BjiC,MAA1B,CAAiC/wB,CAAjC,EAAoC,CAApC;IADU;EAFsB;EAOpC6hB,cAAA,EAAgB;IACd,IAAAhlB,YAAA,EACE,CAAC,KAAKwzD,kBADR,EAEE,yDAFF;IAIA,KAAKA,kBAAL,GAA0B,IAAIoI,iCAAJ,CACxB,KAAKF,QADmB,EAExB,KAAKD,OAFmB,CAA1B;IAIA,OAAO,KAAKjI,kBAAZ;EATc;EAYhBxtC,eAAelR,KAAf,EAAsBQ,GAAtB,EAA2B;IACzB,MAAM0I,MAAA,GAAS,IAAI69C,kCAAJ,CACb,KAAKH,QADQ,EAEb5mD,KAFa,EAGbQ,GAHa,CAAf;IAKA0I,MAAA,CAAO89C,QAAP,GAAkB,KAAKH,2BAAL,CAAiC70C,IAAjC,CAAsC,IAAtC,CAAlB;IACA,KAAKqvC,oBAAL,CAA0B1yD,IAA1B,CAA+Bua,MAA/B;IACA,OAAOA,MAAP;EARyB;EAW3B8G,kBAAkBhZ,MAAlB,EAA0B;IACxB,KAAK0nD,kBAAL,EAAyB50C,MAAzB,CAAgC9S,MAAhC;IAEA,WAAWkS,MAAX,IAAqB,KAAKm4C,oBAAL,CAA0BrvD,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvDkX,MAAA,CAAOY,MAAP,CAAc9S,MAAd;IADuD;EAHjC;AA1CL;AAjMvBxb,wBAAA,GAAAie,gBAAA;AAqPA,MAAMqtD,iCAAN,CAAwC;EACtC75D,YAAYg6D,OAAZ,EAAqBvoD,MAArB,EAA6B;IAC3B,KAAKkoD,QAAL,GAAgBK,OAAhB;IAEA,MAAMnwB,IAAA,GAAO;MACXqvB,iBAAA,EAAmB,KAAKe,kBAAL,CAAwBl1C,IAAxB,CAA6B,IAA7B,CADR;MAEXo0C,MAAA,EAAQ,KAAKe,OAAL,CAAan1C,IAAb,CAAkB,IAAlB,CAFG;MAGXg0C,OAAA,EAAS,KAAKoB,QAAL,CAAcp1C,IAAd,CAAmB,IAAnB,CAHE;MAIX7S,UAAA,EAAY,KAAK0/C,WAAL,CAAiB7sC,IAAjB,CAAsB,IAAtB;IAJD,CAAb;IAMA,KAAK2vC,IAAL,GAAYjjD,MAAA,CAAOrT,GAAnB;IACA,KAAKg8D,cAAL,GAAsBJ,OAAA,CAAQtB,WAAR,CAAoB7uB,IAApB,CAAtB;IACA,KAAKwwB,0BAAL,GAAkC,IAAI7wD,uBAAJ,EAAlC;IACA,KAAKorD,aAAL,GAAqBnjD,MAAA,CAAO7C,YAAP,IAAuB,KAA5C;IACA,KAAK4iD,cAAL,GAAsB//C,MAAA,CAAO5S,MAA7B;IACA,KAAKg2D,eAAL,GAAuBpjD,MAAA,CAAOjE,cAA9B;IACA,IAAI,CAAC,KAAKqnD,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAKtD,qBAAL,GAA6B,KAA7B;IACA,KAAKC,iBAAL,GAAyB,KAAzB;IAEA,KAAK+I,aAAL,GAAqB,EAArB;IACA,KAAK3H,SAAL,GAAiB,EAAjB;IACA,KAAKF,KAAL,GAAa,KAAb;IACA,KAAKkC,YAAL,GAAoB7zD,SAApB;IACA,KAAK4xD,SAAL,GAAiB,IAAjB;IAEA,KAAKxgD,UAAL,GAAkB,IAAlB;EA5B2B;EA+B7B+nD,mBAAA,EAAqB;IACnB,MAAMM,gBAAA,GAAmB,KAAKH,cAA9B;IACA,MAAMI,cAAA,GAAiB,KAAKb,QAAL,CAAcJ,aAAd,CAA4BgB,gBAA5B,CAAvB;IAEA,MAAM5E,iBAAA,GAAoB51D,IAAA,IAAQ;MAChC,OAAOy6D,cAAA,CAAe7E,iBAAf,CAAiC51D,IAAjC,CAAP;IADgC,CAAlC;IAGA,MAAM;MAAE61D,kBAAF;MAAsBC;IAAtB,IACJ,IAAAC,+CAAA,EAAiC;MAC/BH,iBAD+B;MAE/BzB,MAAA,EAAQ,KAAKyF,QAAL,CAAczF,MAFS;MAG/B1mD,cAAA,EAAgB,KAAKqnD,eAHU;MAI/BjmD,YAAA,EAAc,KAAKgmD;IAJY,CAAjC,CADF;IAQA,IAAIgB,kBAAJ,EAAwB;MACtB,KAAKrE,iBAAL,GAAyB,IAAzB;IADsB;IAIxB,KAAKC,cAAL,GAAsBqE,eAAA,IAAmB,KAAKrE,cAA9C;IAEA,KAAKkB,SAAL,GAAiB,IAAAqD,wCAAA,EAA0BJ,iBAA1B,CAAjB;IAEA,IAAI,KAAKpE,iBAAT,EAA4B;MAK1B,KAAKoI,QAAL,CAAcF,YAAd,CAA2Bc,gBAA3B;IAL0B;IAQ5B,KAAKF,0BAAL,CAAgCzwD,OAAhC;EA/BmB;EAkCrBswD,QAAQpwD,IAAR,EAAc;IACZ,IAAIA,IAAJ,EAAU;MACR,IAAI,KAAK6oD,SAAL,CAAe9zD,MAAf,GAAwB,CAA5B,EAA+B;QAC7B,MAAMg0D,iBAAA,GAAoB,KAAKF,SAAL,CAAejrB,KAAf,EAA1B;QACAmrB,iBAAA,CAAkBjpD,OAAlB,CAA0B;UAAEvK,KAAA,EAAOyK,IAAA,CAAKtI,KAAd;UAAqB2a,IAAA,EAAM;QAA3B,CAA1B;MAF6B,CAA/B,MAGO;QACL,KAAKm+C,aAAL,CAAmB54D,IAAnB,CAAwBoI,IAAA,CAAKtI,KAA7B;MADK;IAJC;IAQV,KAAKixD,KAAL,GAAa,IAAb;IACA,IAAI,KAAK6H,aAAL,CAAmBz7D,MAAnB,GAA4B,CAAhC,EAAmC;MACjC;IADiC;IAGnC,WAAWg0D,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAKw2C,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;EAhBY;EAmBds7D,SAAS15D,MAAT,EAAiB;IACf,KAAKk0D,YAAL,GAAoB,IAAAgC,wCAAA,EAA0Bl2D,MAA1B,EAAkC,KAAKi0D,IAAvC,CAApB;IACA,KAAK2F,0BAAL,CAAgCxwD,MAAhC,CAAuC,KAAK8qD,YAA5C;IACA,WAAW9B,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBhpD,MAAlB,CAAyB,KAAK8qD,YAA9B;IAD8C;IAGhD,KAAKhC,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;IACA,KAAKy7D,aAAL,CAAmBz7D,MAAnB,GAA4B,CAA5B;EAPe;EAUjB+yD,YAAY1uC,GAAZ,EAAiB;IACf,KAAKhR,UAAL,GAAkB;MAChBe,MAAA,EAAQiQ,GAAA,CAAIjQ,MADI;MAEhBC,KAAA,EAAOgQ,GAAA,CAAIu3C,gBAAJ,GAAuBv3C,GAAA,CAAIhQ,KAA3B,GAAmC,KAAKs+C;IAF/B,CAAlB;EADe;EAOjB,IAAIjsC,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKmtC,SAAZ;EADa;EAIf,IAAI5uC,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAKytC,iBAAZ;EADqB;EAIvB,IAAI1tC,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKytC,qBAAZ;EADyB;EAI3B,IAAIvtC,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKytC,cAAZ;EADkB;EAIpB,IAAI5tC,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKy2C,0BAAL,CAAgC3wD,OAAvC;EADiB;EAInB,MAAMwS,IAANA,CAAA,EAAa;IACX,IAAI,KAAKy4C,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAGvB,IAAI,KAAK2F,aAAL,CAAmBz7D,MAAnB,GAA4B,CAAhC,EAAmC;MACjC,MAAM2C,KAAA,GAAQ,KAAK84D,aAAL,CAAmB5yB,KAAnB,EAAd;MACA,OAAO;QAAEroC,KAAA,EAAOmC,KAAT;QAAgB2a,IAAA,EAAM;MAAtB,CAAP;IAFiC;IAInC,IAAI,KAAKs2C,KAAT,EAAgB;MACd,OAAO;QAAEpzD,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAM02C,iBAAA,GAAoB,IAAIrpD,uBAAJ,EAA1B;IACA,KAAKmpD,SAAL,CAAejxD,IAAf,CAAoBmxD,iBAApB;IACA,OAAOA,iBAAA,CAAkBnpD,OAAzB;EAbW;EAgBbmT,OAAO9S,MAAP,EAAe;IACb,KAAK0oD,KAAL,GAAa,IAAb;IACA,KAAK4H,0BAAL,CAAgCxwD,MAAhC,CAAuCE,MAAvC;IACA,WAAW8oD,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAKw2C,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;IACA,IAAI,KAAK86D,QAAL,CAAcH,gBAAd,CAA+B,KAAKY,cAApC,CAAJ,EAAyD;MACvD,KAAKT,QAAL,CAAcF,YAAd,CAA2B,KAAKW,cAAhC;IADuD;IAGzD,KAAK3I,kBAAL,GAA0B,IAA1B;EAVa;AA1IuB;AAyJxC,MAAMqI,kCAAN,CAAyC;EACvC95D,YAAYg6D,OAAZ,EAAqBjnD,KAArB,EAA4BQ,GAA5B,EAAiC;IAC/B,KAAKomD,QAAL,GAAgBK,OAAhB;IAEA,MAAMnwB,IAAA,GAAO;MACXsvB,MAAA,EAAQ,KAAKe,OAAL,CAAan1C,IAAb,CAAkB,IAAlB,CADG;MAEXg0C,OAAA,EAAS,KAAKoB,QAAL,CAAcp1C,IAAd,CAAmB,IAAnB,CAFE;MAGX7S,UAAA,EAAY,KAAK0/C,WAAL,CAAiB7sC,IAAjB,CAAsB,IAAtB;IAHD,CAAb;IAKA,KAAK2vC,IAAL,GAAYsF,OAAA,CAAQ57D,GAApB;IACA,KAAKs8D,UAAL,GAAkBV,OAAA,CAAQvB,YAAR,CAAqB1lD,KAArB,EAA4BQ,GAA5B,EAAiCs2B,IAAjC,CAAlB;IACA,KAAK8oB,SAAL,GAAiB,EAAjB;IACA,KAAKI,YAAL,GAAoB,IAApB;IACA,KAAKN,KAAL,GAAa,KAAb;IACA,KAAKkC,YAAL,GAAoB7zD,SAApB;IAEA,KAAKoR,UAAL,GAAkB,IAAlB;IACA,KAAK6nD,QAAL,GAAgB,IAAhB;EAhB+B;EAmBjCY,OAAA,EAAS;IACP,KAAKZ,QAAL,GAAgB,IAAhB;EADO;EAITG,QAAQpwD,IAAR,EAAc;IACZ,MAAMtI,KAAA,GAAQsI,IAAA,CAAKtI,KAAnB;IACA,IAAI,KAAKmxD,SAAL,CAAe9zD,MAAf,GAAwB,CAA5B,EAA+B;MAC7B,MAAMg0D,iBAAA,GAAoB,KAAKF,SAAL,CAAejrB,KAAf,EAA1B;MACAmrB,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOmC,KAAT;QAAgB2a,IAAA,EAAM;MAAtB,CAA1B;IAF6B,CAA/B,MAGO;MACL,KAAK42C,YAAL,GAAoBvxD,KAApB;IADK;IAGP,KAAKixD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAKw2C,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;IACA,KAAK87D,MAAL;EAbY;EAgBdR,SAAS15D,MAAT,EAAiB;IACf,KAAKk0D,YAAL,GAAoB,IAAAgC,wCAAA,EAA0Bl2D,MAA1B,EAAkC,KAAKi0D,IAAvC,CAApB;IACA,WAAW7B,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBhpD,MAAlB,CAAyB,KAAK8qD,YAA9B;IAD8C;IAGhD,KAAKhC,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;IACA,KAAKk0D,YAAL,GAAoB,IAApB;EANe;EASjBnB,YAAY1uC,GAAZ,EAAiB;IACf,IAAI,CAAC,KAAKW,oBAAV,EAAgC;MAC9B,KAAK3R,UAAL,GAAkB;QAAEe,MAAA,EAAQiQ,GAAA,CAAIjQ;MAAd,CAAlB;IAD8B;EADjB;EAMjB,IAAI4Q,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAP;EADyB;EAI3B,MAAM3H,IAANA,CAAA,EAAa;IACX,IAAI,KAAKy4C,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAGvB,IAAI,KAAK5B,YAAL,KAAsB,IAA1B,EAAgC;MAC9B,MAAMvxD,KAAA,GAAQ,KAAKuxD,YAAnB;MACA,KAAKA,YAAL,GAAoB,IAApB;MACA,OAAO;QAAE1zD,KAAA,EAAOmC,KAAT;QAAgB2a,IAAA,EAAM;MAAtB,CAAP;IAH8B;IAKhC,IAAI,KAAKs2C,KAAT,EAAgB;MACd,OAAO;QAAEpzD,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAM02C,iBAAA,GAAoB,IAAIrpD,uBAAJ,EAA1B;IACA,KAAKmpD,SAAL,CAAejxD,IAAf,CAAoBmxD,iBAApB;IACA,OAAOA,iBAAA,CAAkBnpD,OAAzB;EAdW;EAiBbmT,OAAO9S,MAAP,EAAe;IACb,KAAK0oD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKF,SAArC,EAAgD;MAC9CE,iBAAA,CAAkBjpD,OAAlB,CAA0B;QAAEvK,KAAA,EAAOyB,SAAT;QAAoBqb,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAKw2C,SAAL,CAAe9zD,MAAf,GAAwB,CAAxB;IACA,IAAI,KAAK86D,QAAL,CAAcH,gBAAd,CAA+B,KAAKkB,UAApC,CAAJ,EAAqD;MACnD,KAAKf,QAAL,CAAcF,YAAd,CAA2B,KAAKiB,UAAhC;IADmD;IAGrD,KAAKC,MAAL;EATa;AA5EwB;;;;;;;;;;;;AC/XzC,IAAAnwD,KAAA,GAAAC,mBAAA;AAMA,IAAAipD,cAAA,GAAAjpD,mBAAA;AAOA;AAMA,SAASmwD,kBAATA,CAA4BvF,OAA5B,EAAqCjoD,eAArC,EAAsDytD,eAAtD,EAAuE;EACrE,OAAO;IACLrF,MAAA,EAAQ,KADH;IAELH,OAFK;IAGLyF,MAAA,EAAQD,eAAA,CAAgBC,MAHnB;IAILpmC,IAAA,EAAM,MAJD;IAKLqmC,WAAA,EAAa3tD,eAAA,GAAkB,SAAlB,GAA8B,aALtC;IAML4tD,QAAA,EAAU;EANL,CAAP;AADqE;AAWvE,SAASC,aAATA,CAAuB9tD,WAAvB,EAAoC;EAClC,MAAMkoD,OAAA,GAAU,IAAI6F,OAAJ,EAAhB;EACA,WAAW5mB,QAAX,IAAuBnnC,WAAvB,EAAoC;IAClC,MAAM9N,KAAA,GAAQ8N,WAAA,CAAYmnC,QAAZ,CAAd;IACA,IAAIj1C,KAAA,KAAUyB,SAAd,EAAyB;MACvB;IADuB;IAGzBu0D,OAAA,CAAQx6B,MAAR,CAAeyZ,QAAf,EAAyBj1C,KAAzB;EALkC;EAOpC,OAAOg2D,OAAP;AATkC;AAYpC,SAAS+C,cAATA,CAAwBzmD,GAAxB,EAA6B;EAC3B,IAAIA,GAAA,YAAe7P,UAAnB,EAA+B;IAC7B,OAAO6P,GAAA,CAAIhP,MAAX;EAD6B;EAG/B,IAAIgP,GAAA,YAAe0R,WAAnB,EAAgC;IAC9B,OAAO1R,GAAP;EAD8B;EAGhC,IAAA7T,UAAA,EAAM,4CAA2C6T,GAA5C,EAAL;EACA,OAAO,IAAI7P,UAAJ,CAAe6P,GAAf,EAAoBhP,MAA3B;AAR2B;AAY7B,MAAM8J,cAAN,CAAqB;EACnBzM,YAAYyR,MAAZ,EAAoB;IAClB,KAAKA,MAAL,GAAcA,MAAd;IACA,KAAKyiD,MAAL,GAAc,YAAYtzB,IAAZ,CAAiBnvB,MAAA,CAAOrT,GAAxB,CAAd;IACA,KAAK+O,WAAL,GAAoB,KAAK+mD,MAAL,IAAeziD,MAAA,CAAOtE,WAAvB,IAAuC,EAA1D;IAEA,KAAKskD,kBAAL,GAA0B,IAA1B;IACA,KAAK2C,oBAAL,GAA4B,EAA5B;EANkB;EASpB,IAAInC,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKR,kBAAL,EAAyBS,OAAzB,IAAoC,CAA3C;EAD2B;EAI7BjvC,cAAA,EAAgB;IACd,IAAAhlB,YAAA,EACE,CAAC,KAAKwzD,kBADR,EAEE,uDAFF;IAIA,KAAKA,kBAAL,GAA0B,IAAI0J,oBAAJ,CAAyB,IAAzB,CAA1B;IACA,OAAO,KAAK1J,kBAAZ;EANc;EAShBxtC,eAAelR,KAAf,EAAsBQ,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAK0+C,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMh2C,MAAA,GAAS,IAAIm/C,yBAAJ,CAA8B,IAA9B,EAAoCroD,KAApC,EAA2CQ,GAA3C,CAAf;IACA,KAAK6gD,oBAAL,CAA0B1yD,IAA1B,CAA+Bua,MAA/B;IACA,OAAOA,MAAP;EANyB;EAS3B8G,kBAAkBhZ,MAAlB,EAA0B;IACxB,KAAK0nD,kBAAL,EAAyB50C,MAAzB,CAAgC9S,MAAhC;IAEA,WAAWkS,MAAX,IAAqB,KAAKm4C,oBAAL,CAA0BrvD,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvDkX,MAAA,CAAOY,MAAP,CAAc9S,MAAd;IADuD;EAHjC;AAhCP;AArErBxb,sBAAA,GAAAke,cAAA;AA+GA,MAAM0uD,oBAAN,CAA2B;EACzBn7D,YAAYutD,MAAZ,EAAoB;IAClB,KAAKiF,OAAL,GAAejF,MAAf;IACA,KAAK8N,OAAL,GAAe,IAAf;IACA,KAAKnJ,OAAL,GAAe,CAAf;IACA,KAAKQ,SAAL,GAAiB,IAAjB;IACA,MAAMjhD,MAAA,GAAS87C,MAAA,CAAO97C,MAAtB;IACA,KAAK6pD,gBAAL,GAAwB7pD,MAAA,CAAOrE,eAAP,IAA0B,KAAlD;IACA,KAAKokD,cAAL,GAAsB//C,MAAA,CAAO5S,MAA7B;IACA,KAAKm2D,kBAAL,GAA0B,IAAIxrD,uBAAJ,EAA1B;IACA,KAAKorD,aAAL,GAAqBnjD,MAAA,CAAO7C,YAAP,IAAuB,KAA5C;IACA,KAAKimD,eAAL,GAAuBpjD,MAAA,CAAOjE,cAA9B;IACA,IAAI,CAAC,KAAKqnD,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAK2G,gBAAL,GAAwB,IAAIC,eAAJ,EAAxB;IACA,KAAKlK,qBAAL,GAA6B,CAAC7/C,MAAA,CAAO5C,aAArC;IACA,KAAK0iD,iBAAL,GAAyB,CAAC9/C,MAAA,CAAO7C,YAAjC;IAEA,KAAK6sD,QAAL,GAAgBR,aAAA,CAAc,KAAKzI,OAAL,CAAarlD,WAA3B,CAAhB;IAEA,MAAM/O,GAAA,GAAMqT,MAAA,CAAOrT,GAAnB;IACAknB,KAAA,CACElnB,GADF,EAEEw8D,kBAAA,CACE,KAAKa,QADP,EAEE,KAAKH,gBAFP,EAGE,KAAKC,gBAHP,CAFF,EAQGlrD,IARH,CAQQiuB,QAAA,IAAY;MAChB,IAAI,CAAC,IAAAs4B,qCAAA,EAAuBt4B,QAAA,CAAS79B,MAAhC,CAAL,EAA8C;QAC5C,MAAM,IAAAk2D,wCAAA,EAA0Br4B,QAAA,CAAS79B,MAAnC,EAA2CrC,GAA3C,CAAN;MAD4C;MAG9C,KAAKi9D,OAAL,GAAe/8B,QAAA,CAASxD,IAAT,CAAcxe,SAAd,EAAf;MACA,KAAK04C,kBAAL,CAAwBprD,OAAxB;MAEA,MAAM+rD,iBAAA,GAAoB51D,IAAA,IAAQ;QAChC,OAAOu+B,QAAA,CAAS+2B,OAAT,CAAiB9qD,GAAjB,CAAqBxK,IAArB,CAAP;MADgC,CAAlC;MAGA,MAAM;QAAE61D,kBAAF;QAAsBC;MAAtB,IACJ,IAAAC,+CAAA,EAAiC;QAC/BH,iBAD+B;QAE/BzB,MAAA,EAAQ,KAAK1B,OAAL,CAAa0B,MAFU;QAG/B1mD,cAAA,EAAgB,KAAKqnD,eAHU;QAI/BjmD,YAAA,EAAc,KAAKgmD;MAJY,CAAjC,CADF;MAQA,KAAKrD,iBAAL,GAAyBqE,kBAAzB;MAEA,KAAKpE,cAAL,GAAsBqE,eAAA,IAAmB,KAAKrE,cAA9C;MAEA,KAAKkB,SAAL,GAAiB,IAAAqD,wCAAA,EAA0BJ,iBAA1B,CAAjB;MAIA,IAAI,CAAC,KAAKrE,qBAAN,IAA+B,KAAKC,iBAAxC,EAA2D;QACzD,KAAK10C,MAAL,CAAY,IAAIlc,oBAAJ,CAAmB,wBAAnB,CAAZ;MADyD;IA1B3C,CARpB,EAsCG4Q,KAtCH,CAsCS,KAAKyjD,kBAAL,CAAwBnrD,MAtCjC;IAwCA,KAAKqI,UAAL,GAAkB,IAAlB;EA9DkB;EAiEpB,IAAI0R,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKoxC,kBAAL,CAAwBtrD,OAA/B;EADiB;EAInB,IAAI6b,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKmtC,SAAZ;EADa;EAIf,IAAI3uC,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKytC,cAAZ;EADkB;EAIpB,IAAI1tC,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAKytC,iBAAZ;EADqB;EAIvB,IAAI1tC,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKytC,qBAAZ;EADyB;EAI3B,MAAMp1C,IAANA,CAAA,EAAa;IACX,MAAM,KAAK84C,kBAAL,CAAwBtrD,OAA9B;IACA,MAAM;MAAErK,KAAF;MAAS8c;IAAT,IAAkB,MAAM,KAAKk/C,OAAL,CAAan/C,IAAb,EAA9B;IACA,IAAIC,IAAJ,EAAU;MACR,OAAO;QAAE9c,KAAF;QAAS8c;MAAT,CAAP;IADQ;IAGV,KAAK+1C,OAAL,IAAgB7yD,KAAA,CAAMsJ,UAAtB;IACA,KAAKuJ,UAAL,GAAkB;MAChBe,MAAA,EAAQ,KAAKi/C,OADG;MAEhBh/C,KAAA,EAAO,KAAKs+C;IAFI,CAAlB;IAKA,OAAO;MAAEnyD,KAAA,EAAO+4D,cAAA,CAAe/4D,KAAf,CAAT;MAAgC8c,IAAA,EAAM;IAAtC,CAAP;EAZW;EAebU,OAAO9S,MAAP,EAAe;IACb,KAAKsxD,OAAL,EAAcx+C,MAAd,CAAqB9S,MAArB;IACA,KAAKwxD,gBAAL,CAAsB/nD,KAAtB;EAFa;AArGU;AA4G3B,MAAM4nD,yBAAN,CAAgC;EAC9Bp7D,YAAYutD,MAAZ,EAAoBx6C,KAApB,EAA2BQ,GAA3B,EAAgC;IAC9B,KAAKi/C,OAAL,GAAejF,MAAf;IACA,KAAK8N,OAAL,GAAe,IAAf;IACA,KAAKnJ,OAAL,GAAe,CAAf;IACA,MAAMzgD,MAAA,GAAS87C,MAAA,CAAO97C,MAAtB;IACA,KAAK6pD,gBAAL,GAAwB7pD,MAAA,CAAOrE,eAAP,IAA0B,KAAlD;IACA,KAAK2nD,eAAL,GAAuB,IAAIvrD,uBAAJ,EAAvB;IACA,KAAK8nD,qBAAL,GAA6B,CAAC7/C,MAAA,CAAO5C,aAArC;IAEA,KAAK0sD,gBAAL,GAAwB,IAAIC,eAAJ,EAAxB;IACA,KAAKC,QAAL,GAAgBR,aAAA,CAAc,KAAKzI,OAAL,CAAarlD,WAA3B,CAAhB;IACA,KAAKsuD,QAAL,CAAc5gC,MAAd,CAAqB,OAArB,EAA+B,SAAQ9nB,KAAM,IAAGQ,GAAA,GAAM,CAAxB,EAA9B;IAEA,MAAMnV,GAAA,GAAMqT,MAAA,CAAOrT,GAAnB;IACAknB,KAAA,CACElnB,GADF,EAEEw8D,kBAAA,CACE,KAAKa,QADP,EAEE,KAAKH,gBAFP,EAGE,KAAKC,gBAHP,CAFF,EAQGlrD,IARH,CAQQiuB,QAAA,IAAY;MAChB,IAAI,CAAC,IAAAs4B,qCAAA,EAAuBt4B,QAAA,CAAS79B,MAAhC,CAAL,EAA8C;QAC5C,MAAM,IAAAk2D,wCAAA,EAA0Br4B,QAAA,CAAS79B,MAAnC,EAA2CrC,GAA3C,CAAN;MAD4C;MAG9C,KAAK22D,eAAL,CAAqBnrD,OAArB;MACA,KAAKyxD,OAAL,GAAe/8B,QAAA,CAASxD,IAAT,CAAcxe,SAAd,EAAf;IALgB,CARpB,EAeG/K,KAfH,CAeS,KAAKwjD,eAAL,CAAqBlrD,MAf9B;IAiBA,KAAKqI,UAAL,GAAkB,IAAlB;EA/B8B;EAkChC,IAAI2R,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKytC,qBAAZ;EADyB;EAI3B,MAAMp1C,IAANA,CAAA,EAAa;IACX,MAAM,KAAK64C,eAAL,CAAqBrrD,OAA3B;IACA,MAAM;MAAErK,KAAF;MAAS8c;IAAT,IAAkB,MAAM,KAAKk/C,OAAL,CAAan/C,IAAb,EAA9B;IACA,IAAIC,IAAJ,EAAU;MACR,OAAO;QAAE9c,KAAF;QAAS8c;MAAT,CAAP;IADQ;IAGV,KAAK+1C,OAAL,IAAgB7yD,KAAA,CAAMsJ,UAAtB;IACA,KAAKuJ,UAAL,GAAkB;MAAEe,MAAA,EAAQ,KAAKi/C;IAAf,CAAlB;IAEA,OAAO;MAAE7yD,KAAA,EAAO+4D,cAAA,CAAe/4D,KAAf,CAAT;MAAgC8c,IAAA,EAAM;IAAtC,CAAP;EATW;EAYbU,OAAO9S,MAAP,EAAe;IACb,KAAKsxD,OAAL,EAAcx+C,MAAd,CAAqB9S,MAArB;IACA,KAAKwxD,gBAAL,CAAsB/nD,KAAtB;EAFa;AAnDe;;;;;;;;;;;;;;ACzMhC,IAAAhJ,KAAA,GAAAC,mBAAA;AAMA,IAAAE,cAAA,GAAAF,mBAAA;AA6CA,MAAMixD,uBAAA,GAA0B,MAAhC;AACA,MAAMC,iBAAA,GAAoB,EAA1B;AACA,MAAMC,mBAAA,GAAsB,GAA5B;AACA,MAAMC,WAAA,GAAc,IAAI1xD,GAAJ,EAApB;AAEA,SAAS2xD,MAATA,CAAgBrgD,IAAhB,EAAsB1Y,0BAAtB,EAAkD;EAChD,IAAIygC,GAAJ;EACA,IAAIzgC,0BAAA,IAA8BD,iBAAA,CAAYC,0BAA9C,EAA0E;IACxEygC,GAAA,GAAM,IAAIxgC,eAAJ,CAAoByY,IAApB,EAA0BA,IAA1B,EAAgC2oB,UAAhC,CAA2C,IAA3C,EAAiD;MAAEmR,KAAA,EAAO;IAAT,CAAjD,CAAN;EADwE,CAA1E,MAEO;IACL,MAAMnvB,MAAA,GAASzX,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAAf;IACA9I,MAAA,CAAOhB,KAAP,GAAegB,MAAA,CAAOf,MAAP,GAAgB5J,IAA/B;IACA+nB,GAAA,GAAMpd,MAAA,CAAOge,UAAP,CAAkB,IAAlB,EAAwB;MAAEmR,KAAA,EAAO;IAAT,CAAxB,CAAN;EAHK;EAMP,OAAO/R,GAAP;AAVgD;AAalD,SAASu4B,SAATA,CAAmBjzB,UAAnB,EAA+B/lC,0BAA/B,EAA2D;EACzD,MAAMi5D,YAAA,GAAeH,WAAA,CAAYtxD,GAAZ,CAAgBu+B,UAAhB,CAArB;EACA,IAAIkzB,YAAJ,EAAkB;IAChB,OAAOA,YAAP;EADgB;EAIlB,MAAMx4B,GAAA,GAAMs4B,MAAA,CAAOH,iBAAP,EAA0B54D,0BAA1B,CAAZ;EAEAygC,GAAA,CAAI5e,IAAJ,GAAW,GAAG+2C,iBAAkB,MAAK7yB,UAA1B,EAAX;EACA,MAAMmzB,OAAA,GAAUz4B,GAAA,CAAIod,WAAJ,CAAgB,EAAhB,CAAhB;EAGA,IAAIsb,MAAA,GAASD,OAAA,CAAQE,qBAArB;EACA,IAAIC,OAAA,GAAU96D,IAAA,CAAKgG,GAAL,CAAS20D,OAAA,CAAQI,sBAAjB,CAAd;EACA,IAAIH,MAAJ,EAAY;IACV,MAAMI,KAAA,GAAQJ,MAAA,IAAUA,MAAA,GAASE,OAAT,CAAxB;IACAP,WAAA,CAAY3iD,GAAZ,CAAgB4vB,UAAhB,EAA4BwzB,KAA5B;IAEA94B,GAAA,CAAIpd,MAAJ,CAAWhB,KAAX,GAAmBoe,GAAA,CAAIpd,MAAJ,CAAWf,MAAX,GAAoB,CAAvC;IACA,OAAOi3C,KAAP;EALU;EAYZ94B,GAAA,CAAImR,WAAJ,GAAkB,KAAlB;EACAnR,GAAA,CAAI+X,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBogB,iBAApB,EAAuCA,iBAAvC;EACAn4B,GAAA,CAAIyb,UAAJ,CAAe,GAAf,EAAoB,CAApB,EAAuB,CAAvB;EACA,IAAIsd,MAAA,GAAS/4B,GAAA,CAAIgF,YAAJ,CACX,CADW,EAEX,CAFW,EAGXmzB,iBAHW,EAIXA,iBAJW,EAKX7xD,IALF;EAMAsyD,OAAA,GAAU,CAAV;EACA,KAAK,IAAIh7D,CAAA,GAAIm7D,MAAA,CAAO19D,MAAP,GAAgB,CAAhB,GAAoB,CAA5B,EAA+BuC,CAAA,IAAK,CAAzC,EAA4CA,CAAA,IAAK,CAAjD,EAAoD;IAClD,IAAIm7D,MAAA,CAAOn7D,CAAP,IAAY,CAAhB,EAAmB;MACjBg7D,OAAA,GAAU96D,IAAA,CAAKq1C,IAAL,CAAUv1C,CAAA,GAAI,CAAJ,GAAQu6D,iBAAlB,CAAV;MACA;IAFiB;EAD+B;EAUpDn4B,GAAA,CAAI+X,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBogB,iBAApB,EAAuCA,iBAAvC;EACAn4B,GAAA,CAAIyb,UAAJ,CAAe,GAAf,EAAoB,CAApB,EAAuB0c,iBAAvB;EACAY,MAAA,GAAS/4B,GAAA,CAAIgF,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuBmzB,iBAAvB,EAA0CA,iBAA1C,EAA6D7xD,IAAtE;EACAoyD,MAAA,GAAS,CAAT;EACA,KAAK,IAAI96D,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKq0D,MAAA,CAAO19D,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;IAClD,IAAIm7D,MAAA,CAAOn7D,CAAP,IAAY,CAAhB,EAAmB;MACjB86D,MAAA,GAASP,iBAAA,GAAoBr6D,IAAA,CAAKg6C,KAAL,CAAWl6C,CAAA,GAAI,CAAJ,GAAQu6D,iBAAnB,CAA7B;MACA;IAFiB;EAD+B;EAOpDn4B,GAAA,CAAIpd,MAAJ,CAAWhB,KAAX,GAAmBoe,GAAA,CAAIpd,MAAJ,CAAWf,MAAX,GAAoB,CAAvC;EAEA,IAAI62C,MAAJ,EAAY;IACV,MAAMI,KAAA,GAAQJ,MAAA,IAAUA,MAAA,GAASE,OAAT,CAAxB;IACAP,WAAA,CAAY3iD,GAAZ,CAAgB4vB,UAAhB,EAA4BwzB,KAA5B;IACA,OAAOA,KAAP;EAHU;EAMZT,WAAA,CAAY3iD,GAAZ,CAAgB4vB,UAAhB,EAA4B8yB,mBAA5B;EACA,OAAOA,mBAAP;AAlEyD;AAqE3D,SAASY,UAATA,CAAoB1vD,IAApB,EAA0B2vD,IAA1B,EAAgCpgD,MAAhC,EAAwC;EAEtC,MAAMqgD,OAAA,GAAU/tD,QAAA,CAASugB,aAAT,CAAuB,MAAvB,CAAhB;EACA,MAAMytC,iBAAA,GAAoB;IACxBlwB,KAAA,EAAO,CADiB;IAExByW,WAAA,EAAa,CAFW;IAGxB0Z,OAAA,EAASH,IAAA,CAAK56D,GAAL,KAAa,EAHE;IAIxBg7D,MAAA,EAAQJ,IAAA,CAAKI,MAJW;IAKxB/sB,QAAA,EAAU;EALc,CAA1B;EAOAhjC,IAAA,CAAKgwD,SAAL,CAAep7D,IAAf,CAAoBg7D,OAApB;EAEA,MAAM1uC,EAAA,GAAKrqB,UAAA,CAAKvL,SAAL,CAAe0U,IAAA,CAAKiwD,UAApB,EAAgCN,IAAA,CAAKrkE,SAArC,CAAX;EACA,IAAIq0C,KAAA,GAAQnrC,IAAA,CAAK07D,KAAL,CAAWhvC,EAAA,CAAG,CAAH,CAAX,EAAkBA,EAAA,CAAG,CAAH,CAAlB,CAAZ;EACA,MAAMtB,KAAA,GAAQrQ,MAAA,CAAOogD,IAAA,CAAKQ,QAAZ,CAAd;EACA,IAAIvwC,KAAA,CAAM4yB,QAAV,EAAoB;IAClB7S,KAAA,IAASnrC,IAAA,CAAKjL,EAAL,GAAU,CAAnB;EADkB;EAGpB,MAAM6mE,UAAA,GAAa57D,IAAA,CAAKgtC,KAAL,CAAWtgB,EAAA,CAAG,CAAH,CAAX,EAAkBA,EAAA,CAAG,CAAH,CAAlB,CAAnB;EACA,MAAMmvC,UAAA,GACJD,UAAA,GAAanB,SAAA,CAAUrvC,KAAA,CAAMoc,UAAhB,EAA4Bh8B,IAAA,CAAKswD,2BAAjC,CADf;EAGA,IAAIjvC,IAAJ,EAAUC,GAAV;EACA,IAAIqe,KAAA,KAAU,CAAd,EAAiB;IACfte,IAAA,GAAOH,EAAA,CAAG,CAAH,CAAP;IACAI,GAAA,GAAMJ,EAAA,CAAG,CAAH,IAAQmvC,UAAd;EAFe,CAAjB,MAGO;IACLhvC,IAAA,GAAOH,EAAA,CAAG,CAAH,IAAQmvC,UAAA,GAAa77D,IAAA,CAAK+7D,GAAL,CAAS5wB,KAAT,CAA5B;IACAre,GAAA,GAAMJ,EAAA,CAAG,CAAH,IAAQmvC,UAAA,GAAa77D,IAAA,CAAKg8D,GAAL,CAAS7wB,KAAT,CAA3B;EAFK;EAKP,MAAM8wB,cAAA,GAAiB,2BAAvB;EACA,MAAMC,QAAA,GAAWd,OAAA,CAAQhwC,KAAzB;EAGA,IAAI5f,IAAA,CAAK2wD,UAAL,KAAoB3wD,IAAA,CAAK4wD,cAA7B,EAA6C;IAC3CF,QAAA,CAASrvC,IAAT,GAAgB,GAAI,CAAC,MAAMA,IAAP,GAAerhB,IAAA,CAAK6wD,UAApB,EAAgCC,OAAjC,CAAyC,CAAzC,CAA4C,GAA/D;IACAJ,QAAA,CAASpvC,GAAT,GAAe,GAAI,CAAC,MAAMA,GAAP,GAActhB,IAAA,CAAK+wD,WAAnB,EAAgCD,OAAjC,CAAyC,CAAzC,CAA4C,GAA9D;EAF2C,CAA7C,MAGO;IAELJ,QAAA,CAASrvC,IAAT,GAAgB,GAAGovC,cAAH,GAAoBpvC,IAAA,CAAKyvC,OAAL,CAAa,CAAb,CAAgB,KAApD;IACAJ,QAAA,CAASpvC,GAAT,GAAe,GAAGmvC,cAAH,GAAoBnvC,GAAA,CAAIwvC,OAAJ,CAAY,CAAZ,CAAe,KAAlD;EAHK;EAKPJ,QAAA,CAAS1tB,QAAT,GAAoB,GAAGytB,cAAH,GAAoBL,UAAA,CAAWU,OAAX,CAAmB,CAAnB,CAAsB,KAA9D;EACAJ,QAAA,CAAS10B,UAAT,GAAsBpc,KAAA,CAAMoc,UAA5B;EAEA6zB,iBAAA,CAAkB7sB,QAAlB,GAA6BotB,UAA7B;EAGAR,OAAA,CAAQvtC,YAAR,CAAqB,MAArB,EAA6B,cAA7B;EAEAutC,OAAA,CAAQhhD,WAAR,GAAsB+gD,IAAA,CAAK56D,GAA3B;EAEA66D,OAAA,CAAQoB,GAAR,GAAcrB,IAAA,CAAKqB,GAAnB;EAIA,IAAIhxD,IAAA,CAAKixD,qBAAT,EAAgC;IAC9BrB,OAAA,CAAQsB,OAAR,CAAgBf,QAAhB,GAA2BR,IAAA,CAAKQ,QAAhC;EAD8B;EAGhC,IAAIxwB,KAAA,KAAU,CAAd,EAAiB;IACfkwB,iBAAA,CAAkBlwB,KAAlB,GAA0BA,KAAA,IAAS,MAAMnrC,IAAA,CAAKjL,EAAX,CAAnC;EADe;EAMjB,IAAI4nE,eAAA,GAAkB,KAAtB;EACA,IAAIxB,IAAA,CAAK56D,GAAL,CAAShD,MAAT,GAAkB,CAAtB,EAAyB;IACvBo/D,eAAA,GAAkB,IAAlB;EADuB,CAAzB,MAEO,IAAIxB,IAAA,CAAK56D,GAAL,KAAa,GAAb,IAAoB46D,IAAA,CAAKrkE,SAAL,CAAe,CAAf,MAAsBqkE,IAAA,CAAKrkE,SAAL,CAAe,CAAf,CAA9C,EAAiE;IACtE,MAAM8lE,SAAA,GAAY58D,IAAA,CAAKgG,GAAL,CAASm1D,IAAA,CAAKrkE,SAAL,CAAe,CAAf,CAAT,CAAlB;MACE+lE,SAAA,GAAY78D,IAAA,CAAKgG,GAAL,CAASm1D,IAAA,CAAKrkE,SAAL,CAAe,CAAf,CAAT,CADd;IAIA,IACE8lE,SAAA,KAAcC,SAAd,IACA78D,IAAA,CAAK4D,GAAL,CAASg5D,SAAT,EAAoBC,SAApB,IAAiC78D,IAAA,CAAKC,GAAL,CAAS28D,SAAT,EAAoBC,SAApB,CAAjC,GAAkE,GAFpE,EAGE;MACAF,eAAA,GAAkB,IAAlB;IADA;EARoE;EAYxE,IAAIA,eAAJ,EAAqB;IACnBtB,iBAAA,CAAkBzZ,WAAlB,GAAgCx2B,KAAA,CAAM4yB,QAAN,GAAiBmd,IAAA,CAAKp3C,MAAtB,GAA+Bo3C,IAAA,CAAKr3C,KAApE;EADmB;EAGrBtY,IAAA,CAAKsxD,kBAAL,CAAwBllD,GAAxB,CAA4BwjD,OAA5B,EAAqCC,iBAArC;EACA,IAAI7vD,IAAA,CAAKuxD,iBAAT,EAA4B;IAC1BvxD,IAAA,CAAKwxD,WAAL,CAAiB5B,OAAjB;EAD0B;AArFU;AA0FxC,SAAS6B,MAATA,CAAgBhyD,MAAhB,EAAwB;EACtB,MAAM;IAAEue,GAAF;IAAOxT,KAAP;IAAc+8B,UAAd;IAA0B7Q,GAA1B;IAA+Bg7B,YAA/B;IAA6CC;EAA7C,IAAgElyD,MAAtE;EACA,MAAM;IAAEmgB;EAAF,IAAY5B,GAAlB;EACA,IAAI1yB,SAAA,GAAY,EAAhB;EACA,IAAIi8C,UAAA,CAAW6O,WAAX,KAA2B,CAA3B,IAAgC7O,UAAA,CAAWuoB,OAA/C,EAAwD;IACtD,MAAM;MAAE9zB;IAAF,IAAiBpc,KAAvB;IACA,MAAM;MAAEw2B,WAAF;MAAepT;IAAf,IAA4BuE,UAAlC;IAEA,IAAImqB,YAAA,KAAiB1uB,QAAjB,IAA6B2uB,cAAA,KAAmB31B,UAApD,EAAgE;MAC9DtF,GAAA,CAAI5e,IAAJ,GAAW,GAAGkrB,QAAA,GAAWx4B,KAAM,MAAKwxB,UAAzB,EAAX;MACAv8B,MAAA,CAAOiyD,YAAP,GAAsB1uB,QAAtB;MACAvjC,MAAA,CAAOkyD,cAAP,GAAwB31B,UAAxB;IAH8D;IAOhE,MAAM;MAAE1jB;IAAF,IAAYoe,GAAA,CAAIod,WAAJ,CAAgB91B,GAAA,CAAIpP,WAApB,CAAlB;IAEA,IAAI0J,KAAA,GAAQ,CAAZ,EAAe;MACbhtB,SAAA,GAAa,UAAU8qD,WAAA,GAAc5rC,KAAf,GAAwB8N,KAAM,GAApD;IADa;EAbuC;EAiBxD,IAAIivB,UAAA,CAAW5H,KAAX,KAAqB,CAAzB,EAA4B;IAC1Br0C,SAAA,GAAa,UAASi8C,UAAA,CAAW5H,KAAM,QAAOr0C,SAAlC,EAAZ;EAD0B;EAG5B,IAAIA,SAAA,CAAUyG,MAAV,GAAmB,CAAvB,EAA0B;IACxB6tB,KAAA,CAAMt0B,SAAN,GAAkBA,SAAlB;EADwB;AAxBJ;AA6BxB,SAASigB,MAATA,CAAgBvL,IAAhB,EAAsB;EACpB,IAAIA,IAAA,CAAK4xD,SAAT,EAAoB;IAClB;EADkB;EAGpB,MAAMC,QAAA,GAAW7xD,IAAA,CAAKgwD,SAAtB;EACA,MAAM3iD,UAAA,GAAarN,IAAA,CAAK0E,WAAxB;EACA,MAAMotD,cAAA,GAAiBD,QAAA,CAAS9/D,MAAhC;EAIA,IAAI+/D,cAAA,GAAiBlD,uBAArB,EAA8C;IAC5CvhD,UAAA,CAAWvQ,OAAX;IACA;EAF4C;EAK9C,IAAI,CAACkD,IAAA,CAAKuxD,iBAAV,EAA6B;IAC3B,WAAW3B,OAAX,IAAsBiC,QAAtB,EAAgC;MAC9B7xD,IAAA,CAAKwxD,WAAL,CAAiB5B,OAAjB;IAD8B;EADL;EAK7BviD,UAAA,CAAWvQ,OAAX;AApBoB;AAuBtB,MAAMi1D,mBAAN,CAA0B;EACxB7+D,YAAY;IACV8+D,iBADU;IAEVhpC,SAFU;IAGVvd,QAHU;IAIVomD,QAJU;IAKVhC,iBALU;IAMVoC,mBANU;IAOVh8D;EAPU,CAAZ,EAQG;IACD,KAAKi8D,kBAAL,GAA0BF,iBAA1B;IACA,KAAKT,iBAAL,GAAyBS,iBAAA,YAA6B5Q,cAAtD;IACA,KAAKuP,UAAL,GAAkB,KAAKC,cAAL,GAAsB5nC,SAAxC;IACA,KAAKgnC,SAAL,GAAiB6B,QAAA,IAAY,EAA7B;IACA,KAAKM,oBAAL,GAA4BF,mBAAA,IAAuB,EAAnD;IACA,KAAK3B,2BAAL,GAAmCr6D,0BAAnC;IACA,KAAKg7D,qBAAL,GAA6B,CAAC,CAACrvD,UAAA,CAAWgW,aAAX,EAA0BC,OAAzD;IAEA,KAAK02C,OAAL,GAAe,IAAf;IACA,KAAK+C,kBAAL,GAA0BzB,iBAAA,IAAqB,IAAI/8C,OAAJ,EAA/C;IACA,KAAK8+C,SAAL,GAAiB,KAAjB;IACA,KAAKltD,WAAL,GAAmB,IAAIhI,uBAAJ,EAAnB;IACA,KAAK01D,iBAAL,GAAyB;MACvBV,YAAA,EAAc,IADS;MAEvBC,cAAA,EAAgB,IAFO;MAGvB3zC,GAAA,EAAK,IAHkB;MAIvBxT,KAAA,EAAOiB,QAAA,CAASjB,KAAT,IAAkB5I,UAAA,CAAW6oC,gBAAX,IAA+B,CAA/B,CAJF;MAKvBlD,UAAA,EAAY,IALW;MAMvB7Q,GAAA,EAAKs4B,MAAA,CAAO,CAAP,EAAU/4D,0BAAV;IANkB,CAAzB;IAQA,MAAM;MAAEmoB,SAAF;MAAaC,UAAb;MAAyBC,KAAzB;MAAgCC;IAAhC,IAA0C9S,QAAA,CAAS0S,OAAzD;IACA,KAAK8xC,UAAL,GAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAC,CAAX,EAAc,CAAC3xC,KAAf,EAAsBC,KAAA,GAAQF,UAA9B,CAAlB;IACA,KAAKwyC,UAAL,GAAkBzyC,SAAlB;IACA,KAAK2yC,WAAL,GAAmB1yC,UAAnB;IAEA,IAAA2Y,iCAAA,EAAmBhO,SAAnB,EAA8Bvd,QAA9B;IAGA,KAAK/G,WAAL,CAAiB9H,OAAjB,CACGsb,OADH,CACW,MAAM;MACb,KAAKk6C,iBAAL,GAAyB,IAAzB;IADa,CADjB,EAIG3tD,KAJH,CAIS,MAAM,EAJf;EA7BC;EA0CH,IAAI7H,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK8H,WAAL,CAAiB9H,OAAxB;EADY;EAOdmT,OAAA,EAAS;IACP,KAAK6hD,SAAL,GAAiB,IAAjB;IACA,IAAI,KAAKrD,OAAT,EAAkB;MAChB,KAAKA,OAAL,CACGx+C,MADH,CACU,IAAIlc,oBAAJ,CAAmB,2BAAnB,CADV,EAEG4Q,KAFH,CAES,MAAM,EAFf;MAKA,KAAK8pD,OAAL,GAAe,IAAf;IANgB;IAQlB,KAAK7pD,WAAL,CAAiB3H,MAAjB,CAAwB,IAAIlJ,oBAAJ,CAAmB,2BAAnB,CAAxB;EAVO;EAgBTw+D,cAAcxjD,KAAd,EAAqByjD,UAArB,EAAiC;IAC/B,WAAWC,IAAX,IAAmB1jD,KAAnB,EAA0B;MACxB,IAAI0jD,IAAA,CAAKx9D,GAAL,KAAaf,SAAjB,EAA4B;QAC1B,IACEu+D,IAAA,CAAK/6C,IAAL,KAAc,yBAAd,IACA+6C,IAAA,CAAK/6C,IAAL,KAAc,oBAFhB,EAGE;UACA,MAAMwF,MAAA,GAAS,KAAK2zC,UAApB;UACA,KAAKA,UAAL,GAAkB9uD,QAAA,CAASugB,aAAT,CAAuB,MAAvB,CAAlB;UACA,KAAKuuC,UAAL,CAAgBhtC,SAAhB,CAA0B/V,GAA1B,CAA8B,eAA9B;UACA,IAAI2kD,IAAA,CAAK7qD,EAAL,KAAY,IAAhB,EAAsB;YACpB,KAAKipD,UAAL,CAAgBtuC,YAAhB,CAA6B,IAA7B,EAAmC,GAAGkwC,IAAA,CAAK7qD,EAAR,EAAnC;UADoB;UAGtBsV,MAAA,CAAO+Q,MAAP,CAAc,KAAK4iC,UAAnB;QAPA,CAHF,MAWO,IAAI4B,IAAA,CAAK/6C,IAAL,KAAc,kBAAlB,EAAsC;UAC3C,KAAKm5C,UAAL,GAAkB,KAAKA,UAAL,CAAgBngC,UAAlC;QAD2C;QAG7C;MAf0B;MAiB5B,KAAK2hC,oBAAL,CAA0Bv9D,IAA1B,CAA+B29D,IAAA,CAAKx9D,GAApC;MACA26D,UAAA,CAAW,IAAX,EAAiB6C,IAAjB,EAAuBD,UAAvB;IAnBwB;EADK;EA2BjCd,YAAY5B,OAAZ,EAAqB;IACnB,MAAMC,iBAAA,GAAqB,KAAKuC,iBAAL,CAAuB7qB,UAAvB,GACzB,KAAK+pB,kBAAL,CAAwB7zD,GAAxB,CAA4BmyD,OAA5B,CADF;IAEA,KAAKwC,iBAAL,CAAuBp0C,GAAvB,GAA6B4xC,OAA7B;IACA6B,MAAA,CAAO,KAAKW,iBAAZ;IAEA,IAAIvC,iBAAA,CAAkBC,OAAtB,EAA+B;MAC7B,KAAKa,UAAL,CAAgB5iC,MAAhB,CAAuB6hC,OAAvB;IAD6B;IAG/B,IAAIC,iBAAA,CAAkBE,MAAtB,EAA8B;MAC5B,MAAMyC,EAAA,GAAK3wD,QAAA,CAASugB,aAAT,CAAuB,IAAvB,CAAX;MACAowC,EAAA,CAAGnwC,YAAH,CAAgB,MAAhB,EAAwB,cAAxB;MACA,KAAKsuC,UAAL,CAAgB5iC,MAAhB,CAAuBykC,EAAvB;IAH4B;EATX;EAmBrBC,QAAA,EAAU;IACR,MAAMplD,UAAA,GAAa,IAAI3Q,uBAAJ,EAAnB;IACA,IAAI41D,UAAA,GAAa7/D,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAjB;IAEA,IAAI,KAAKg8D,iBAAT,EAA4B;MAC1B,MAAMriD,IAAA,GAAOA,CAAA,KAAM;QACjB,KAAKq/C,OAAL,CAAan/C,IAAb,GAAoB7L,IAApB,CAAyB,CAAC;UAAEhR,KAAF;UAAS8c;QAAT,CAAD,KAAqB;UAC5C,IAAIA,IAAJ,EAAU;YACRhC,UAAA,CAAWvQ,OAAX;YACA;UAFQ;UAKVrK,MAAA,CAAO6c,MAAP,CAAcgjD,UAAd,EAA0B//D,KAAA,CAAMgd,MAAhC;UACA,KAAK8iD,aAAL,CAAmB9/D,KAAA,CAAMsc,KAAzB,EAAgCyjD,UAAhC;UACApjD,IAAA;QAR4C,CAA9C,EASG7B,UAAA,CAAWtQ,MATd;MADiB,CAAnB;MAaA,KAAKwxD,OAAL,GAAe,KAAK2D,kBAAL,CAAwB1iD,SAAxB,EAAf;MACAN,IAAA;IAf0B,CAA5B,MAgBO,IAAI,KAAKgjD,kBAAT,EAA6B;MAClC,MAAM;QAAErjD,KAAF;QAASU;MAAT,IAAoB,KAAK2iD,kBAA/B;MACA,KAAKG,aAAL,CAAmBxjD,KAAnB,EAA0BU,MAA1B;MACAlC,UAAA,CAAWvQ,OAAX;IAHkC,CAA7B,MAIA;MACL,MAAM,IAAI5L,KAAJ,CAAU,6CAAV,CAAN;IADK;IAIPmc,UAAA,CAAWzQ,OAAX,CAAmB2G,IAAnB,CAAwB,MAAM;MAC5B+uD,UAAA,GAAa,IAAb;MACA/mD,MAAA,CAAO,IAAP;IAF4B,CAA9B,EAGG,KAAK7G,WAAL,CAAiB3H,MAHpB;EA5BQ;AAxHc;AA1S1Btb,2BAAA,GAAAswE,mBAAA;AAycA,SAASW,eAATA,CAAyBjzD,MAAzB,EAAiC;EAC/B,IAEE,CAACA,MAAA,CAAOuyD,iBADR,KAECvyD,MAAA,CAAOmP,WAAP,IAAsBnP,MAAA,CAAOkzD,iBAA7B,CAHH,EAIE;IACA,IAAAz+C,yBAAA,EACE,sEACE,wEAFJ;IAIAzU,MAAA,CAAOuyD,iBAAP,GAA2BvyD,MAAA,CAAOmP,WAAP,IAAsBnP,MAAA,CAAOkzD,iBAAxD;EALA;EAQA,MAAM;IAAE3pC,SAAF;IAAavd;EAAb,IAA0BhM,MAAhC;EACA,MAAMmgB,KAAA,GAAQqR,gBAAA,CAAiBjI,SAAjB,CAAd;EACA,MAAM2E,UAAA,GAAa/N,KAAA,CAAMsR,gBAAN,CAAuB,YAAvB,CAAnB;EACA,MAAM0hC,WAAA,GAAc1wC,UAAA,CAAWtC,KAAA,CAAMsR,gBAAN,CAAuB,gBAAvB,CAAX,CAApB;EAEA,IACEvD,UAAA,KAAe,SAAf,KACC,CAACilC,WAAD,IAAgBp+D,IAAA,CAAKgG,GAAL,CAASo4D,WAAA,GAAcnnD,QAAA,CAASjB,KAAhC,IAAyC,IAAzD,CAFH,EAGE;IACA1Z,OAAA,CAAQkc,KAAR,CACE,oDACE,yCADF,GAEE,mEAHJ;EADA;EAQJ,MAAMhN,IAAA,GAAO,IAAI+xD,mBAAJ,CAAwBtyD,MAAxB,CAAb;EACAO,IAAA,CAAKyyD,OAAL;EACA,OAAOzyD,IAAP;AA/B+B;AAsCjC,SAAS6yD,eAATA,CAAyB;EACvB7pC,SADuB;EAEvBvd,QAFuB;EAGvBomD,QAHuB;EAIvBhC,iBAJuB;EAKvB55D,0BALuB;EAMvBihC,UAAA,GAAa,IANU;EAOvB47B,WAAA,GAAc;AAPS,CAAzB,EAQG;EACD,IAAI57B,UAAJ,EAAgB;IACd,IAAAF,iCAAA,EAAmBhO,SAAnB,EAA8B;MAAEve,QAAA,EAAUgB,QAAA,CAAShB;IAArB,CAA9B;EADc;EAIhB,IAAIqoD,WAAJ,EAAiB;IACf,MAAMp8B,GAAA,GAAMs4B,MAAA,CAAO,CAAP,EAAU/4D,0BAAV,CAAZ;IACA,MAAMuU,KAAA,GAAQiB,QAAA,CAASjB,KAAT,IAAkB5I,UAAA,CAAW6oC,gBAAX,IAA+B,CAA/B,CAAhC;IACA,MAAMhrC,MAAA,GAAS;MACbiyD,YAAA,EAAc,IADD;MAEbC,cAAA,EAAgB,IAFH;MAGb3zC,GAAA,EAAK,IAHQ;MAIbxT,KAJa;MAKb+8B,UAAA,EAAY,IALC;MAMb7Q;IANa,CAAf;IAQA,WAAW1Y,GAAX,IAAkB6zC,QAAlB,EAA4B;MAC1BpyD,MAAA,CAAO8nC,UAAP,GAAoBsoB,iBAAA,CAAkBpyD,GAAlB,CAAsBugB,GAAtB,CAApB;MACAve,MAAA,CAAOue,GAAP,GAAaA,GAAb;MACAyzC,MAAA,CAAOhyD,MAAP;IAH0B;EAXb;AALhB;;;;;;;;;;;;AC/dH,IAAA/B,KAAA,GAAAC,mBAAA;AACA,IAAAyd,OAAA,GAAAzd,mBAAA;AACA,IAAAuf,MAAA,GAAAvf,mBAAA;AACA,IAAAo1D,SAAA,GAAAp1D,mBAAA;AACA,IAAAq1D,IAAA,GAAAr1D,mBAAA;AACA,IAAAE,cAAA,GAAAF,mBAAA;AAsBA,MAAMs1D,qBAAN,CAA4B;EAC1B,CAAAC,oBAAA;EAEA,CAAAC,UAAA,GAAc,KAAd;EAEA,CAAAC,eAAA,GAAmB,IAAnB;EAEA,CAAAC,cAAA,GAAkB,KAAKC,SAAL,CAAer7C,IAAf,CAAoB,IAApB,CAAlB;EAEA,CAAAs7C,gBAAA,GAAoB,KAAK/wC,WAAL,CAAiBvK,IAAjB,CAAsB,IAAtB,CAApB;EAEA,CAAAkS,OAAA,GAAW,IAAI9sB,GAAJ,EAAX;EAEA,CAAAm2D,cAAA,GAAkB,KAAlB;EAEA,CAAAC,YAAA,GAAgB,KAAhB;EAEA,CAAAC,WAAA,GAAe,KAAf;EAEA,CAAAz1C,SAAA;EAEA,OAAO01C,YAAP,GAAsB,KAAtB;EAKAzgE,YAAYxB,OAAZ,EAAqB;IACnB,IAAI,CAACuhE,qBAAA,CAAsBU,YAA3B,EAAyC;MACvCV,qBAAA,CAAsBU,YAAtB,GAAqC,IAArC;MACAC,wBAAA,CAAeC,UAAf,CAA0BniE,OAAA,CAAQoiE,IAAlC;MACAC,cAAA,CAAUF,UAAV,CAAqBniE,OAAA,CAAQoiE,IAA7B;IAHuC;IAKzCpiE,OAAA,CAAQusB,SAAR,CAAkBiN,mBAAlB,CAAsC,CAAC0oC,wBAAD,EAAiBG,cAAjB,CAAtC;IAEA,KAAK,CAAA91C,SAAL,GAAkBvsB,OAAA,CAAQusB,SAA1B;IACA,KAAKzU,SAAL,GAAiB9X,OAAA,CAAQ8X,SAAzB;IACA,KAAKwU,GAAL,GAAWtsB,OAAA,CAAQssB,GAAnB;IACA,KAAK,CAAAk1C,oBAAL,GAA6BxhE,OAAA,CAAQwhE,oBAArC;IACA,KAAK,CAAAE,eAAL,GAAwB1hE,OAAA,CAAQ0hE,eAAhC;IACA,KAAK3nD,QAAL,GAAgB/Z,OAAA,CAAQ+Z,QAAxB;IAEA,KAAK,CAAAwS,SAAL,CAAgBqN,QAAhB,CAAyB,IAAzB;EAfmB;EAkBrB,IAAIhL,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAA6J,OAAL,CAAcxb,IAAd,KAAuB,CAA9B;EADY;EAQdkd,cAAcjE,IAAd,EAAoB;IAClB,KAAK,CAAA3J,SAAL,CAAgB4N,aAAhB,CAA8BjE,IAA9B;EADkB;EAQpB8D,WAAW9D,IAAA,GAAO,KAAK,CAAA3J,SAAL,CAAgByO,OAAhB,EAAlB,EAA6C;IAC3C,KAAK,CAAA7jB,OAAL;IACA,IAAI+e,IAAA,KAAS9kC,0BAAA,CAAqBI,GAAlC,EAAuC;MAErC,KAAK8wE,oBAAL,CAA0B,KAA1B;MACA,KAAKC,YAAL;IAHqC,CAAvC,MAIO;MACL,KAAKC,WAAL;IADK;IAGP,KAAK,CAAAj2C,SAAL,CAAgBkL,WAAhB;IAEA,IAAIvB,IAAA,KAAS9kC,0BAAA,CAAqBC,IAAlC,EAAwC;MACtC,KAAKi7B,GAAL,CAAS2F,SAAT,CAAmBwwC,MAAnB,CACE,iBADF,EAEEvsC,IAAA,KAAS9kC,0BAAA,CAAqBE,QAFhC;MAIA,KAAKg7B,GAAL,CAAS2F,SAAT,CAAmBwwC,MAAnB,CACE,YADF,EAEEvsC,IAAA,KAAS9kC,0BAAA,CAAqBI,GAFhC;MAIA,KAAK86B,GAAL,CAASo2C,MAAT,GAAkB,KAAlB;IATsC;EAXG;EAwB7CJ,qBAAqBK,YAArB,EAAmC;IACjC,IACE,CAACA,YAAD,IACA,KAAK,CAAAp2C,SAAL,CAAgByO,OAAhB,OAA8B5pC,0BAAA,CAAqBI,GAFrD,EAGE;MACA;IADA;IAIF,IAAI,CAACmxE,YAAL,EAAmB;MAGjB,WAAWj1C,MAAX,IAAqB,KAAK,CAAA+K,OAAL,CAAcva,MAAd,EAArB,EAA6C;QAC3C,IAAIwP,MAAA,CAAOkB,OAAP,EAAJ,EAAsB;UACpBlB,MAAA,CAAOO,eAAP;UACA;QAFoB;MADqB;IAH5B;IAWnB,MAAMP,MAAA,GAAS,KAAK,CAAAk1C,qBAAL,CAA4B;MAAE5pD,OAAA,EAAS,CAAX;MAAcC,OAAA,EAAS;IAAvB,CAA5B,CAAf;IACAyU,MAAA,CAAOO,eAAP;EApBiC;EA2BnCsL,gBAAgBzN,SAAhB,EAA2B;IACzB,KAAK,CAAAS,SAAL,CAAgBgN,eAAhB,CAAgCzN,SAAhC;EADyB;EAQ3BiC,YAAYhgB,MAAZ,EAAoB;IAClB,KAAK,CAAAwe,SAAL,CAAgBwB,WAAhB,CAA4BhgB,MAA5B;EADkB;EAQpB8rB,OAAA,EAAS;IACP,KAAKvN,GAAL,CAAS4B,KAAT,CAAe20C,aAAf,GAA+B,MAA/B;IACA,MAAMC,oBAAA,GAAuB,IAAI7mD,GAAJ,EAA7B;IACA,WAAWyR,MAAX,IAAqB,KAAK,CAAA+K,OAAL,CAAcva,MAAd,EAArB,EAA6C;MAC3CwP,MAAA,CAAO2E,aAAP;MACA,IAAI3E,MAAA,CAAOlB,mBAAX,EAAgC;QAC9Bs2C,oBAAA,CAAqB5mD,GAArB,CAAyBwR,MAAA,CAAOlB,mBAAhC;MAD8B;IAFW;IAO7C,IAAI,CAAC,KAAK,CAAAk1C,eAAV,EAA4B;MAC1B;IAD0B;IAI5B,MAAMqB,SAAA,GAAY,KAAK,CAAArB,eAAL,CAAsBsB,sBAAtB,EAAlB;IACA,WAAWC,QAAX,IAAuBF,SAAvB,EAAkC;MAEhCE,QAAA,CAASC,IAAT;MACA,IAAI,KAAK,CAAA32C,SAAL,CAAgBmO,0BAAhB,CAA2CuoC,QAAA,CAAS33D,IAAT,CAAc0K,EAAzD,CAAJ,EAAkE;QAChE;MADgE;MAGlE,IAAI8sD,oBAAA,CAAqBzhD,GAArB,CAAyB4hD,QAAA,CAAS33D,IAAT,CAAc0K,EAAvC,CAAJ,EAAgD;QAC9C;MAD8C;MAGhD,MAAM0X,MAAA,GAAS,KAAKqE,WAAL,CAAiBkxC,QAAjB,CAAf;MACA,IAAI,CAACv1C,MAAL,EAAa;QACX;MADW;MAGb,KAAKkN,YAAL,CAAkBlN,MAAlB;MACAA,MAAA,CAAO2E,aAAP;IAdgC;EAf3B;EAoCTyH,QAAA,EAAU;IACR,KAAK,CAAAkoC,WAAL,GAAoB,IAApB;IACA,KAAK11C,GAAL,CAAS4B,KAAT,CAAe20C,aAAf,GAA+B,MAA/B;IACA,MAAMM,mBAAA,GAAsB,IAAIlnD,GAAJ,EAA5B;IACA,WAAWyR,MAAX,IAAqB,KAAK,CAAA+K,OAAL,CAAcva,MAAd,EAArB,EAA6C;MAC3CwP,MAAA,CAAO0E,cAAP;MACA,IAAI,CAAC1E,MAAA,CAAOlB,mBAAR,IAA+BkB,MAAA,CAAOzC,SAAP,OAAuB,IAA1D,EAAgE;QAC9Dk4C,mBAAA,CAAoBjnD,GAApB,CAAwBwR,MAAA,CAAOlB,mBAA/B;QACA;MAF8D;MAIhE,KAAK42C,qBAAL,CAA2B11C,MAAA,CAAOlB,mBAAlC,GAAwD62C,IAAxD;MACA31C,MAAA,CAAOrD,MAAP;IAP2C;IAU7C,IAAI,KAAK,CAAAq3C,eAAT,EAA2B;MAEzB,MAAMqB,SAAA,GAAY,KAAK,CAAArB,eAAL,CAAsBsB,sBAAtB,EAAlB;MACA,WAAWC,QAAX,IAAuBF,SAAvB,EAAkC;QAChC,MAAM;UAAE/sD;QAAF,IAASitD,QAAA,CAAS33D,IAAxB;QACA,IACE63D,mBAAA,CAAoB9hD,GAApB,CAAwBrL,EAAxB,KACA,KAAK,CAAAuW,SAAL,CAAgBmO,0BAAhB,CAA2C1kB,EAA3C,CAFF,EAGE;UACA;QADA;QAGFitD,QAAA,CAASI,IAAT;MARgC;IAHT;IAe3B,KAAK,CAAAlsD,OAAL;IACA,IAAI,KAAKyX,OAAT,EAAkB;MAChB,KAAKtC,GAAL,CAASo2C,MAAT,GAAkB,IAAlB;IADgB;IAGlB,KAAK,CAAAV,WAAL,GAAoB,KAApB;EAjCQ;EAoCVoB,sBAAsBptD,EAAtB,EAA0B;IACxB,OAAO,KAAK,CAAA0rD,eAAL,EAAuB0B,qBAAvB,CAA6CptD,EAA7C,KAAoD,IAA3D;EADwB;EAQ1Bwc,gBAAgB9E,MAAhB,EAAwB;IACtB,MAAM41C,aAAA,GAAgB,KAAK,CAAA/2C,SAAL,CAAgB0M,SAAhB,EAAtB;IACA,IAAIqqC,aAAA,KAAkB51C,MAAtB,EAA8B;MAC5B;IAD4B;IAI9B,KAAK,CAAAnB,SAAL,CAAgBiG,eAAhB,CAAgC9E,MAAhC;EANsB;EASxB80C,YAAA,EAAc;IACZ,KAAKl2C,GAAL,CAASvM,gBAAT,CAA0B,aAA1B,EAAyC,KAAK,CAAA8hD,gBAA9C;IACA,KAAKv1C,GAAL,CAASvM,gBAAT,CAA0B,WAA1B,EAAuC,KAAK,CAAA4hD,cAA5C;EAFY;EAKdY,aAAA,EAAe;IACb,KAAKj2C,GAAL,CAAStM,mBAAT,CAA6B,aAA7B,EAA4C,KAAK,CAAA6hD,gBAAjD;IACA,KAAKv1C,GAAL,CAAStM,mBAAT,CAA6B,WAA7B,EAA0C,KAAK,CAAA2hD,cAA/C;EAFa;EAKf4B,OAAO71C,MAAP,EAAe;IACb,KAAK,CAAA+K,OAAL,CAAc/d,GAAd,CAAkBgT,MAAA,CAAO1X,EAAzB,EAA6B0X,MAA7B;IACA,MAAM;MAAElB;IAAF,IAA0BkB,MAAhC;IACA,IACElB,mBAAA,IACA,KAAK,CAAAD,SAAL,CAAgBmO,0BAAhB,CAA2ClO,mBAA3C,CAFF,EAGE;MACA,KAAK,CAAAD,SAAL,CAAgBoO,8BAAhB,CAA+CjN,MAA/C;IADA;EANW;EAWf81C,OAAO91C,MAAP,EAAe;IACb,KAAK,CAAA+K,OAAL,CAAcjd,MAAd,CAAqBkS,MAAA,CAAO1X,EAA5B;IACA,KAAK,CAAAwrD,oBAAL,EAA4BiC,wBAA5B,CAAqD/1C,MAAA,CAAO6E,UAA5D;IAEA,IAAI,CAAC,KAAK,CAAAyvC,WAAN,IAAsBt0C,MAAA,CAAOlB,mBAAjC,EAAsD;MACpD,KAAK,CAAAD,SAAL,CAAgBkO,2BAAhB,CAA4C/M,MAA5C;IADoD;EAJzC;EAafrD,OAAOqD,MAAP,EAAe;IAIb,KAAK81C,MAAL,CAAY91C,MAAZ;IACA,KAAK,CAAAnB,SAAL,CAAgBiO,YAAhB,CAA6B9M,MAA7B;IACAA,MAAA,CAAOpB,GAAP,CAAW4B,KAAX,CAAiBw1C,OAAjB,GAA2B,MAA3B;IACAhlD,UAAA,CAAW,MAAM;MAKfgP,MAAA,CAAOpB,GAAP,CAAW4B,KAAX,CAAiBw1C,OAAjB,GAA2B,EAA3B;MACAh2C,MAAA,CAAOpB,GAAP,CAAWjC,MAAX;MACAqD,MAAA,CAAOL,eAAP,GAAyB,KAAzB;MACA,IAAIld,QAAA,CAASwzD,aAAT,KAA2BxzD,QAAA,CAASmsB,IAAxC,EAA8C;QAC5C,KAAK,CAAA/P,SAAL,CAAgByL,kBAAhB;MAD4C;IAR/B,CAAjB,EAWG,CAXH;IAaA,IAAI,CAAC,KAAK,CAAA+pC,YAAV,EAAyB;MACvB,KAAKO,oBAAL,CAA+C,KAA/C;IADuB;EApBZ;EA8Bf,CAAAsB,aAAcl2C,MAAd,EAAsB;IACpB,IAAIA,MAAA,CAAOpC,MAAP,KAAkB,IAAtB,EAA4B;MAC1B;IAD0B;IAI5B,IAAIoC,MAAA,CAAOlB,mBAAX,EAAgC;MAC9B,KAAK,CAAAD,SAAL,CAAgBkO,2BAAhB,CAA4C/M,MAAA,CAAOlB,mBAAnD;MACAlC,wBAAA,CAAiBmD,uBAAjB,CAAyCC,MAAzC;MACAA,MAAA,CAAOlB,mBAAP,GAA6B,IAA7B;IAH8B;IAMhC,KAAK+2C,MAAL,CAAY71C,MAAZ;IACAA,MAAA,CAAOpC,MAAP,EAAek4C,MAAf,CAAsB91C,MAAtB;IACAA,MAAA,CAAOU,SAAP,CAAiB,IAAjB;IACA,IAAIV,MAAA,CAAOpB,GAAP,IAAcoB,MAAA,CAAOL,eAAzB,EAA0C;MACxCK,MAAA,CAAOpB,GAAP,CAAWjC,MAAX;MACA,KAAKiC,GAAL,CAAS+P,MAAT,CAAgB3O,MAAA,CAAOpB,GAAvB;IAFwC;EAdtB;EAwBtBpQ,IAAIwR,MAAJ,EAAY;IACV,KAAK,CAAAk2C,YAAL,CAAmBl2C,MAAnB;IACA,KAAK,CAAAnB,SAAL,CAAgBgO,SAAhB,CAA0B7M,MAA1B;IACA,KAAK61C,MAAL,CAAY71C,MAAZ;IAEA,IAAI,CAACA,MAAA,CAAOL,eAAZ,EAA6B;MAC3B,MAAMf,GAAA,GAAMoB,MAAA,CAAO7T,MAAP,EAAZ;MACA,KAAKyS,GAAL,CAAS+P,MAAT,CAAgB/P,GAAhB;MACAoB,MAAA,CAAOL,eAAP,GAAyB,IAAzB;IAH2B;IAM7B,KAAKw2C,eAAL,CAAqBn2C,MAArB;IACAA,MAAA,CAAO8D,SAAP;IACA,KAAK,CAAAjF,SAAL,CAAgBuB,sBAAhB,CAAuCJ,MAAvC;EAbU;EAgBZm2C,gBAAgBn2C,MAAhB,EAAwB;IACtB,KAAK,CAAA8zC,oBAAL,EAA4BsC,gBAA5B,CACE,KAAKx3C,GADP,EAEEoB,MAAA,CAAOpB,GAFT,EAGEoB,MAAA,CAAO6E,UAHT,EAIsB,IAJtB;EADsB;EAaxBqI,aAAalN,MAAb,EAAqB;IACnB,IAAIA,MAAA,CAAOkE,gBAAP,EAAJ,EAA+B;MAC7BlE,MAAA,CAAOmE,OAAP;IAD6B,CAA/B,MAEO;MACL,KAAK3V,GAAL,CAASwR,MAAT;IADK;EAHY;EAYrBG,UAAA,EAAY;IACV,OAAO,KAAK,CAAAtB,SAAL,CAAgBwG,KAAhB,EAAP;EADU;EASZ,CAAAgxC,gBAAiBh2D,MAAjB,EAAyB;IACvB,QAAQ,KAAK,CAAAwe,SAAL,CAAgByO,OAAhB,EAAR;MACE,KAAK5pC,0BAAA,CAAqBE,QAA1B;QACE,OAAO,IAAI4wE,wBAAJ,CAAmBn0D,MAAnB,CAAP;MACF,KAAK3c,0BAAA,CAAqBI,GAA1B;QACE,OAAO,IAAI6wE,cAAJ,CAAct0D,MAAd,CAAP;IAJJ;IAMA,OAAO,IAAP;EAPuB;EAezBgkB,YAAYzmB,IAAZ,EAAkB;IAChB,QAAQA,IAAA,CAAK04D,cAAL,IAAuB14D,IAAA,CAAK24D,oBAApC;MACE,KAAK7yE,0BAAA,CAAqBE,QAA1B;QACE,OAAO4wE,wBAAA,CAAenwC,WAAf,CAA2BzmB,IAA3B,EAAiC,IAAjC,EAAuC,KAAK,CAAAihB,SAA5C,CAAP;MACF,KAAKn7B,0BAAA,CAAqBI,GAA1B;QACE,OAAO6wE,cAAA,CAAUtwC,WAAV,CAAsBzmB,IAAtB,EAA4B,IAA5B,EAAkC,KAAK,CAAAihB,SAAvC,CAAP;IAJJ;IAMA,OAAO,IAAP;EAPgB;EAelB,CAAAq2C,sBAAuBhjD,KAAvB,EAA8B;IAC5B,MAAM5J,EAAA,GAAK,KAAK6X,SAAL,EAAX;IACA,MAAMH,MAAA,GAAS,KAAK,CAAAq2C,eAAL,CAAsB;MACnCz4C,MAAA,EAAQ,IAD2B;MAEnCtV,EAFmC;MAGnCmX,CAAA,EAAGvN,KAAA,CAAM5G,OAH0B;MAInCoU,CAAA,EAAGxN,KAAA,CAAM3G,OAJ0B;MAKnCsT,SAAA,EAAW,KAAK,CAAAA;IALmB,CAAtB,CAAf;IAOA,IAAImB,MAAJ,EAAY;MACV,KAAKxR,GAAL,CAASwR,MAAT;IADU;IAIZ,OAAOA,MAAP;EAb4B;EAoB9BW,YAAYX,MAAZ,EAAoB;IAClB,KAAK,CAAAnB,SAAL,CAAgB8B,WAAhB,CAA4BX,MAA5B;EADkB;EAQpByD,eAAezD,MAAf,EAAuB;IACrB,KAAK,CAAAnB,SAAL,CAAgB4E,cAAhB,CAA+BzD,MAA/B;EADqB;EAQvBoN,WAAWpN,MAAX,EAAmB;IACjB,OAAO,KAAK,CAAAnB,SAAL,CAAgBuO,UAAhB,CAA2BpN,MAA3B,CAAP;EADiB;EAQnBwE,SAASxE,MAAT,EAAiB;IACf,KAAK,CAAAnB,SAAL,CAAgB2F,QAAhB,CAAyBxE,MAAzB;EADe;EAQjBk0C,UAAUhiD,KAAV,EAAiB;IACf,MAAM;MAAEhb;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,IAAImb,KAAA,CAAMmR,MAAN,KAAiB,CAAjB,IAAuBnR,KAAA,CAAMoR,OAAN,IAAiBpsB,KAA5C,EAAoD;MAElD;IAFkD;IAKpD,IAAIgb,KAAA,CAAM0O,MAAN,KAAiB,KAAKhC,GAA1B,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAAC,KAAK,CAAAw1C,cAAV,EAA2B;MAKzB;IALyB;IAO3B,KAAK,CAAAA,cAAL,GAAuB,KAAvB;IAEA,IAAI,CAAC,KAAK,CAAAL,UAAV,EAAuB;MACrB,KAAK,CAAAA,UAAL,GAAmB,IAAnB;MACA;IAFqB;IAKvB,KAAK,CAAAmB,qBAAL,CAA4BhjD,KAA5B;EAzBe;EAgCjBkR,YAAYlR,KAAZ,EAAmB;IACjB,MAAM;MAAEhb;IAAF,IAAYN,iBAAA,CAAYG,QAA9B;IACA,IAAImb,KAAA,CAAMmR,MAAN,KAAiB,CAAjB,IAAuBnR,KAAA,CAAMoR,OAAN,IAAiBpsB,KAA5C,EAAoD;MAElD;IAFkD;IAKpD,IAAIgb,KAAA,CAAM0O,MAAN,KAAiB,KAAKhC,GAA1B,EAA+B;MAC7B;IAD6B;IAI/B,KAAK,CAAAw1C,cAAL,GAAuB,IAAvB;IAEA,MAAMp0C,MAAA,GAAS,KAAK,CAAAnB,SAAL,CAAgB0M,SAAhB,EAAf;IACA,KAAK,CAAAwoC,UAAL,GAAmB,CAAC/zC,MAAD,IAAWA,MAAA,CAAOkB,OAAP,EAA9B;EAdiB;EAqBnBs1C,KAAKtkD,KAAL,EAAY;IACV,MAAM5J,EAAA,GAAK4J,KAAA,CAAMwP,YAAN,CAAmBrY,OAAnB,CAA2B,YAA3B,CAAX;IACA,MAAM2W,MAAA,GAAS,KAAK,CAAAnB,SAAL,CAAgB+N,SAAhB,CAA0BtkB,EAA1B,CAAf;IACA,IAAI,CAAC0X,MAAL,EAAa;MACX;IADW;IAIb9N,KAAA,CAAM6O,cAAN;IACA7O,KAAA,CAAMwP,YAAN,CAAmB+0C,UAAnB,GAAgC,MAAhC;IAEA,KAAK,CAAAP,YAAL,CAAmBl2C,MAAnB;IAEA,MAAMpmB,IAAA,GAAO,KAAKglB,GAAL,CAASyC,qBAAT,EAAb;IACA,MAAMq1C,IAAA,GAAOxkD,KAAA,CAAMqP,OAAN,GAAgB3nB,IAAA,CAAK6lB,CAAlC;IACA,MAAMk3C,IAAA,GAAOzkD,KAAA,CAAMuP,OAAN,GAAgB7nB,IAAA,CAAK8lB,CAAlC;IAEAM,MAAA,CAAOmC,SAAP,CAAiBu0C,IAAA,GAAO12C,MAAA,CAAOsB,MAA/B,EAAuCq1C,IAAA,GAAO32C,MAAA,CAAOwB,MAArD;IACA,KAAK20C,eAAL,CAAqBn2C,MAArB;IACAA,MAAA,CAAOpB,GAAP,CAAW2L,KAAX;EAlBU;EAyBZqsC,SAAS1kD,KAAT,EAAgB;IACdA,KAAA,CAAM6O,cAAN;EADc;EAOhB9a,QAAA,EAAU;IACR,IAAI,KAAK,CAAA4Y,SAAL,CAAgB0M,SAAhB,IAA6B3N,MAA7B,KAAwC,IAA5C,EAAkD;MAChD,KAAK,CAAAiB,SAAL,CAAgBiG,eAAhB,CAAgC,IAAhC;IADgD;IAIlD,WAAW9E,MAAX,IAAqB,KAAK,CAAA+K,OAAL,CAAcva,MAAd,EAArB,EAA6C;MAC3C,KAAK,CAAAsjD,oBAAL,EAA4BiC,wBAA5B,CAAqD/1C,MAAA,CAAO6E,UAA5D;MACA7E,MAAA,CAAOU,SAAP,CAAiB,IAAjB;MACAV,MAAA,CAAOL,eAAP,GAAyB,KAAzB;MACAK,MAAA,CAAOpB,GAAP,CAAWjC,MAAX;IAJ2C;IAM7C,KAAKiC,GAAL,GAAW,IAAX;IACA,KAAK,CAAAmM,OAAL,CAAcna,KAAd;IACA,KAAK,CAAAiO,SAAL,CAAgBwN,WAAhB,CAA4B,IAA5B;EAbQ;EAgBV,CAAA5iB,QAAA,EAAW;IAIT,KAAK,CAAA4qD,YAAL,GAAqB,IAArB;IACA,WAAWr0C,MAAX,IAAqB,KAAK,CAAA+K,OAAL,CAAcva,MAAd,EAArB,EAA6C;MAC3C,IAAIwP,MAAA,CAAOkB,OAAP,EAAJ,EAAsB;QACpBlB,MAAA,CAAOrD,MAAP;MADoB;IADqB;IAK7C,KAAK,CAAA03C,YAAL,GAAqB,KAArB;EAVS;EAiBXloD,OAAO;IAAEE;EAAF,CAAP,EAAqB;IACnB,KAAKA,QAAL,GAAgBA,QAAhB;IACA,IAAAurB,iCAAA,EAAmB,KAAKhZ,GAAxB,EAA6BvS,QAA7B;IACA,IAAA8W,iBAAA,EAAW,IAAX,EAAiB,KAAKvE,GAAtB,EAA2B,CAAC,UAAD,EAAa,MAAb,CAA3B;IACA,WAAWoB,MAAX,IAAqB,KAAK,CAAAnB,SAAL,CAAgB8N,UAAhB,CAA2B,KAAKviB,SAAhC,CAArB,EAAiE;MAC/D,KAAKoE,GAAL,CAASwR,MAAT;IAD+D;IAGjE,KAAKsM,UAAL;EAPmB;EAcrB9O,OAAO;IAAEnR;EAAF,CAAP,EAAqB;IAInB,KAAK,CAAAwS,SAAL,CAAgBoC,cAAhB;IAEA,KAAK5U,QAAL,GAAgBA,QAAhB;IACA,IAAAurB,iCAAA,EAAmB,KAAKhZ,GAAxB,EAA6B;MAAEvT,QAAA,EAAUgB,QAAA,CAAShB;IAArB,CAA7B;IACA,KAAKihB,UAAL;EARmB;EAerB,IAAIhN,cAAJA,CAAA,EAAqB;IACnB,MAAM;MAAEN,SAAF;MAAaC;IAAb,IAA4B,KAAK5S,QAAL,CAAc0S,OAAhD;IACA,OAAO,CAACC,SAAD,EAAYC,UAAZ,CAAP;EAFmB;AAvkBK;AAnD5B58B,6BAAA,GAAAwxE,qBAAA;;;;;;;;;;;;ACkBA,IAAAv1D,KAAA,GAAAC,mBAAA;AAQA,IAAAuf,MAAA,GAAAvf,mBAAA;AACA,IAAAyd,OAAA,GAAAzd,mBAAA;AACA,IAAAs4D,iBAAA,GAAAt4D,mBAAA;AAKA,MAAMi2D,cAAN,SAA6B53C,wBAA7B,CAA8C;EAC5C,CAAAk6C,kBAAA,GAAsB,KAAKC,aAAL,CAAmBl+C,IAAnB,CAAwB,IAAxB,CAAtB;EAEA,CAAAm+C,mBAAA,GAAuB,KAAKC,cAAL,CAAoBp+C,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAAq+C,mBAAA,GAAuB,KAAKC,cAAL,CAAoBt+C,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAAu+C,qBAAA,GAAyB,KAAKC,gBAAL,CAAsBx+C,IAAtB,CAA2B,IAA3B,CAAzB;EAEA,CAAAwO,KAAA;EAEA,CAAAiwC,OAAA,GAAW,EAAX;EAEA,CAAAC,WAAA,GAAe,GAAG,KAAKjvD,EAAG,SAA1B;EAEA,CAAAs7B,QAAA;EAEA,CAAAl/B,WAAA,GAAe,IAAf;EAEA,OAAO8yD,uBAAP,GAAiC,EAAjC;EAEA,OAAOC,YAAP;EAEA,OAAOC,gBAAP,GAA0B,CAA1B;EAEA,OAAOC,aAAP,GAAuB,IAAvB;EAEA,OAAOC,gBAAP,GAA0B,EAA1B;EAEA,WAAW/tC,gBAAXA,CAAA,EAA8B;IAC5B,OAAO,IAAA72B,YAAA,EACL,IADK,EAEL,kBAFK,EAGL,IAAIqzB,sBAAJ,CAAoB,CAClB,CAIE,CAAC,QAAD,EAAW,YAAX,EAAyB,QAAzB,EAAmC,YAAnC,CAJF,EAKEmuC,cAAA,CAAezgE,SAAf,CAAyBktB,cAL3B,EAMkB,IANlB,CADkB,EASlB,CACE,CAAC,YAAD,EAAe,gBAAf,EAAiC,QAAjC,EAA2C,YAA3C,CADF,EAEEuzC,cAAA,CAAezgE,SAAf,CAAyBktB,cAF3B,CATkB,CAApB,CAHK,CAAP;EAD4B;EAqB9B,OAAOhE,KAAP,GAAe,UAAf;EAEAnpB,YAAYuM,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAaxM,IAAA,EAAM;IAAnB,CAAN;IACA,KAAK,CAAAwzB,KAAL,GACEhnB,MAAA,CAAOgnB,KAAP,IACAmtC,cAAA,CAAemD,aADf,IAEA/6C,wBAAA,CAAiBiD,iBAHnB;IAIA,KAAK,CAAA+jB,QAAL,GAAiBvjC,MAAA,CAAOujC,QAAP,IAAmB4wB,cAAA,CAAeoD,gBAAnD;EANkB;EASpB,OAAOnD,UAAPA,CAAkBC,IAAlB,EAAwB;IACtB,KAAK+C,YAAL,GAAoB,IAAIx5D,GAAJ,CAClB,CAAC,4BAAD,EAA+B,8BAA/B,EAA+D/H,GAA/D,CACEP,GAAA,IAAO,CAACA,GAAD,EAAM++D,IAAA,CAAKr2D,GAAL,CAAS1I,GAAT,CAAN,CADT,CADkB,CAApB;IAMA,MAAM6qB,KAAA,GAAQqR,gBAAA,CAAiBpvB,QAAA,CAASszB,eAA1B,CAAd;IAYA,KAAK2hC,gBAAL,GAAwB50C,UAAA,CACtBtC,KAAA,CAAMsR,gBAAN,CAAuB,oBAAvB,CADsB,CAAxB;EAnBsB;EAwBxB,OAAOpF,mBAAPA,CAA2BtU,IAA3B,EAAiCjlB,KAAjC,EAAwC;IACtC,QAAQilB,IAAR;MACE,KAAKr0B,gCAAA,CAA2BC,aAAhC;QACEwwE,cAAA,CAAeoD,gBAAf,GAAkCzkE,KAAlC;QACA;MACF,KAAKpP,gCAAA,CAA2BE,cAAhC;QACEuwE,cAAA,CAAemD,aAAf,GAA+BxkE,KAA/B;QACA;IANJ;EADsC;EAYxCsxB,aAAarM,IAAb,EAAmBjlB,KAAnB,EAA0B;IACxB,QAAQilB,IAAR;MACE,KAAKr0B,gCAAA,CAA2BC,aAAhC;QACE,KAAK,CAAA6zE,cAAL,CAAqB1kE,KAArB;QACA;MACF,KAAKpP,gCAAA,CAA2BE,cAAhC;QACE,KAAK,CAAA6zE,WAAL,CAAkB3kE,KAAlB;QACA;IANJ;EADwB;EAW1B,WAAW84B,yBAAXA,CAAA,EAAuC;IACrC,OAAO,CACL,CACEloC,gCAAA,CAA2BC,aAD7B,EAEEwwE,cAAA,CAAeoD,gBAFjB,CADK,EAKL,CACE7zE,gCAAA,CAA2BE,cAD7B,EAEEuwE,cAAA,CAAemD,aAAf,IAAgC/6C,wBAAA,CAAiBiD,iBAFnD,CALK,CAAP;EADqC;EAavC,IAAI+E,kBAAJA,CAAA,EAAyB;IACvB,OAAO,CACL,CAAC7gC,gCAAA,CAA2BC,aAA5B,EAA2C,KAAK,CAAA4/C,QAAhD,CADK,EAEL,CAAC7/C,gCAAA,CAA2BE,cAA5B,EAA4C,KAAK,CAAAojC,KAAjD,CAFK,CAAP;EADuB;EAWzB,CAAAwwC,eAAgBj0B,QAAhB,EAA0B;IACxB,MAAMm0B,WAAA,GAAcxoD,IAAA,IAAQ;MAC1B,KAAKyoD,SAAL,CAAex3C,KAAf,CAAqBojB,QAArB,GAAiC,QAAOr0B,IAAK,2BAA7C;MACA,KAAK4S,SAAL,CAAe,CAAf,EAAkB,EAAE5S,IAAA,GAAO,KAAK,CAAAq0B,QAAZ,CAAF,GAA2B,KAAKvhB,WAAlD;MACA,KAAK,CAAAuhB,QAAL,GAAiBr0B,IAAjB;MACA,KAAK,CAAA0oD,mBAAL;IAJ0B,CAA5B;IAMA,MAAMC,aAAA,GAAgB,KAAK,CAAAt0B,QAA3B;IACA,KAAKvjB,WAAL,CAAiB;MACfsF,GAAA,EAAKA,CAAA,KAAM;QACToyC,WAAA,CAAYn0B,QAAZ;MADS,CADI;MAIfhe,IAAA,EAAMA,CAAA,KAAM;QACVmyC,WAAA,CAAYG,aAAZ;MADU,CAJG;MAOfryC,QAAA,EAAU,IAPK;MAQfzN,IAAA,EAAMr0B,gCAAA,CAA2BC,aARlB;MASf8hC,mBAAA,EAAqB,IATN;MAUfC,QAAA,EAAU;IAVK,CAAjB;EARwB;EA0B1B,CAAA+xC,YAAazwC,KAAb,EAAoB;IAClB,MAAM8wC,UAAA,GAAa,KAAK,CAAA9wC,KAAxB;IACA,KAAKhH,WAAL,CAAiB;MACfsF,GAAA,EAAKA,CAAA,KAAM;QACT,KAAK,CAAA0B,KAAL,GAAc,KAAK2wC,SAAL,CAAex3C,KAAf,CAAqB6G,KAArB,GAA6BA,KAA3C;MADS,CADI;MAIfzB,IAAA,EAAMA,CAAA,KAAM;QACV,KAAK,CAAAyB,KAAL,GAAc,KAAK2wC,SAAL,CAAex3C,KAAf,CAAqB6G,KAArB,GAA6B8wC,UAA3C;MADU,CAJG;MAOftyC,QAAA,EAAU,IAPK;MAQfzN,IAAA,EAAMr0B,gCAAA,CAA2BE,cARlB;MASf6hC,mBAAA,EAAqB,IATN;MAUfC,QAAA,EAAU;IAVK,CAAjB;EAFkB;EAiBpBhD,sBAAA,EAAwB;IAEtB,MAAM3X,KAAA,GAAQ,KAAKiX,WAAnB;IACA,OAAO,CACL,CAACmyC,cAAA,CAAekD,gBAAhB,GAAmCtsD,KAD9B,EAEL,EAAEopD,cAAA,CAAekD,gBAAf,GAAkC,KAAK,CAAA9zB,QAAvC,CAAF,GAAsDx4B,KAFjD,CAAP;EAHsB;EAUxB+Y,QAAA,EAAU;IACR,MAAMA,OAAN;IACA,IAAI,KAAKvF,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,CAAC,KAAKe,eAAV,EAA2B;MAGzB,KAAK/B,MAAL,CAAYpP,GAAZ,CAAgB,IAAhB;IAHyB;EANnB;EAcVuV,eAAA,EAAiB;IACf,IAAI,KAAK1F,YAAL,EAAJ,EAAyB;MACvB;IADuB;IAIzB,KAAKT,MAAL,CAAYiO,eAAZ,CAA4B,KAA5B;IACA,KAAKjO,MAAL,CAAY6O,aAAZ,CAA0B/oC,0BAAA,CAAqBE,QAA/C;IACA,MAAMmgC,cAAN;IACA,KAAKq0C,UAAL,CAAgB7zC,SAAhB,CAA0B5H,MAA1B,CAAiC,SAAjC;IACA,KAAKq7C,SAAL,CAAeK,eAAf,GAAiC,IAAjC;IACA,KAAKz5C,GAAL,CAAS05C,SAAT,GAAqB,KAArB;IACA,KAAK15C,GAAL,CAAS25C,eAAT,CAAyB,uBAAzB;IACA,KAAKP,SAAL,CAAe3lD,gBAAf,CAAgC,SAAhC,EAA2C,KAAK,CAAA+kD,qBAAhD;IACA,KAAKY,SAAL,CAAe3lD,gBAAf,CAAgC,OAAhC,EAAyC,KAAK,CAAA2kD,mBAA9C;IACA,KAAKgB,SAAL,CAAe3lD,gBAAf,CAAgC,MAAhC,EAAwC,KAAK,CAAAykD,kBAA7C;IACA,KAAKkB,SAAL,CAAe3lD,gBAAf,CAAgC,OAAhC,EAAyC,KAAK,CAAA6kD,mBAA9C;EAfe;EAmBjBlzC,gBAAA,EAAkB;IAChB,IAAI,CAAC,KAAK3F,YAAL,EAAL,EAA0B;MACxB;IADwB;IAI1B,KAAKT,MAAL,CAAYiO,eAAZ,CAA4B,IAA5B;IACA,MAAM7H,eAAN;IACA,KAAKo0C,UAAL,CAAgB7zC,SAAhB,CAA0B/V,GAA1B,CAA8B,SAA9B;IACA,KAAKwpD,SAAL,CAAeK,eAAf,GAAiC,KAAjC;IACA,KAAKz5C,GAAL,CAASqE,YAAT,CAAsB,uBAAtB,EAA+C,KAAK,CAAAs0C,WAApD;IACA,KAAK34C,GAAL,CAAS05C,SAAT,GAAqB,IAArB;IACA,KAAKN,SAAL,CAAe1lD,mBAAf,CAAmC,SAAnC,EAA8C,KAAK,CAAA8kD,qBAAnD;IACA,KAAKY,SAAL,CAAe1lD,mBAAf,CAAmC,OAAnC,EAA4C,KAAK,CAAA0kD,mBAAjD;IACA,KAAKgB,SAAL,CAAe1lD,mBAAf,CAAmC,MAAnC,EAA2C,KAAK,CAAAwkD,kBAAhD;IACA,KAAKkB,SAAL,CAAe1lD,mBAAf,CAAmC,OAAnC,EAA4C,KAAK,CAAA4kD,mBAAjD;IAIA,KAAKt4C,GAAL,CAAS2L,KAAT,CAAe;MACbiuC,aAAA,EAAe;IADF,CAAf;IAKA,KAAKp6C,SAAL,GAAiB,KAAjB;IACA,KAAKR,MAAL,CAAYgB,GAAZ,CAAgB2F,SAAhB,CAA0B/V,GAA1B,CAA8B,iBAA9B;EAxBgB;EA4BlBwP,QAAQ9L,KAAR,EAAe;IACb,MAAM8L,OAAN,CAAc9L,KAAd;IACA,IAAIA,KAAA,CAAM0O,MAAN,KAAiB,KAAKo3C,SAA1B,EAAqC;MACnC,KAAKA,SAAL,CAAeztC,KAAf;IADmC;EAFxB;EAQfzG,UAAA,EAAY;IACV,IAAI,KAAK5K,KAAT,EAAgB;MACd,KAAK,CAAAu/C,gBAAL;MAEA;IAHc;IAKhB,KAAK10C,cAAL;IACA,KAAKi0C,SAAL,CAAeztC,KAAf;EAPU;EAWZrJ,QAAA,EAAU;IACR,OAAO,CAAC,KAAK82C,SAAN,IAAmB,KAAKA,SAAL,CAAeU,SAAf,CAAyBpkC,IAAzB,OAAoC,EAA9D;EADQ;EAKV3X,OAAA,EAAS;IACP,KAAKyB,SAAL,GAAiB,KAAjB;IACA,KAAKR,MAAL,CAAYiO,eAAZ,CAA4B,IAA5B;IACA,KAAKjO,MAAL,CAAYgB,GAAZ,CAAgB2F,SAAhB,CAA0B/V,GAA1B,CAA8B,iBAA9B;IACA,MAAMmO,MAAN;EAJO;EAWT,CAAAg8C,YAAA,EAAe;IACb,MAAMC,IAAA,GAAO,KAAKZ,SAAL,CAAej+B,oBAAf,CAAoC,KAApC,CAAb;IACA,IAAI6+B,IAAA,CAAKjmE,MAAL,KAAgB,CAApB,EAAuB;MACrB,OAAO,KAAKqlE,SAAL,CAAeU,SAAtB;IADqB;IAGvB,MAAMjiE,MAAA,GAAS,EAAf;IACA,WAAWmoB,GAAX,IAAkBg6C,IAAlB,EAAwB;MACtBniE,MAAA,CAAOjB,IAAP,CAAYopB,GAAA,CAAI85C,SAAJ,CAAc3lD,OAAd,CAAsB,UAAtB,EAAkC,EAAlC,CAAZ;IADsB;IAGxB,OAAOtc,MAAA,CAAOhB,IAAP,CAAY,IAAZ,CAAP;EATa;EAYf,CAAAwiE,oBAAA,EAAuB;IACrB,MAAM,CAACz1C,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;IAEA,IAAI5lB,IAAJ;IACA,IAAI,KAAK+lB,eAAT,EAA0B;MACxB/lB,IAAA,GAAO,KAAKglB,GAAL,CAASyC,qBAAT,EAAP;IADwB,CAA1B,MAEO;MAGL,MAAM;QAAEf,YAAF;QAAgB1B;MAAhB,IAAwB,IAA9B;MACA,MAAMi6C,YAAA,GAAej6C,GAAA,CAAI4B,KAAJ,CAAUw1C,OAA/B;MACAp3C,GAAA,CAAI4B,KAAJ,CAAUw1C,OAAV,GAAoB,QAApB;MACA11C,YAAA,CAAa1B,GAAb,CAAiB+P,MAAjB,CAAwB,KAAK/P,GAA7B;MACAhlB,IAAA,GAAOglB,GAAA,CAAIyC,qBAAJ,EAAP;MACAzC,GAAA,CAAIjC,MAAJ;MACAiC,GAAA,CAAI4B,KAAJ,CAAUw1C,OAAV,GAAoB6C,YAApB;IATK;IAYP,KAAK3/C,KAAL,GAAatf,IAAA,CAAKsf,KAAL,GAAasJ,WAA1B;IACA,KAAKrJ,MAAL,GAAcvf,IAAA,CAAKuf,MAAL,GAAcsJ,YAA5B;EAnBqB;EA0BvBtB,OAAA,EAAS;IACP,IAAI,CAAC,KAAK9C,YAAL,EAAL,EAA0B;MACxB;IADwB;IAI1B,MAAM8C,MAAN;IACA,KAAK6C,eAAL;IACA,MAAM80C,SAAA,GAAY,KAAK,CAAAxB,OAAvB;IACA,MAAMyB,OAAA,GAAW,KAAK,CAAAzB,OAAL,GAAgB,KAAK,CAAAqB,WAAL,GAAoBK,OAApB,EAAjC;IACA,IAAIF,SAAA,KAAcC,OAAlB,EAA2B;MACzB;IADyB;IAI3B,MAAME,OAAA,GAAUzmC,IAAA,IAAQ;MACtB,KAAK,CAAA8kC,OAAL,GAAgB9kC,IAAhB;MACA,IAAI,CAACA,IAAL,EAAW;QACT,KAAK7V,MAAL;QACA;MAFS;MAIX,KAAK,CAAAu8C,UAAL;MACA,KAAK/0C,OAAL;MACA,KAAK,CAAA8zC,mBAAL;IARsB,CAAxB;IAUA,KAAK53C,WAAL,CAAiB;MACfsF,GAAA,EAAKA,CAAA,KAAM;QACTszC,OAAA,CAAQF,OAAR;MADS,CADI;MAIfnzC,IAAA,EAAMA,CAAA,KAAM;QACVqzC,OAAA,CAAQH,SAAR;MADU,CAJG;MAOfjzC,QAAA,EAAU;IAPK,CAAjB;IASA,KAAK,CAAAoyC,mBAAL;EAhCO;EAoCTh0C,wBAAA,EAA0B;IACxB,OAAO,KAAK5F,YAAL,EAAP;EADwB;EAQ1B86C,SAASjnD,KAAT,EAAgB;IACd,KAAK6R,cAAL;IACA,KAAKi0C,SAAL,CAAeztC,KAAf;EAFc;EAShBtB,QAAQ/W,KAAR,EAAe;IACb,IAAIA,KAAA,CAAM0O,MAAN,KAAiB,KAAKhC,GAAtB,IAA6B1M,KAAA,CAAM9b,GAAN,KAAc,OAA/C,EAAwD;MACtD,KAAK2tB,cAAL;MACA,KAAKi0C,SAAL,CAAeztC,KAAf;IAFsD;EAD3C;EAOf8sC,iBAAiBnlD,KAAjB,EAAwB;IACtBsiD,cAAA,CAAe3qC,gBAAf,CAAgChD,IAAhC,CAAqC,IAArC,EAA2C3U,KAA3C;EADsB;EAIxB+kD,eAAe/kD,KAAf,EAAsB;IACpB,KAAKkM,SAAL,GAAiB,IAAjB;EADoB;EAItB24C,cAAc7kD,KAAd,EAAqB;IACnB,KAAKkM,SAAL,GAAiB,KAAjB;EADmB;EAIrB+4C,eAAejlD,KAAf,EAAsB;IACpB,KAAK0L,MAAL,CAAYgB,GAAZ,CAAgB2F,SAAhB,CAA0BwwC,MAA1B,CAAiC,iBAAjC,EAAoD,KAAK7zC,OAAL,EAApD;EADoB;EAKtBwD,eAAA,EAAiB;IACf,KAAKszC,SAAL,CAAe/0C,YAAf,CAA4B,MAA5B,EAAoC,SAApC;IACA,KAAK+0C,SAAL,CAAeO,eAAf,CAA+B,gBAA/B;EAFe;EAMjB5zC,cAAA,EAAgB;IACd,KAAKqzC,SAAL,CAAe/0C,YAAf,CAA4B,MAA5B,EAAoC,SAApC;IACA,KAAK+0C,SAAL,CAAe/0C,YAAf,CAA4B,gBAA5B,EAA8C,IAA9C;EAFc;EAMhB9W,OAAA,EAAS;IACP,IAAI,KAAKyS,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIw6C,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKngD,KAAT,EAAgB;MACdkgD,KAAA,GAAQ,KAAK35C,CAAb;MACA45C,KAAA,GAAQ,KAAK35C,CAAb;IAFc;IAKhB,MAAMvT,MAAN;IACA,KAAK6rD,SAAL,GAAiBv1D,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAjB;IACA,KAAKg1C,SAAL,CAAe90C,SAAf,GAA2B,UAA3B;IAEA,KAAK80C,SAAL,CAAe/0C,YAAf,CAA4B,IAA5B,EAAkC,KAAK,CAAAs0C,WAAvC;IACA,KAAK5yC,aAAL;IAEA6vC,cAAA,CAAeiD,YAAf,CACGp5D,GADH,CACO,8BADP,EAEG8F,IAFH,CAEQ1S,GAAA,IAAO,KAAKumE,SAAL,EAAgB/0C,YAAhB,CAA6B,YAA7B,EAA2CxxB,GAA3C,CAFf;IAIA+iE,cAAA,CAAeiD,YAAf,CACGp5D,GADH,CACO,4BADP,EAEG8F,IAFH,CAEQ1S,GAAA,IAAO,KAAKumE,SAAL,EAAgB/0C,YAAhB,CAA6B,iBAA7B,EAAgDxxB,GAAhD,CAFf;IAGA,KAAKumE,SAAL,CAAeK,eAAf,GAAiC,IAAjC;IAEA,MAAM;MAAE73C;IAAF,IAAY,KAAKw3C,SAAvB;IACAx3C,KAAA,CAAMojB,QAAN,GAAkB,QAAO,KAAK,CAAAA,QAAU,2BAAxC;IACApjB,KAAA,CAAM6G,KAAN,GAAc,KAAK,CAAAA,KAAnB;IAEA,KAAKzI,GAAL,CAAS+P,MAAT,CAAgB,KAAKqpC,SAArB;IAEA,KAAKI,UAAL,GAAkB31D,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAlB;IACA,KAAKo1C,UAAL,CAAgB7zC,SAAhB,CAA0B/V,GAA1B,CAA8B,SAA9B,EAAyC,SAAzC;IACA,KAAKoQ,GAAL,CAAS+P,MAAT,CAAgB,KAAKypC,UAArB;IAKA,IAAAj1C,iBAAA,EAAW,IAAX,EAAiB,KAAKvE,GAAtB,EAA2B,CAAC,UAAD,EAAa,SAAb,CAA3B;IAEA,IAAI,KAAK1F,KAAT,EAAgB;MAEd,MAAM,CAACsJ,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;MACA,IAAI,KAAKV,mBAAT,EAA8B;QAC5B,MAAM,CAACgD,EAAD,IAAO,KAAKiB,qBAAL,EAAb;QACA,KAAKlB,KAAL,CAAWu3C,KAAA,GAAQ52C,WAAnB,EAAgC62C,KAAA,GAAQ52C,YAAxC,EAAsDX,EAAtD,EAA0DA,EAA1D;MAF4B,CAA9B,MAGO;QACL,KAAKD,KAAL,CACEu3C,KAAA,GAAQ52C,WADV,EAEE62C,KAAA,GAAQ52C,YAFV,EAGE,KAAKvJ,KAAL,GAAasJ,WAHf,EAIE,KAAKrJ,MAAL,GAAcsJ,YAJhB;MADK;MASP,KAAK,CAAAy2C,UAAL;MACA,KAAKt6C,GAAL,CAAS05C,SAAT,GAAqB,IAArB;MACA,KAAKN,SAAL,CAAeK,eAAf,GAAiC,KAAjC;IAjBc,CAAhB,MAkBO;MACL,KAAKz5C,GAAL,CAAS05C,SAAT,GAAqB,KAArB;MACA,KAAKN,SAAL,CAAeK,eAAf,GAAiC,IAAjC;IAFK;IAKP,OAAO,KAAKz5C,GAAZ;EAjEO;EAoET,CAAAs6C,WAAA,EAAc;IACZ,KAAKlB,SAAL,CAAesB,eAAf;IACA,IAAI,CAAC,KAAK,CAAAhC,OAAV,EAAoB;MAClB;IADkB;IAGpB,WAAWiC,IAAX,IAAmB,KAAK,CAAAjC,OAAL,CAAc5wC,KAAd,CAAoB,IAApB,CAAnB,EAA8C;MAC5C,MAAM9H,GAAA,GAAMnc,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAZ;MACApE,GAAA,CAAI+P,MAAJ,CACE4qC,IAAA,GAAO92D,QAAA,CAAS+2D,cAAT,CAAwBD,IAAxB,CAAP,GAAuC92D,QAAA,CAASugB,aAAT,CAAuB,IAAvB,CADzC;MAGA,KAAKg1C,SAAL,CAAerpC,MAAf,CAAsB/P,GAAtB;IAL4C;EALlC;EAcd,IAAIiG,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKmzC,SAAZ;EADe;EAKjB,OAAO3zC,WAAPA,CAAmBzmB,IAAnB,EAAyBggB,MAAzB,EAAiCiB,SAAjC,EAA4C;IAC1C,IAAIna,WAAA,GAAc,IAAlB;IACA,IAAI9G,IAAA,YAAgB67D,2CAApB,EAA+C;MAC7C,MAAM;QACJ77D,IAAA,EAAM;UACJ87D,qBAAA,EAAuB;YAAE91B,QAAF;YAAY+1B;UAAZ,CADnB;UAEJ//D,IAFI;UAGJyR,QAHI;UAIJ/C;QAJI,CADF;QAOJkH,WAPI;QAQJoO,MAAA,EAAQ;UACNnH,IAAA,EAAM;YAAExO;UAAF;QADA;MARJ,IAWFrK,IAXJ;MAcA,IAAI,CAAC4R,WAAD,IAAgBA,WAAA,CAAY7c,MAAZ,KAAuB,CAA3C,EAA8C;QAE5C,OAAO,IAAP;MAF4C;MAI9C+R,WAAA,GAAc9G,IAAA,GAAO;QACnB04D,cAAA,EAAgB5yE,0BAAA,CAAqBE,QADlB;QAEnByjC,KAAA,EAAOhwB,KAAA,CAAMuiE,IAAN,CAAWD,SAAX,CAFY;QAGnB/1B,QAHmB;QAInBzwC,KAAA,EAAOqc,WAAA,CAAY/Z,IAAZ,CAAiB,IAAjB,CAJY;QAKnB2U,SAAA,EAAWnC,UAAA,GAAa,CALL;QAMnBrO,IANmB;QAOnByR,QAPmB;QAQnB/C,EARmB;QASnBsX,OAAA,EAAS;MATU,CAArB;IAnB6C;IA+B/C,MAAMI,MAAA,GAAS,MAAMqE,WAAN,CAAkBzmB,IAAlB,EAAwBggB,MAAxB,EAAgCiB,SAAhC,CAAf;IAEAmB,MAAA,CAAO,CAAA4jB,QAAP,GAAmBhmC,IAAA,CAAKgmC,QAAxB;IACA5jB,MAAA,CAAO,CAAAqH,KAAP,GAAgB5vB,UAAA,CAAKC,YAAL,CAAkB,GAAGkG,IAAA,CAAKypB,KAA1B,CAAhB;IACArH,MAAA,CAAO,CAAAs3C,OAAP,GAAkB15D,IAAA,CAAKzK,KAAvB;IACA6sB,MAAA,CAAOlB,mBAAP,GAA6BlhB,IAAA,CAAK0K,EAAL,IAAW,IAAxC;IACA0X,MAAA,CAAO,CAAAtb,WAAP,GAAsBA,WAAtB;IAEA,OAAOsb,MAAP;EAzC0C;EA6C5CzC,UAAUs8C,YAAA,GAAe,KAAzB,EAAgC;IAC9B,IAAI,KAAK34C,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,IAAI,KAAKtB,OAAT,EAAkB;MAChB,OAAO;QACLxV,SAAA,EAAW,KAAKA,SADX;QAEL9B,EAAA,EAAI,KAAKwW,mBAFJ;QAGLc,OAAA,EAAS;MAHJ,CAAP;IADgB;IAQlB,MAAMk6C,OAAA,GAAUtF,cAAA,CAAekD,gBAAf,GAAkC,KAAKr1C,WAAvD;IACA,MAAMzoB,IAAA,GAAO,KAAK8pB,OAAL,CAAao2C,OAAb,EAAsBA,OAAtB,CAAb;IACA,MAAMzyC,KAAA,GAAQzK,wBAAA,CAAiB6B,aAAjB,CAA+B2I,OAA/B,CACZ,KAAKzH,eAAL,GACIkS,gBAAA,CAAiB,KAAKmmC,SAAtB,EAAiC3wC,KADrC,GAEI,KAAK,CAAAA,KAHG,CAAd;IAMA,MAAM/J,UAAA,GAAa;MACjBg5C,cAAA,EAAgB5yE,0BAAA,CAAqBE,QADpB;MAEjByjC,KAFiB;MAGjBuc,QAAA,EAAU,KAAK,CAAAA,QAHE;MAIjBzwC,KAAA,EAAO,KAAK,CAAAmkE,OAJK;MAKjBltD,SAAA,EAAW,KAAKA,SALC;MAMjBxQ,IANiB;MAOjByR,QAAA,EAAU,KAAKA;IAPE,CAAnB;IAUA,IAAIwuD,YAAJ,EAAkB;MAGhB,OAAOv8C,UAAP;IAHgB;IAMlB,IAAI,KAAKwB,mBAAL,IAA4B,CAAC,KAAK,CAAAi7C,iBAAL,CAAwBz8C,UAAxB,CAAjC,EAAsE;MACpE,OAAO,IAAP;IADoE;IAItEA,UAAA,CAAWhV,EAAX,GAAgB,KAAKwW,mBAArB;IAEA,OAAOxB,UAAP;EA3C8B;EA8ChC,CAAAy8C,kBAAmBz8C,UAAnB,EAA+B;IAC7B,MAAM;MAAEnqB,KAAF;MAASywC,QAAT;MAAmBvc,KAAnB;MAA0BztB,IAA1B;MAAgCwQ;IAAhC,IAA8C,KAAK,CAAA1F,WAAzD;IAEA,OACE4Y,UAAA,CAAWnqB,KAAX,KAAqBA,KAArB,IACAmqB,UAAA,CAAWsmB,QAAX,KAAwBA,QADxB,IAEAtmB,UAAA,CAAW1jB,IAAX,CAAgB8xB,IAAhB,CAAqB,CAACjM,CAAD,EAAIvqB,CAAJ,KAAUE,IAAA,CAAKgG,GAAL,CAASqkB,CAAA,GAAI7lB,IAAA,CAAK1E,CAAL,CAAb,KAAyB,CAAxD,CAFA,IAGAooB,UAAA,CAAW+J,KAAX,CAAiBqE,IAAjB,CAAsB,CAACryB,CAAD,EAAInE,CAAJ,KAAUmE,CAAA,KAAMguB,KAAA,CAAMnyB,CAAN,CAAtC,CAHA,IAIAooB,UAAA,CAAWlT,SAAX,KAAyBA,SAL3B;EAH6B;EAY/B,CAAAquD,iBAAkB1nD,OAAA,GAAU,KAA5B,EAAmC;IAKjC,IAAI,CAAC,KAAK+N,mBAAV,EAA+B;MAC7B;IAD6B;IAI/B,KAAK,CAAAm5C,mBAAL;IACA,IAAI,CAAClnD,OAAD,KAAa,KAAKmI,KAAL,KAAe,CAAf,IAAoB,KAAKC,MAAL,KAAgB,CAApC,CAAjB,EAAyD;MACvDnI,UAAA,CAAW,MAAM,KAAK,CAAAynD,gBAAL,CAAuC,IAAvC,CAAjB,EAA+D,CAA/D;MACA;IAFuD;IAKzD,MAAMqB,OAAA,GAAUtF,cAAA,CAAekD,gBAAf,GAAkC,KAAKr1C,WAAvD;IACA,KAAK,CAAA3d,WAAL,CAAkB9K,IAAlB,GAAyB,KAAK8pB,OAAL,CAAao2C,OAAb,EAAsBA,OAAtB,CAAzB;EAhBiC;AAtlBS;AAjC9Cz3E,sBAAA,GAAAmyE,cAAA;;;;;;;;;;;;ACoBA,IAAAl2D,KAAA,GAAAC,mBAAA;AAYA,IAAAE,cAAA,GAAAF,mBAAA;AAOA,IAAAC,mBAAA,GAAAD,mBAAA;AACA,IAAAy7D,gBAAA,GAAAz7D,mBAAA;AACA,IAAA07D,UAAA,GAAA17D,mBAAA;AAEA,MAAM27D,iBAAA,GAAoB,IAA1B;AACA,MAAMzK,iBAAA,GAAoB,CAA1B;AACA,MAAM0K,oBAAA,GAAuB,IAAI//C,OAAJ,EAA7B;AAEA,SAASggD,WAATA,CAAqBxgE,IAArB,EAA2B;EACzB,OAAO;IACLsf,KAAA,EAAOtf,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CADZ;IAELuf,MAAA,EAAQvf,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL;EAFb,CAAP;AADyB;AAuB3B,MAAMygE,wBAAN,CAA+B;EAK7B,OAAOlkE,MAAPA,CAAcwoB,UAAd,EAA0B;IACxB,MAAMorB,OAAA,GAAUprB,UAAA,CAAW/gB,IAAX,CAAgB04D,cAAhC;IAEA,QAAQvsB,OAAR;MACE,KAAKlkD,oBAAA,CAAeE,IAApB;QACE,OAAO,IAAIu0E,qBAAJ,CAA0B37C,UAA1B,CAAP;MAEF,KAAK94B,oBAAA,CAAeC,IAApB;QACE,OAAO,IAAIy0E,qBAAJ,CAA0B57C,UAA1B,CAAP;MAEF,KAAK94B,oBAAA,CAAeiB,MAApB;QACE,MAAM0zE,SAAA,GAAY77C,UAAA,CAAW/gB,IAAX,CAAgB48D,SAAlC;QAEA,QAAQA,SAAR;UACE,KAAK,IAAL;YACE,OAAO,IAAIC,2BAAJ,CAAgC97C,UAAhC,CAAP;UACF,KAAK,KAAL;YACE,IAAIA,UAAA,CAAW/gB,IAAX,CAAgB88D,WAApB,EAAiC;cAC/B,OAAO,IAAIC,kCAAJ,CAAuCh8C,UAAvC,CAAP;YAD+B,CAAjC,MAEO,IAAIA,UAAA,CAAW/gB,IAAX,CAAgBg9D,QAApB,EAA8B;cACnC,OAAO,IAAIC,+BAAJ,CAAoCl8C,UAApC,CAAP;YADmC;YAGrC,OAAO,IAAIm8C,iCAAJ,CAAsCn8C,UAAtC,CAAP;UACF,KAAK,IAAL;YACE,OAAO,IAAIo8C,6BAAJ,CAAkCp8C,UAAlC,CAAP;UACF,KAAK,KAAL;YACE,OAAO,IAAIq8C,gCAAJ,CAAqCr8C,UAArC,CAAP;QAbJ;QAeA,OAAO,IAAIs8C,uBAAJ,CAA4Bt8C,UAA5B,CAAP;MAEF,KAAK94B,oBAAA,CAAea,KAApB;QACE,OAAO,IAAIw0E,sBAAJ,CAA2Bv8C,UAA3B,CAAP;MAEF,KAAK94B,oBAAA,CAAejC,QAApB;QACE,OAAO,IAAI61E,yBAAJ,CAA8B96C,UAA9B,CAAP;MAEF,KAAK94B,oBAAA,CAAeG,IAApB;QACE,OAAO,IAAIm1E,qBAAJ,CAA0Bx8C,UAA1B,CAAP;MAEF,KAAK94B,oBAAA,CAAeI,MAApB;QACE,OAAO,IAAIm1E,uBAAJ,CAA4Bz8C,UAA5B,CAAP;MAEF,KAAK94B,oBAAA,CAAeK,MAApB;QACE,OAAO,IAAIm1E,uBAAJ,CAA4B18C,UAA5B,CAAP;MAEF,KAAK94B,oBAAA,CAAeO,QAApB;QACE,OAAO,IAAIk1E,yBAAJ,CAA8B38C,UAA9B,CAAP;MAEF,KAAK94B,oBAAA,CAAeY,KAApB;QACE,OAAO,IAAI80E,sBAAJ,CAA2B58C,UAA3B,CAAP;MAEF,KAAK94B,oBAAA,CAAe/B,GAApB;QACE,OAAO,IAAI03E,oBAAJ,CAAyB78C,UAAzB,CAAP;MAEF,KAAK94B,oBAAA,CAAeM,OAApB;QACE,OAAO,IAAIs1E,wBAAJ,CAA6B98C,UAA7B,CAAP;MAEF,KAAK94B,oBAAA,CAAeQ,SAApB;QACE,OAAO,IAAIq1E,0BAAJ,CAA+B/8C,UAA/B,CAAP;MAEF,KAAK94B,oBAAA,CAAeS,SAApB;QACE,OAAO,IAAIq1E,0BAAJ,CAA+Bh9C,UAA/B,CAAP;MAEF,KAAK94B,oBAAA,CAAeU,QAApB;QACE,OAAO,IAAIq1E,yBAAJ,CAA8Bj9C,UAA9B,CAAP;MAEF,KAAK94B,oBAAA,CAAeW,SAApB;QACE,OAAO,IAAIq1E,0BAAJ,CAA+Bl9C,UAA/B,CAAP;MAEF,KAAK94B,oBAAA,CAAehC,KAApB;QACE,OAAO,IAAIi4E,sBAAJ,CAA2Bn9C,UAA3B,CAAP;MAEF,KAAK94B,oBAAA,CAAec,cAApB;QACE,OAAO,IAAIo1E,+BAAJ,CAAoCp9C,UAApC,CAAP;MAEF;QACE,OAAO,IAAIq9C,iBAAJ,CAAsBr9C,UAAtB,CAAP;IAzEJ;EAHwB;AALG;AAsF/B,MAAMq9C,iBAAN,CAAwB;EACtBloE,YACE6qB,UADF,EAEE;IACEs9C,YAAA,GAAe,KADjB;IAEEC,YAAA,GAAe,KAFjB;IAGEC,oBAAA,GAAuB;EAHzB,IAII,EANN,EAOE;IACA,KAAKF,YAAL,GAAoBA,YAApB;IACA,KAAKr+D,IAAL,GAAY+gB,UAAA,CAAW/gB,IAAvB;IACA,KAAKysB,KAAL,GAAa1L,UAAA,CAAW0L,KAAxB;IACA,KAAK+xC,WAAL,GAAmBz9C,UAAA,CAAWy9C,WAA9B;IACA,KAAKC,eAAL,GAAuB19C,UAAA,CAAW09C,eAAlC;IACA,KAAKC,kBAAL,GAA0B39C,UAAA,CAAW29C,kBAArC;IACA,KAAKC,WAAL,GAAmB59C,UAAA,CAAW49C,WAA9B;IACA,KAAKC,UAAL,GAAkB79C,UAAA,CAAW69C,UAA7B;IACA,KAAK90D,iBAAL,GAAyBiX,UAAA,CAAWjX,iBAApC;IACA,KAAK+0D,eAAL,GAAuB99C,UAAA,CAAW89C,eAAlC;IACA,KAAK1yD,YAAL,GAAoB4U,UAAA,CAAW5U,YAA/B;IACA,KAAK2yD,aAAL,GAAqB/9C,UAAA,CAAWg+C,YAAhC;IACA,KAAK/+C,MAAL,GAAce,UAAA,CAAWf,MAAzB;IAEA,IAAIq+C,YAAJ,EAAkB;MAChB,KAAKryC,SAAL,GAAiB,KAAKgzC,gBAAL,CAAsBV,YAAtB,CAAjB;IADgB;IAGlB,IAAIC,oBAAJ,EAA0B;MACxB,KAAKU,cAAL,GAAsB,KAAKC,qBAAL,CAA2BZ,YAA3B,CAAtB;IADwB;EAlB1B;EA+BFU,iBAAiBV,YAAjB,EAA+B;IAC7B,MAAM;MACJt+D,IADI;MAEJggB,MAAA,EAAQ;QAAEnH,IAAF;QAAQpK;MAAR;IAFJ,IAGF,IAHJ;IAKA,MAAMud,SAAA,GAAYnnB,QAAA,CAASugB,aAAT,CAAuB,SAAvB,CAAlB;IACA4G,SAAA,CAAU3G,YAAV,CAAuB,oBAAvB,EAA6CrlB,IAAA,CAAK0K,EAAlD;IAOAshB,SAAA,CAAUpJ,KAAV,CAAgBjC,MAAhB,GAAyB,KAAKX,MAAL,CAAYW,MAAZ,EAAzB;IAEA,IAAI,KAAK3gB,IAAL,CAAUm/D,QAAd,EAAwB;MACtBnzC,SAAA,CAAU3G,YAAV,CAAuB,eAAvB,EAAwC,QAAxC;IADsB;IAIxB,IAAIrlB,IAAA,CAAKo/D,QAAT,EAAmB;MACjBpzC,SAAA,CAAUrF,SAAV,CAAoB/V,GAApB,CAAwB,UAAxB;IADiB;IAInB,MAAM;MAAEwQ,SAAF;MAAaC,UAAb;MAAyBC,KAAzB;MAAgCC;IAAhC,IAA0C9S,QAAA,CAAS0S,OAAzD;IAEA,IAAI,CAACnhB,IAAA,CAAKhE,IAAN,IAAc,gBAAgBshE,sBAAlC,EAA0D;MACxD,MAAM;QAAE7vD;MAAF,IAAezN,IAArB;MACA,IAAI,CAACA,IAAA,CAAKm5C,YAAN,IAAsB1rC,QAAA,KAAa,CAAvC,EAA0C;QACxC,KAAK4xD,WAAL,CAAiB5xD,QAAjB,EAA2Bue,SAA3B;MADwC;MAG1C,OAAOA,SAAP;IALwD;IAQ1D,MAAM;MAAE1Q,KAAF;MAASC;IAAT,IAAoBihD,WAAA,CAAYx8D,IAAA,CAAKhE,IAAjB,CAA1B;IAIA,MAAMA,IAAA,GAAOnC,UAAA,CAAKkC,aAAL,CAAmB,CAC9BiE,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAD8B,EAE9B6c,IAAA,CAAKvL,IAAL,CAAU,CAAV,IAAetN,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAf,GAA8B6c,IAAA,CAAKvL,IAAL,CAAU,CAAV,CAFA,EAG9BtN,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAH8B,EAI9B6c,IAAA,CAAKvL,IAAL,CAAU,CAAV,IAAetN,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAf,GAA8B6c,IAAA,CAAKvL,IAAL,CAAU,CAAV,CAJA,CAAnB,CAAb;IAOA,IAAI,CAACgxD,YAAD,IAAiBt+D,IAAA,CAAKs/D,WAAL,CAAiBhkD,KAAjB,GAAyB,CAA9C,EAAiD;MAC/C0Q,SAAA,CAAUpJ,KAAV,CAAgB28C,WAAhB,GAA8B,GAAGv/D,IAAA,CAAKs/D,WAAL,CAAiBhkD,KAAM,IAAxD;MAEA,MAAMkkD,gBAAA,GAAmBx/D,IAAA,CAAKs/D,WAAL,CAAiBG,sBAA1C;MACA,MAAMC,cAAA,GAAiB1/D,IAAA,CAAKs/D,WAAL,CAAiBK,oBAAxC;MACA,IAAIH,gBAAA,GAAmB,CAAnB,IAAwBE,cAAA,GAAiB,CAA7C,EAAgD;QAC9C,MAAME,MAAA,GAAU,QAAOJ,gBAAiB,oCAAmCE,cAAe,2BAA1F;QACA1zC,SAAA,CAAUpJ,KAAV,CAAgBi9C,YAAhB,GAA+BD,MAA/B;MAF8C,CAAhD,MAGO,IAAI,gBAAgB7C,kCAApB,EAAwD;QAC7D,MAAM6C,MAAA,GAAU,QAAOtkD,KAAM,oCAAmCC,MAAO,2BAAvE;QACAyQ,SAAA,CAAUpJ,KAAV,CAAgBi9C,YAAhB,GAA+BD,MAA/B;MAF6D;MAK/D,QAAQ5/D,IAAA,CAAKs/D,WAAL,CAAiB18C,KAAzB;QACE,KAAKp3B,+BAAA,CAA0BC,KAA/B;UACEugC,SAAA,CAAUpJ,KAAV,CAAgB08C,WAAhB,GAA8B,OAA9B;UACA;QAEF,KAAK9zE,+BAAA,CAA0BE,MAA/B;UACEsgC,SAAA,CAAUpJ,KAAV,CAAgB08C,WAAhB,GAA8B,QAA9B;UACA;QAEF,KAAK9zE,+BAAA,CAA0BG,OAA/B;UACE,IAAAqI,UAAA,EAAK,qCAAL;UACA;QAEF,KAAKxI,+BAAA,CAA0BI,KAA/B;UACE,IAAAoI,UAAA,EAAK,mCAAL;UACA;QAEF,KAAKxI,+BAAA,CAA0B9C,SAA/B;UACEsjC,SAAA,CAAUpJ,KAAV,CAAgBk9C,iBAAhB,GAAoC,OAApC;UACA;QAEF;UACE;MAtBJ;MAyBA,MAAMC,WAAA,GAAc//D,IAAA,CAAK+/D,WAAL,IAAoB,IAAxC;MACA,IAAIA,WAAJ,EAAiB;QACf/zC,SAAA,CAAUpJ,KAAV,CAAgBm9C,WAAhB,GAA8BlmE,UAAA,CAAKC,YAAL,CAC5BimE,WAAA,CAAY,CAAZ,IAAiB,CADW,EAE5BA,WAAA,CAAY,CAAZ,IAAiB,CAFW,EAG5BA,WAAA,CAAY,CAAZ,IAAiB,CAHW,CAA9B;MADe,CAAjB,MAMO;QAEL/zC,SAAA,CAAUpJ,KAAV,CAAgB28C,WAAhB,GAA8B,CAA9B;MAFK;IA7CwC;IAmDjDvzC,SAAA,CAAUpJ,KAAV,CAAgByB,IAAhB,GAAuB,GAAI,OAAOroB,IAAA,CAAK,CAAL,IAAUslB,KAAV,CAAR,GAA4BF,SAAU,GAAhE;IACA4K,SAAA,CAAUpJ,KAAV,CAAgB0B,GAAhB,GAAsB,GAAI,OAAOtoB,IAAA,CAAK,CAAL,IAAUulB,KAAV,CAAR,GAA4BF,UAAW,GAAhE;IAEA,MAAM;MAAE5T;IAAF,IAAezN,IAArB;IACA,IAAIA,IAAA,CAAKm5C,YAAL,IAAqB1rC,QAAA,KAAa,CAAtC,EAAyC;MACvCue,SAAA,CAAUpJ,KAAV,CAAgBtH,KAAhB,GAAwB,GAAI,MAAMA,KAAP,GAAgB8F,SAAU,GAArD;MACA4K,SAAA,CAAUpJ,KAAV,CAAgBrH,MAAhB,GAAyB,GAAI,MAAMA,MAAP,GAAiB8F,UAAW,GAAxD;IAFuC,CAAzC,MAGO;MACL,KAAKg+C,WAAL,CAAiB5xD,QAAjB,EAA2Bue,SAA3B;IADK;IAIP,OAAOA,SAAP;EA3G6B;EA8G/BqzC,YAAY18B,KAAZ,EAAmB3W,SAAA,GAAY,KAAKA,SAApC,EAA+C;IAC7C,MAAM;MAAE5K,SAAF;MAAaC;IAAb,IAA4B,KAAKrB,MAAL,CAAYvR,QAAZ,CAAqB0S,OAAvD;IACA,MAAM;MAAE7F,KAAF;MAASC;IAAT,IAAoBihD,WAAA,CAAY,KAAKx8D,IAAL,CAAUhE,IAAtB,CAA1B;IAEA,IAAIgkE,YAAJ,EAAkBC,aAAlB;IACA,IAAIt9B,KAAA,GAAQ,GAAR,KAAgB,CAApB,EAAuB;MACrBq9B,YAAA,GAAgB,MAAM1kD,KAAP,GAAgB8F,SAA/B;MACA6+C,aAAA,GAAiB,MAAM1kD,MAAP,GAAiB8F,UAAjC;IAFqB,CAAvB,MAGO;MACL2+C,YAAA,GAAgB,MAAMzkD,MAAP,GAAiB6F,SAAhC;MACA6+C,aAAA,GAAiB,MAAM3kD,KAAP,GAAgB+F,UAAhC;IAFK;IAKP2K,SAAA,CAAUpJ,KAAV,CAAgBtH,KAAhB,GAAwB,GAAG0kD,YAAa,GAAxC;IACAh0C,SAAA,CAAUpJ,KAAV,CAAgBrH,MAAhB,GAAyB,GAAG0kD,aAAc,GAA1C;IAEAj0C,SAAA,CAAU3G,YAAV,CAAuB,oBAAvB,EAA8C,OAAMsd,KAAN,IAAe,GAA7D;EAhB6C;EAmB/C,IAAIu9B,cAAJA,CAAA,EAAqB;IACnB,MAAMC,QAAA,GAAWA,CAACC,MAAD,EAASC,SAAT,EAAoB/rD,KAApB,KAA8B;MAC7C,MAAMmV,KAAA,GAAQnV,KAAA,CAAMgsD,MAAN,CAAaF,MAAb,CAAd;MACA9rD,KAAA,CAAM0O,MAAN,CAAaJ,KAAb,CAAmBy9C,SAAnB,IAAgCE,gCAAA,CAAgB,GAAG92C,KAAA,CAAM,CAAN,CAAS,OAA5B,EAC9BA,KAAA,CAAMxuB,KAAN,CAAY,CAAZ,CAD8B,CAAhC;IAF6C,CAA/C;IAOA,OAAO,IAAA7F,YAAA,EAAO,IAAP,EAAa,gBAAb,EAA+B;MACpCgjE,OAAA,EAAS9jD,KAAA,IAAS;QAChB,MAAM8iD,MAAA,GAAS9iD,KAAA,CAAMgsD,MAAN,CAAalI,OAAb,GAAuB,CAAvB,KAA6B,CAA5C;QACA,KAAKpsC,SAAL,CAAepJ,KAAf,CAAqB+N,UAArB,GAAkCymC,MAAA,GAAS,QAAT,GAAoB,SAAtD;QACA,KAAKttD,iBAAL,CAAuBmV,QAAvB,CAAgC,KAAKjf,IAAL,CAAU0K,EAA1C,EAA8C;UAC5C0sD,MAD4C;UAE5C53C,KAAA,EAAOlL,KAAA,CAAMgsD,MAAN,CAAalI,OAAb,KAAyB,CAAzB,IAA8B9jD,KAAA,CAAMgsD,MAAN,CAAalI,OAAb,KAAyB;QAFlB,CAA9C;MAHgB,CADkB;MASpC54C,KAAA,EAAOlL,KAAA,IAAS;QACd,KAAKxK,iBAAL,CAAuBmV,QAAvB,CAAgC,KAAKjf,IAAL,CAAU0K,EAA1C,EAA8C;UAC5C8U,KAAA,EAAOlL,KAAA,CAAMgsD,MAAN,CAAa9gD;QADwB,CAA9C;MADc,CAToB;MAcpC43C,MAAA,EAAQ9iD,KAAA,IAAS;QACf,KAAK0X,SAAL,CAAepJ,KAAf,CAAqB+N,UAArB,GAAkCrc,KAAA,CAAMgsD,MAAN,CAAalJ,MAAb,GAC9B,QAD8B,GAE9B,SAFJ;QAGA,KAAKttD,iBAAL,CAAuBmV,QAAvB,CAAgC,KAAKjf,IAAL,CAAU0K,EAA1C,EAA8C;UAC5C0sD,MAAA,EAAQ9iD,KAAA,CAAMgsD,MAAN,CAAalJ;QADuB,CAA9C;MAJe,CAdmB;MAsBpCzqC,KAAA,EAAOrY,KAAA,IAAS;QACdlB,UAAA,CAAW,MAAMkB,KAAA,CAAM0O,MAAN,CAAa2J,KAAb,CAAmB;UAAEiuC,aAAA,EAAe;QAAjB,CAAnB,CAAjB,EAA+D,CAA/D;MADc,CAtBoB;MAyBpC4F,QAAA,EAAUlsD,KAAA,IAAS;QAEjBA,KAAA,CAAM0O,MAAN,CAAay9C,KAAb,GAAqBnsD,KAAA,CAAMgsD,MAAN,CAAaE,QAAlC;MAFiB,CAzBiB;MA6BpCE,QAAA,EAAUpsD,KAAA,IAAS;QACjB,IAAIA,KAAA,CAAMgsD,MAAN,CAAaI,QAAjB,EAA2B;UACzBpsD,KAAA,CAAM0O,MAAN,CAAaqC,YAAb,CAA0B,UAA1B,EAAsC,EAAtC;QADyB,CAA3B,MAEO;UACL/Q,KAAA,CAAM0O,MAAN,CAAa23C,eAAb,CAA6B,UAA7B;QADK;MAHU,CA7BiB;MAoCpCgG,QAAA,EAAUrsD,KAAA,IAAS;QACjB,KAAKssD,YAAL,CAAkBtsD,KAAA,CAAM0O,MAAxB,EAAgC1O,KAAA,CAAMgsD,MAAN,CAAaK,QAA7C;MADiB,CApCiB;MAuCpC1uC,OAAA,EAAS3d,KAAA,IAAS;QAChB6rD,QAAA,CAAS,SAAT,EAAoB,iBAApB,EAAuC7rD,KAAvC;MADgB,CAvCkB;MA0CpCuyB,SAAA,EAAWvyB,KAAA,IAAS;QAClB6rD,QAAA,CAAS,WAAT,EAAsB,iBAAtB,EAAyC7rD,KAAzC;MADkB,CA1CgB;MA6CpC0d,OAAA,EAAS1d,KAAA,IAAS;QAChB6rD,QAAA,CAAS,SAAT,EAAoB,OAApB,EAA6B7rD,KAA7B;MADgB,CA7CkB;MAgDpCusD,SAAA,EAAWvsD,KAAA,IAAS;QAClB6rD,QAAA,CAAS,WAAT,EAAsB,OAAtB,EAA+B7rD,KAA/B;MADkB,CAhDgB;MAmDpCyrD,WAAA,EAAazrD,KAAA,IAAS;QACpB6rD,QAAA,CAAS,aAAT,EAAwB,aAAxB,EAAuC7rD,KAAvC;MADoB,CAnDc;MAsDpCwyB,WAAA,EAAaxyB,KAAA,IAAS;QACpB6rD,QAAA,CAAS,aAAT,EAAwB,aAAxB,EAAuC7rD,KAAvC;MADoB,CAtDc;MAyDpC7G,QAAA,EAAU6G,KAAA,IAAS;QACjB,MAAMquB,KAAA,GAAQruB,KAAA,CAAMgsD,MAAN,CAAa7yD,QAA3B;QACA,KAAK4xD,WAAL,CAAiB18B,KAAjB;QACA,KAAK74B,iBAAL,CAAuBmV,QAAvB,CAAgC,KAAKjf,IAAL,CAAU0K,EAA1C,EAA8C;UAC5C+C,QAAA,EAAUk1B;QADkC,CAA9C;MAHiB;IAzDiB,CAA/B,CAAP;EARmB;EA2ErBm+B,0BAA0BC,OAA1B,EAAmCC,OAAnC,EAA4C;IAC1C,MAAMC,aAAA,GAAgB,KAAKf,cAA3B;IACA,WAAWjqE,IAAX,IAAmBR,MAAA,CAAO2C,IAAP,CAAY4oE,OAAA,CAAQV,MAApB,CAAnB,EAAgD;MAC9C,MAAM3c,MAAA,GAASod,OAAA,CAAQ9qE,IAAR,KAAiBgrE,aAAA,CAAchrE,IAAd,CAAhC;MACA0tD,MAAA,GAASqd,OAAT;IAF8C;EAFN;EAQ5CE,4BAA4B/5C,OAA5B,EAAqC;IACnC,IAAI,CAAC,KAAK03C,eAAV,EAA2B;MACzB;IADyB;IAK3B,MAAMsC,UAAA,GAAa,KAAKr3D,iBAAL,CAAuBgV,WAAvB,CAAmC,KAAK9e,IAAL,CAAU0K,EAA7C,CAAnB;IACA,IAAI,CAACy2D,UAAL,EAAiB;MACf;IADe;IAIjB,MAAMF,aAAA,GAAgB,KAAKf,cAA3B;IACA,WAAW,CAAClc,UAAD,EAAasc,MAAb,CAAX,IAAmC7qE,MAAA,CAAO0pB,OAAP,CAAegiD,UAAf,CAAnC,EAA+D;MAC7D,MAAMxd,MAAA,GAASsd,aAAA,CAAcjd,UAAd,CAAf;MACA,IAAIL,MAAJ,EAAY;QACV,MAAMyd,UAAA,GAAa;UACjBd,MAAA,EAAQ;YACN,CAACtc,UAAD,GAAcsc;UADR,CADS;UAIjBt9C,MAAA,EAAQmE;QAJS,CAAnB;QAMAw8B,MAAA,CAAOyd,UAAP;QAEA,OAAOD,UAAA,CAAWnd,UAAX,CAAP;MATU;IAFiD;EAZ5B;EAoCrCkb,sBAAsBZ,YAAA,GAAe,KAArC,EAA4C;IAC1C,IAAI,CAAC,KAAKt+D,IAAL,CAAUqhE,UAAf,EAA2B;MACzB,OAAO,IAAP;IADyB;IAI3B,MAAMpC,cAAA,GAAiB,EAAvB;IACA,MAAMqC,SAAA,GAAY,KAAKthE,IAAL,CAAUhE,IAA5B;IACA,IAAIulE,aAAA,GAAgB,IAApB;IACA,WAAWC,SAAX,IAAwB,KAAKxhE,IAAL,CAAUqhE,UAAlC,EAA8C;MAC5C,KAAKrhE,IAAL,CAAUhE,IAAV,GAAiB,CACfwlE,SAAA,CAAU,CAAV,EAAa3/C,CADE,EAEf2/C,SAAA,CAAU,CAAV,EAAa1/C,CAFE,EAGf0/C,SAAA,CAAU,CAAV,EAAa3/C,CAHE,EAIf2/C,SAAA,CAAU,CAAV,EAAa1/C,CAJE,CAAjB;MAMAm9C,cAAA,CAAernE,IAAf,CAAoB,KAAKonE,gBAAL,CAAsBV,YAAtB,CAApB;MACAiD,aAAA,KAAkB,KAAKvhE,IAAL,CAAUhE,IAA5B;IAR4C;IAU9C,KAAKgE,IAAL,CAAUhE,IAAV,GAAiBslE,SAAjB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,OAAOtC,cAAP;EApB0C;EA+B5CwC,aAAA,EAAe;IACb,MAAM;MAAEz1C,SAAF;MAAahsB;IAAb,IAAsB,IAA5B;IACAgsB,SAAA,CAAU3G,YAAV,CAAuB,eAAvB,EAAwC,QAAxC;IAEA,MAAMq8C,KAAA,GAAQ,IAAIpE,sBAAJ,CAA2B;MACvCt9D,IAAA,EAAM;QACJypB,KAAA,EAAOzpB,IAAA,CAAKypB,KADR;QAEJk4C,QAAA,EAAU3hE,IAAA,CAAK2hE,QAFX;QAGJC,gBAAA,EAAkB5hE,IAAA,CAAK4hE,gBAHnB;QAIJC,WAAA,EAAa7hE,IAAA,CAAK6hE,WAJd;QAKJC,QAAA,EAAU9hE,IAAA,CAAK8hE,QALX;QAMJC,UAAA,EAAY,KAAKR,aAAL,IAAsBvhE,IAAA,CAAKhE,IANnC;QAOJsjE,WAAA,EAAa,CAPT;QAQJ50D,EAAA,EAAK,SAAQ1K,IAAA,CAAK0K,EAAd,EARA;QASJ+C,QAAA,EAAUzN,IAAA,CAAKyN;MATX,CADiC;MAYvCuS,MAAA,EAAQ,KAAKA,MAZ0B;MAavCgiD,QAAA,EAAU,CAAC,IAAD;IAb6B,CAA3B,CAAd;IAeA,KAAKhiD,MAAL,CAAYgB,GAAZ,CAAgB+P,MAAhB,CAAuB2wC,KAAA,CAAMnzD,MAAN,EAAvB;EAnBa;EA8Bf0zD,sBAAsB38C,SAAtB,EAAiC;IAK/B,WAAW48C,aAAX,IAA4B,KAAKjD,cAAjC,EAAiD;MAC/CiD,aAAA,CAAcv7C,SAAd,CAAwB/V,GAAxB,CAA4B0U,SAA5B;IAD+C;IAGjD,OAAO,KAAK25C,cAAZ;EAR+B;EAmBjC1wD,OAAA,EAAS;IACP,IAAAta,iBAAA,EAAY,mDAAZ;EADO;EAQTkuE,mBAAmBlsE,IAAnB,EAAyBmsE,MAAA,GAAS,IAAlC,EAAwC;IACtC,MAAMC,MAAA,GAAS,EAAf;IAEA,IAAI,KAAKvD,aAAT,EAAwB;MACtB,MAAMwD,QAAA,GAAW,KAAKxD,aAAL,CAAmB7oE,IAAnB,CAAjB;MACA,IAAIqsE,QAAJ,EAAc;QACZ,WAAW;UAAEzpD,IAAF;UAAQnO,EAAR;UAAY63D;QAAZ,CAAX,IAAyCD,QAAzC,EAAmD;UACjD,IAAIzpD,IAAA,KAAS,CAAC,CAAd,EAAiB;YACf;UADe;UAGjB,IAAInO,EAAA,KAAO03D,MAAX,EAAmB;YACjB;UADiB;UAGnB,MAAMI,WAAA,GACJ,OAAOD,YAAP,KAAwB,QAAxB,GAAmCA,YAAnC,GAAkD,IADpD;UAGA,MAAME,UAAA,GAAa59D,QAAA,CAAS69D,aAAT,CAChB,qBAAoBh4D,EAAG,IADP,CAAnB;UAGA,IAAI+3D,UAAA,IAAc,CAAClG,oBAAA,CAAqBxmD,GAArB,CAAyB0sD,UAAzB,CAAnB,EAAyD;YACvD,IAAAzuE,UAAA,EAAM,6CAA4C0W,EAA7C,EAAL;YACA;UAFuD;UAIzD23D,MAAA,CAAOzqE,IAAP,CAAY;YAAE8S,EAAF;YAAM83D,WAAN;YAAmBC;UAAnB,CAAZ;QAjBiD;MADvC;MAqBd,OAAOJ,MAAP;IAvBsB;IA2BxB,WAAWI,UAAX,IAAyB59D,QAAA,CAAS89D,iBAAT,CAA2B1sE,IAA3B,CAAzB,EAA2D;MACzD,MAAM;QAAEusE;MAAF,IAAkBC,UAAxB;MACA,MAAM/3D,EAAA,GAAK+3D,UAAA,CAAWG,YAAX,CAAwB,iBAAxB,CAAX;MACA,IAAIl4D,EAAA,KAAO03D,MAAX,EAAmB;QACjB;MADiB;MAGnB,IAAI,CAAC7F,oBAAA,CAAqBxmD,GAArB,CAAyB0sD,UAAzB,CAAL,EAA2C;QACzC;MADyC;MAG3CJ,MAAA,CAAOzqE,IAAP,CAAY;QAAE8S,EAAF;QAAM83D,WAAN;QAAmBC;MAAnB,CAAZ;IATyD;IAW3D,OAAOJ,MAAP;EAzCsC;EA4CxCtK,KAAA,EAAO;IACL,IAAI,KAAK/rC,SAAT,EAAoB;MAClB,KAAKA,SAAL,CAAeorC,MAAf,GAAwB,KAAxB;IADkB;IAGpB,KAAKsK,KAAL,EAAYmB,SAAZ;EAJK;EAOPjL,KAAA,EAAO;IACL,IAAI,KAAK5rC,SAAT,EAAoB;MAClB,KAAKA,SAAL,CAAeorC,MAAf,GAAwB,IAAxB;IADkB;IAGpB,KAAKsK,KAAL,EAAYoB,SAAZ;EAJK;EAOPC,0BAAA,EAA4B;IAC1B,OAAO,KAAK9D,cAAL,IAAuB,KAAKjzC,SAAnC;EAD0B;EAI5Bg3C,iBAAA,EAAmB;IACjB,MAAMC,QAAA,GAAW,KAAKF,yBAAL,EAAjB;IACA,IAAItpE,KAAA,CAAM6zB,OAAN,CAAc21C,QAAd,CAAJ,EAA6B;MAC3B,WAAW97C,OAAX,IAAsB87C,QAAtB,EAAgC;QAC9B97C,OAAA,CAAQR,SAAR,CAAkB/V,GAAlB,CAAsB,eAAtB;MAD8B;IADL,CAA7B,MAIO;MACLqyD,QAAA,CAASt8C,SAAT,CAAmB/V,GAAnB,CAAuB,eAAvB;IADK;EANU;AArbG;AAicxB,MAAM8rD,qBAAN,SAAoC0B,iBAApC,CAAsD;EACpDloE,YAAY6qB,UAAZ,EAAwBrsB,OAAA,GAAU,IAAlC,EAAwC;IACtC,MAAMqsB,UAAN,EAAkB;MAChBs9C,YAAA,EAAc,IADE;MAEhBC,YAAA,EAAc,CAAC,CAAC5pE,OAAA,EAAS4pE,YAFT;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;IAKA,KAAK2E,aAAL,GAAqBniD,UAAA,CAAW/gB,IAAX,CAAgBkjE,aAArC;EANsC;EASxC30D,OAAA,EAAS;IACP,MAAM;MAAEvO,IAAF;MAAQw+D;IAAR,IAAwB,IAA9B;IACA,MAAM2E,IAAA,GAAOt+D,QAAA,CAASugB,aAAT,CAAuB,GAAvB,CAAb;IACA+9C,IAAA,CAAK99C,YAAL,CAAkB,iBAAlB,EAAqCrlB,IAAA,CAAK0K,EAA1C;IACA,IAAI04D,OAAA,GAAU,KAAd;IAEA,IAAIpjE,IAAA,CAAK1L,GAAT,EAAc;MACZkqE,WAAA,CAAY6E,iBAAZ,CAA8BF,IAA9B,EAAoCnjE,IAAA,CAAK1L,GAAzC,EAA8C0L,IAAA,CAAKsjE,SAAnD;MACAF,OAAA,GAAU,IAAV;IAFY,CAAd,MAGO,IAAIpjE,IAAA,CAAK2jD,MAAT,EAAiB;MACtB,KAAK4f,gBAAL,CAAsBJ,IAAtB,EAA4BnjE,IAAA,CAAK2jD,MAAjC;MACAyf,OAAA,GAAU,IAAV;IAFsB,CAAjB,MAGA,IAAIpjE,IAAA,CAAKwjE,UAAT,EAAqB;MAC1B,KAAKC,eAAL,CAAqBN,IAArB,EAA2BnjE,IAAA,CAAKwjE,UAAhC;MACAJ,OAAA,GAAU,IAAV;IAF0B,CAArB,MAGA,IAAIpjE,IAAA,CAAK0jE,WAAT,EAAsB;MAC3B,KAAK,CAAAC,eAAL,CAAsBR,IAAtB,EAA4BnjE,IAAA,CAAK0jE,WAAjC;MACAN,OAAA,GAAU,IAAV;IAF2B,CAAtB,MAGA,IAAIpjE,IAAA,CAAKopC,IAAT,EAAe;MACpB,KAAKw6B,SAAL,CAAeT,IAAf,EAAqBnjE,IAAA,CAAKopC,IAA1B;MACAg6B,OAAA,GAAU,IAAV;IAFoB,CAAf,MAGA;MACL,IACEpjE,IAAA,CAAK+gE,OAAL,KACC/gE,IAAA,CAAK+gE,OAAL,CAAa8C,MAAb,IACC7jE,IAAA,CAAK+gE,OAAL,CAAa,UAAb,CADD,IAEC/gE,IAAA,CAAK+gE,OAAL,CAAa,YAAb,CAFD,CADD,IAIA,KAAKlC,eAJL,IAKA,KAAK1yD,YANP,EAOE;QACA,KAAK23D,aAAL,CAAmBX,IAAnB,EAAyBnjE,IAAzB;QACAojE,OAAA,GAAU,IAAV;MAFA;MAKF,IAAIpjE,IAAA,CAAK+jE,SAAT,EAAoB;QAClB,KAAKC,oBAAL,CAA0Bb,IAA1B,EAAgCnjE,IAAA,CAAK+jE,SAArC;QACAX,OAAA,GAAU,IAAV;MAFkB,CAApB,MAGO,IAAI,KAAKF,aAAL,IAAsB,CAACE,OAA3B,EAAoC;QACzC,KAAKQ,SAAL,CAAeT,IAAf,EAAqB,EAArB;QACAC,OAAA,GAAU,IAAV;MAFyC;IAhBtC;IAsBP,IAAI,KAAKnE,cAAT,EAAyB;MACvB,OAAO,KAAKgD,qBAAL,CAA2B,gBAA3B,EAA6C3pE,GAA7C,CACL,CAAC4pE,aAAD,EAAgB+B,KAAhB,KAA0B;QACxB,MAAMC,WAAA,GAAcD,KAAA,KAAU,CAAV,GAAcd,IAAd,GAAqBA,IAAA,CAAKgB,SAAL,EAAzC;QACAjC,aAAA,CAAcnxC,MAAd,CAAqBmzC,WAArB;QACA,OAAOhC,aAAP;MAHwB,CADrB,CAAP;IADuB;IAUzB,KAAKl2C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,gBAA7B;IACA,IAAIwyD,OAAJ,EAAa;MACX,KAAKp3C,SAAL,CAAe+E,MAAf,CAAsBoyC,IAAtB;IADW;IAIb,OAAO,KAAKn3C,SAAZ;EA1DO;EA6DT,CAAAo4C,gBAAA,EAAmB;IACjB,KAAKp4C,SAAL,CAAe3G,YAAf,CAA4B,oBAA5B,EAAkD,EAAlD;EADiB;EAYnBu+C,UAAUT,IAAV,EAAgBkB,WAAhB,EAA6B;IAC3BlB,IAAA,CAAKr7D,IAAL,GAAY,KAAK02D,WAAL,CAAiB8F,kBAAjB,CAAoCD,WAApC,CAAZ;IACAlB,IAAA,CAAKoB,OAAL,GAAe,MAAM;MACnB,IAAIF,WAAJ,EAAiB;QACf,KAAK7F,WAAL,CAAiBgG,eAAjB,CAAiCH,WAAjC;MADe;MAGjB,OAAO,KAAP;IAJmB,CAArB;IAMA,IAAIA,WAAA,IAAeA,WAAA,KAAsC,EAAzD,EAA6D;MAC3D,KAAK,CAAAD,eAAL;IAD2D;EARlC;EAqB7Bb,iBAAiBJ,IAAjB,EAAuBxf,MAAvB,EAA+B;IAC7Bwf,IAAA,CAAKr7D,IAAL,GAAY,KAAK02D,WAAL,CAAiBiG,YAAjB,CAA8B,EAA9B,CAAZ;IACAtB,IAAA,CAAKoB,OAAL,GAAe,MAAM;MACnB,KAAK/F,WAAL,CAAiBkG,kBAAjB,CAAoC/gB,MAApC;MACA,OAAO,KAAP;IAFmB,CAArB;IAIA,KAAK,CAAAygB,eAAL;EAN6B;EAc/BX,gBAAgBN,IAAhB,EAAsBK,UAAtB,EAAkC;IAChCL,IAAA,CAAKr7D,IAAL,GAAY,KAAK02D,WAAL,CAAiBiG,YAAjB,CAA8B,EAA9B,CAAZ;IACAtB,IAAA,CAAKoB,OAAL,GAAe,MAAM;MACnB,KAAK9F,eAAL,EAAsBkG,kBAAtB,CACE,KAAK34C,SADP,EAEEw3C,UAAA,CAAW9J,OAFb,EAGE8J,UAAA,CAAW/nD,QAHb;MAKA,OAAO,KAAP;IANmB,CAArB;IAQA,KAAK,CAAA2oD,eAAL;EAVgC;EAkBlC,CAAAT,gBAAiBR,IAAjB,EAAuBxf,MAAvB,EAA+B;IAC7Bwf,IAAA,CAAKr7D,IAAL,GAAY,KAAK02D,WAAL,CAAiBiG,YAAjB,CAA8B,EAA9B,CAAZ;IACAtB,IAAA,CAAKoB,OAAL,GAAe,MAAM;MACnB,KAAK/F,WAAL,CAAiBoG,kBAAjB,CAAoCjhB,MAApC;MACA,OAAO,KAAP;IAFmB,CAArB;IAIA,KAAK,CAAAygB,eAAL;EAN6B;EAiB/BN,cAAcX,IAAd,EAAoBnjE,IAApB,EAA0B;IACxBmjE,IAAA,CAAKr7D,IAAL,GAAY,KAAK02D,WAAL,CAAiBiG,YAAjB,CAA8B,EAA9B,CAAZ;IACA,MAAMnsE,GAAA,GAAM,IAAI+H,GAAJ,CAAQ,CAClB,CAAC,QAAD,EAAW,SAAX,CADkB,EAElB,CAAC,UAAD,EAAa,WAAb,CAFkB,EAGlB,CAAC,YAAD,EAAe,aAAf,CAHkB,CAAR,CAAZ;IAKA,WAAWpK,IAAX,IAAmBR,MAAA,CAAO2C,IAAP,CAAY4H,IAAA,CAAK+gE,OAAjB,CAAnB,EAA8C;MAC5C,MAAMX,MAAA,GAAS9nE,GAAA,CAAImI,GAAJ,CAAQxK,IAAR,CAAf;MACA,IAAI,CAACmqE,MAAL,EAAa;QACX;MADW;MAGb+C,IAAA,CAAK/C,MAAL,IAAe,MAAM;QACnB,KAAK5B,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DpmB,MAAA,EAAQ,IADoD;UAE5D24D,MAAA,EAAQ;YACN51D,EAAA,EAAI1K,IAAA,CAAK0K,EADH;YAENzU;UAFM;QAFoD,CAA9D;QAOA,OAAO,KAAP;MARmB,CAArB;IAL4C;IAiB9C,IAAI,CAACktE,IAAA,CAAKoB,OAAV,EAAmB;MACjBpB,IAAA,CAAKoB,OAAL,GAAe,MAAM,KAArB;IADiB;IAGnB,KAAK,CAAAH,eAAL;EA3BwB;EA8B1BJ,qBAAqBb,IAArB,EAA2BY,SAA3B,EAAsC;IACpC,MAAMc,gBAAA,GAAmB1B,IAAA,CAAKoB,OAA9B;IACA,IAAI,CAACM,gBAAL,EAAuB;MACrB1B,IAAA,CAAKr7D,IAAL,GAAY,KAAK02D,WAAL,CAAiBiG,YAAjB,CAA8B,EAA9B,CAAZ;IADqB;IAGvB,KAAK,CAAAL,eAAL;IAEA,IAAI,CAAC,KAAKtF,aAAV,EAAyB;MACvB,IAAA9qE,UAAA,EACG,2DAAD,GACE,uDAFJ;MAIA,IAAI,CAAC6wE,gBAAL,EAAuB;QACrB1B,IAAA,CAAKoB,OAAL,GAAe,MAAM,KAArB;MADqB;MAGvB;IARuB;IAWzBpB,IAAA,CAAKoB,OAAL,GAAe,MAAM;MACnBM,gBAAA;MAEA,MAAM;QACJxC,MAAA,EAAQyC,eADJ;QAEJC,IAAA,EAAMC,aAFF;QAGJC;MAHI,IAIFlB,SAJJ;MAMA,MAAMmB,SAAA,GAAY,EAAlB;MACA,IAAIJ,eAAA,CAAgB/vE,MAAhB,KAA2B,CAA3B,IAAgCiwE,aAAA,CAAcjwE,MAAd,KAAyB,CAA7D,EAAgE;QAC9D,MAAMowE,QAAA,GAAW,IAAIx0D,GAAJ,CAAQq0D,aAAR,CAAjB;QACA,WAAWI,SAAX,IAAwBN,eAAxB,EAAyC;UACvC,MAAMzC,MAAA,GAAS,KAAKvD,aAAL,CAAmBsG,SAAnB,KAAiC,EAAhD;UACA,WAAW;YAAE16D;UAAF,CAAX,IAAqB23D,MAArB,EAA6B;YAC3B8C,QAAA,CAASv0D,GAAT,CAAalG,EAAb;UAD2B;QAFU;QAMzC,WAAW23D,MAAX,IAAqB5sE,MAAA,CAAOmd,MAAP,CAAc,KAAKksD,aAAnB,CAArB,EAAwD;UACtD,WAAWuG,KAAX,IAAoBhD,MAApB,EAA4B;YAC1B,IAAI8C,QAAA,CAASpvD,GAAT,CAAasvD,KAAA,CAAM36D,EAAnB,MAA2Bu6D,OAA/B,EAAwC;cACtCC,SAAA,CAAUttE,IAAV,CAAeytE,KAAf;YADsC;UADd;QAD0B;MARM,CAAhE,MAeO;QACL,WAAWhD,MAAX,IAAqB5sE,MAAA,CAAOmd,MAAP,CAAc,KAAKksD,aAAnB,CAArB,EAAwD;UACtDoG,SAAA,CAAUttE,IAAV,CAAe,GAAGyqE,MAAlB;QADsD;MADnD;MAMP,MAAM7jD,OAAA,GAAU,KAAK1U,iBAArB;MACA,MAAMw7D,MAAA,GAAS,EAAf;MACA,WAAWD,KAAX,IAAoBH,SAApB,EAA+B;QAC7B,MAAM;UAAEx6D;QAAF,IAAS26D,KAAf;QACAC,MAAA,CAAO1tE,IAAP,CAAY8S,EAAZ;QACA,QAAQ26D,KAAA,CAAM7qD,IAAd;UACE,KAAK,MAAL;YAAa;cACX,MAAMjlB,KAAA,GAAQ8vE,KAAA,CAAMxmD,YAAN,IAAsB,EAApC;cACAL,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;gBAAEnV;cAAF,CAArB;cACA;YAHW;UAKb,KAAK,UAAL;UACA,KAAK,aAAL;YAAoB;cAClB,MAAMA,KAAA,GAAQ8vE,KAAA,CAAMxmD,YAAN,KAAuBwmD,KAAA,CAAM9C,YAA3C;cACA/jD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;gBAAEnV;cAAF,CAArB;cACA;YAHkB;UAKpB,KAAK,UAAL;UACA,KAAK,SAAL;YAAgB;cACd,MAAMA,KAAA,GAAQ8vE,KAAA,CAAMxmD,YAAN,IAAsB,EAApC;cACAL,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;gBAAEnV;cAAF,CAArB;cACA;YAHc;UAKhB;YACE;QAnBJ;QAsBA,MAAMktE,UAAA,GAAa59D,QAAA,CAAS69D,aAAT,CAAwB,qBAAoBh4D,EAAG,IAA/C,CAAnB;QACA,IAAI,CAAC+3D,UAAL,EAAiB;UACf;QADe,CAAjB,MAEO,IAAI,CAAClG,oBAAA,CAAqBxmD,GAArB,CAAyB0sD,UAAzB,CAAL,EAA2C;UAChD,IAAAzuE,UAAA,EAAM,+CAA8C0W,EAA/C,EAAL;UACA;QAFgD;QAIlD+3D,UAAA,CAAW8C,aAAX,CAAyB,IAAIC,KAAJ,CAAU,WAAV,CAAzB;MAhC6B;MAmC/B,IAAI,KAAK3G,eAAT,EAA0B;QAExB,KAAKL,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DpmB,MAAA,EAAQ,IADoD;UAE5D24D,MAAA,EAAQ;YACN51D,EAAA,EAAI,KADE;YAENm8C,GAAA,EAAKye,MAFC;YAGNrvE,IAAA,EAAM;UAHA;QAFoD,CAA9D;MAFwB;MAY1B,OAAO,KAAP;IAhFmB,CAArB;EAlBoC;AAvLc;AA8RtD,MAAM0mE,qBAAN,SAAoCyB,iBAApC,CAAsD;EACpDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C;IAAF,CAAlB;EAPsB;EAUxB9vD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,gBAA7B;IAEA,MAAMkpC,KAAA,GAAQj1C,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAd;IACA00B,KAAA,CAAMh3C,GAAN,GACE,KAAK47D,kBAAL,GACA,aADA,GAEA,KAAK1+D,IAAL,CAAU/J,IAAV,CAAe2gC,WAAf,EAFA,GAGA,MAJF;IAKAkjB,KAAA,CAAM2rB,GAAN,GAAY,uBAAZ;IACA3rB,KAAA,CAAMoa,OAAN,CAAcwR,MAAd,GAAuB,sBAAvB;IACA5rB,KAAA,CAAMoa,OAAN,CAAcyR,QAAd,GAAyB9lD,IAAA,CAAKC,SAAL,CAAe;MAAEtF,IAAA,EAAM,KAAKxa,IAAL,CAAU/J;IAAlB,CAAf,CAAzB;IAEA,IAAI,CAAC,KAAK+J,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAIzB,KAAKz1C,SAAL,CAAe+E,MAAf,CAAsB+oB,KAAtB;IACA,OAAO,KAAK9tB,SAAZ;EAlBO;AAX2C;AAiCtD,MAAMqxC,uBAAN,SAAsCe,iBAAtC,CAAwD;EACtD7vD,OAAA,EAAS;IAEP,IAAI,KAAKvO,IAAL,CAAU4lE,eAAd,EAA+B;MAC7B,KAAK55C,SAAL,CAAey0C,KAAf,GAAuB,KAAKzgE,IAAL,CAAU4lE,eAAjC;IAD6B;IAI/B,OAAO,KAAK55C,SAAZ;EANO;EAST65C,yBAAyB1+C,OAAzB,EAAkC;IAChC,IAAI,KAAKnnB,IAAL,CAAUm5C,YAAd,EAA4B;MAC1B,IAAIhyB,OAAA,CAAQ2+C,eAAR,EAAyBC,QAAzB,KAAsC,QAA1C,EAAoD;QAClD5+C,OAAA,CAAQ2+C,eAAR,CAAwB1O,MAAxB,GAAiC,IAAjC;MADkD;MAGpDjwC,OAAA,CAAQiwC,MAAR,GAAiB,KAAjB;IAJ0B;EADI;EASlC4O,gBAAgB1xD,KAAhB,EAAuB;IACrB,MAAM;MAAEjb,KAAF;MAASC;IAAT,IAAmBN,iBAAA,CAAYG,QAArC;IACA,OAAQE,KAAA,IAASib,KAAA,CAAMoR,OAAhB,IAA6BpsB,KAAA,IAASgb,KAAA,CAAMsR,OAAnD;EAFqB;EAKvBqgD,kBAAkB9+C,OAAlB,EAA2B++C,QAA3B,EAAqCC,SAArC,EAAgDC,WAAhD,EAA6D;IAC3D,IAAIF,QAAA,CAAS3sE,QAAT,CAAkB,OAAlB,CAAJ,EAAgC;MAE9B4tB,OAAA,CAAQ1S,gBAAR,CAAyByxD,QAAzB,EAAmC5xD,KAAA,IAAS;QAC1C,KAAKkqD,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DpmB,MAAA,EAAQ,IADoD;UAE5D24D,MAAA,EAAQ;YACN51D,EAAA,EAAI,KAAK1K,IAAL,CAAU0K,EADR;YAENzU,IAAA,EAAMkwE,SAFA;YAGN5wE,KAAA,EAAO6wE,WAAA,CAAY9xD,KAAZ,CAHD;YAINspB,KAAA,EAAOtpB,KAAA,CAAMqR,QAJP;YAKN0gD,QAAA,EAAU,KAAKL,eAAL,CAAqB1xD,KAArB;UALJ;QAFoD,CAA9D;MAD0C,CAA5C;IAF8B,CAAhC,MAcO;MAEL6S,OAAA,CAAQ1S,gBAAR,CAAyByxD,QAAzB,EAAmC5xD,KAAA,IAAS;QAC1C,KAAKkqD,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DpmB,MAAA,EAAQ,IADoD;UAE5D24D,MAAA,EAAQ;YACN51D,EAAA,EAAI,KAAK1K,IAAL,CAAU0K,EADR;YAENzU,IAAA,EAAMkwE,SAFA;YAGN5wE,KAAA,EAAO6wE,WAAA,CAAY9xD,KAAZ;UAHD;QAFoD,CAA9D;MAD0C,CAA5C;IAFK;EAfoD;EA8B7DgyD,mBAAmBn/C,OAAnB,EAA4BC,KAA5B,EAAmCm/C,MAAnC,EAA2C;IACzC,WAAW,CAACL,QAAD,EAAWC,SAAX,CAAX,IAAoC/+C,KAApC,EAA2C;MACzC,IAAI++C,SAAA,KAAc,QAAd,IAA0B,KAAKnmE,IAAL,CAAU+gE,OAAV,GAAoBoF,SAApB,CAA9B,EAA8D;QAC5D,KAAKF,iBAAL,CAAuB9+C,OAAvB,EAAgC++C,QAAhC,EAA0CC,SAA1C,EAAqDI,MAArD;MAD4D;IADrB;EADF;EAQ3CC,oBAAoBr/C,OAApB,EAA6B;IAC3B,MAAMsC,KAAA,GAAQ,KAAKzpB,IAAL,CAAUk/C,eAAV,IAA6B,IAA3C;IACA/3B,OAAA,CAAQvE,KAAR,CAAcs8B,eAAd,GACEz1B,KAAA,KAAU,IAAV,GACI,aADJ,GAEI5vB,UAAA,CAAKC,YAAL,CAAkB2vB,KAAA,CAAM,CAAN,CAAlB,EAA4BA,KAAA,CAAM,CAAN,CAA5B,EAAsCA,KAAA,CAAM,CAAN,CAAtC,CAHN;EAF2B;EAe7Bg9C,cAAct/C,OAAd,EAAuB;IACrB,MAAMu/C,cAAA,GAAiB,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAAvB;IACA,MAAM;MAAE3K;IAAF,IAAgB,KAAK/7D,IAAL,CAAU87D,qBAAhC;IACA,MAAM91B,QAAA,GACJ,KAAKhmC,IAAL,CAAU87D,qBAAV,CAAgC91B,QAAhC,IAA4C6rB,iBAD9C;IAGA,MAAMjvC,KAAA,GAAQuE,OAAA,CAAQvE,KAAtB;IAWA,IAAI+jD,gBAAJ;IACA,MAAMtnB,WAAA,GAAc,CAApB;IACA,MAAMunB,iBAAA,GAAoB/kD,CAAA,IAAKrqB,IAAA,CAAK+vB,KAAL,CAAW,KAAK1F,CAAhB,IAAqB,EAApD;IACA,IAAI,KAAK7hB,IAAL,CAAU6mE,SAAd,EAAyB;MACvB,MAAMtrD,MAAA,GAAS/jB,IAAA,CAAKgG,GAAL,CACb,KAAKwC,IAAL,CAAUhE,IAAV,CAAe,CAAf,IAAoB,KAAKgE,IAAL,CAAUhE,IAAV,CAAe,CAAf,CAApB,GAAwCqjD,WAD3B,CAAf;MAGA,MAAMynB,aAAA,GAAgBtvE,IAAA,CAAK+vB,KAAL,CAAWhM,MAAA,IAAU32B,iBAAA,GAAcohD,QAAd,CAArB,KAAiD,CAAvE;MACA,MAAM+gC,UAAA,GAAaxrD,MAAA,GAASurD,aAA5B;MACAH,gBAAA,GAAmBnvE,IAAA,CAAKC,GAAL,CACjBuuC,QADiB,EAEjB4gC,iBAAA,CAAkBG,UAAA,GAAaniF,iBAA/B,CAFiB,CAAnB;IANuB,CAAzB,MAUO;MACL,MAAM22B,MAAA,GAAS/jB,IAAA,CAAKgG,GAAL,CACb,KAAKwC,IAAL,CAAUhE,IAAV,CAAe,CAAf,IAAoB,KAAKgE,IAAL,CAAUhE,IAAV,CAAe,CAAf,CAApB,GAAwCqjD,WAD3B,CAAf;MAGAsnB,gBAAA,GAAmBnvE,IAAA,CAAKC,GAAL,CACjBuuC,QADiB,EAEjB4gC,iBAAA,CAAkBrrD,MAAA,GAAS32B,iBAA3B,CAFiB,CAAnB;IAJK;IASPg+B,KAAA,CAAMojB,QAAN,GAAkB,QAAO2gC,gBAAiB,2BAA1C;IAEA/jD,KAAA,CAAM6G,KAAN,GAAc5vB,UAAA,CAAKC,YAAL,CAAkBiiE,SAAA,CAAU,CAAV,CAAlB,EAAgCA,SAAA,CAAU,CAAV,CAAhC,EAA8CA,SAAA,CAAU,CAAV,CAA9C,CAAd;IAEA,IAAI,KAAK/7D,IAAL,CAAUgnE,aAAV,KAA4B,IAAhC,EAAsC;MACpCpkD,KAAA,CAAMqkD,SAAN,GAAkBP,cAAA,CAAe,KAAK1mE,IAAL,CAAUgnE,aAAzB,CAAlB;IADoC;EA3CjB;EAgDvBpG,aAAaz5C,OAAb,EAAsB+/C,UAAtB,EAAkC;IAChC,IAAIA,UAAJ,EAAgB;MACd//C,OAAA,CAAQ9B,YAAR,CAAqB,UAArB,EAAiC,IAAjC;IADc,CAAhB,MAEO;MACL8B,OAAA,CAAQwzC,eAAR,CAAwB,UAAxB;IADK;IAGPxzC,OAAA,CAAQ9B,YAAR,CAAqB,eAArB,EAAsC6hD,UAAtC;EANgC;AA7HoB;AAuIxD,MAAMrK,2BAAN,SAA0CQ,uBAA1C,CAAkE;EAChEnnE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GACJt9C,UAAA,CAAW49C,WAAX,IACC,CAAC59C,UAAA,CAAW/gB,IAAX,CAAgBmnE,aAAjB,IAAkC,CAAC,CAACpmD,UAAA,CAAW/gB,IAAX,CAAgBonE,UAFvD;IAGA,MAAMrmD,UAAN,EAAkB;MAAEs9C;IAAF,CAAlB;EAJsB;EAOxBgJ,sBAAsB/xD,IAAtB,EAA4B9c,GAA5B,EAAiCjD,KAAjC,EAAwC+xE,YAAxC,EAAsD;IACpD,MAAM9oD,OAAA,GAAU,KAAK1U,iBAArB;IACA,WAAWqd,OAAX,IAAsB,KAAKg7C,kBAAL,CACpB7sD,IAAA,CAAKrf,IADe,EAELqf,IAAA,CAAK5K,EAFA,CAAtB,EAGG;MACD,IAAIyc,OAAA,CAAQs7C,UAAZ,EAAwB;QACtBt7C,OAAA,CAAQs7C,UAAR,CAAmBjqE,GAAnB,IAA0BjD,KAA1B;MADsB;MAGxBipB,OAAA,CAAQS,QAAR,CAAiBkI,OAAA,CAAQzc,EAAzB,EAA6B;QAAE,CAAC48D,YAAD,GAAgB/xE;MAAlB,CAA7B;IAJC;EALiD;EAatDgZ,OAAA,EAAS;IACP,MAAMiQ,OAAA,GAAU,KAAK1U,iBAArB;IACA,MAAMY,EAAA,GAAK,KAAK1K,IAAL,CAAU0K,EAArB;IAEA,KAAKshB,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,sBAA7B;IAEA,IAAIuW,OAAA,GAAU,IAAd;IACA,IAAI,KAAKw3C,WAAT,EAAsB;MAIpB,MAAMwC,UAAA,GAAa3iD,OAAA,CAAQI,QAAR,CAAiBlU,EAAjB,EAAqB;QACtCnV,KAAA,EAAO,KAAKyK,IAAL,CAAUonE;MADqB,CAArB,CAAnB;MAGA,IAAIx1D,WAAA,GAAcuvD,UAAA,CAAW5rE,KAAX,IAAoB,EAAtC;MACA,MAAMgyE,MAAA,GAAS/oD,OAAA,CAAQI,QAAR,CAAiBlU,EAAjB,EAAqB;QAClC88D,SAAA,EAAW,KAAKxnE,IAAL,CAAUunE;MADa,CAArB,EAEZC,SAFH;MAGA,IAAID,MAAA,IAAU31D,WAAA,CAAY7c,MAAZ,GAAqBwyE,MAAnC,EAA2C;QACzC31D,WAAA,GAAcA,WAAA,CAAY3W,KAAZ,CAAkB,CAAlB,EAAqBssE,MAArB,CAAd;MADyC;MAI3C,IAAIE,oBAAA,GACFtG,UAAA,CAAWuG,cAAX,IAA6B,KAAK1nE,IAAL,CAAU4R,WAAV,EAAuB/Z,IAAvB,CAA4B,IAA5B,CAA7B,IAAkE,IADpE;MAEA,IAAI4vE,oBAAA,IAAwB,KAAKznE,IAAL,CAAU2nE,IAAtC,EAA4C;QAC1CF,oBAAA,GAAuBA,oBAAA,CAAqBnnE,UAArB,CAAgC,MAAhC,EAAwC,EAAxC,CAAvB;MAD0C;MAI5C,MAAMsnE,WAAA,GAAc;QAClBC,SAAA,EAAWj2D,WADO;QAElB81D,cAAA,EAAgBD,oBAFE;QAGlBK,kBAAA,EAAoB,IAHF;QAIlBC,SAAA,EAAW;MAJO,CAApB;MAOA,IAAI,KAAK/nE,IAAL,CAAU6mE,SAAd,EAAyB;QACvB1/C,OAAA,GAAUtiB,QAAA,CAASugB,aAAT,CAAuB,UAAvB,CAAV;QACA+B,OAAA,CAAQvV,WAAR,GAAsB61D,oBAAA,IAAwB71D,WAA9C;QACA,IAAI,KAAK5R,IAAL,CAAUgoE,WAAd,EAA2B;UACzB7gD,OAAA,CAAQvE,KAAR,CAAcqlD,SAAd,GAA0B,QAA1B;QADyB;MAHJ,CAAzB,MAMO;QACL9gD,OAAA,GAAUtiB,QAAA,CAASugB,aAAT,CAAuB,OAAvB,CAAV;QACA+B,OAAA,CAAQ3M,IAAR,GAAe,MAAf;QACA2M,OAAA,CAAQ9B,YAAR,CAAqB,OAArB,EAA8BoiD,oBAAA,IAAwB71D,WAAtD;QACA,IAAI,KAAK5R,IAAL,CAAUgoE,WAAd,EAA2B;UACzB7gD,OAAA,CAAQvE,KAAR,CAAcslD,SAAd,GAA0B,QAA1B;QADyB;MAJtB;MAQP,IAAI,KAAKloE,IAAL,CAAUm5C,YAAd,EAA4B;QAC1BhyB,OAAA,CAAQiwC,MAAR,GAAiB,IAAjB;MAD0B;MAG5BmF,oBAAA,CAAqB3rD,GAArB,CAAyBuW,OAAzB;MACAA,OAAA,CAAQ9B,YAAR,CAAqB,iBAArB,EAAwC3a,EAAxC;MAEAyc,OAAA,CAAQghD,QAAR,GAAmB,KAAKnoE,IAAL,CAAUooE,QAA7B;MACAjhD,OAAA,CAAQlxB,IAAR,GAAe,KAAK+J,IAAL,CAAUqoE,aAAV,IAA2B,KAAKroE,IAAL,CAAUolE,SAApD;MACAj+C,OAAA,CAAQmhD,QAAR,GAAmBhM,iBAAnB;MAEA,KAAKsE,YAAL,CAAkBz5C,OAAlB,EAA2B,KAAKnnB,IAAL,CAAU2gE,QAArC;MAEA,IAAI4G,MAAJ,EAAY;QACVpgD,OAAA,CAAQohD,SAAR,GAAoBhB,MAApB;MADU;MAIZpgD,OAAA,CAAQ1S,gBAAR,CAAyB,OAAzB,EAAkCH,KAAA,IAAS;QACzCkK,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;UAAEnV,KAAA,EAAO+e,KAAA,CAAM0O,MAAN,CAAaztB;QAAtB,CAArB;QACA,KAAK8xE,qBAAL,CACElgD,OADF,EAEE,OAFF,EAGE7S,KAAA,CAAM0O,MAAN,CAAaztB,KAHf,EAIE,OAJF;QAMAqyE,WAAA,CAAYF,cAAZ,GAA6B,IAA7B;MARyC,CAA3C;MAWAvgD,OAAA,CAAQ1S,gBAAR,CAAyB,WAAzB,EAAsCH,KAAA,IAAS;QAC7C,MAAMuK,YAAA,GAAe,KAAK7e,IAAL,CAAUwoE,iBAAV,IAA+B,EAApD;QACArhD,OAAA,CAAQ5xB,KAAR,GAAgBqyE,WAAA,CAAYC,SAAZ,GAAwBhpD,YAAxC;QACA+oD,WAAA,CAAYF,cAAZ,GAA6B,IAA7B;MAH6C,CAA/C;MAMA,IAAIe,YAAA,GAAen0D,KAAA,IAAS;QAC1B,MAAM;UAAEozD;QAAF,IAAqBE,WAA3B;QACA,IAAIF,cAAA,KAAmB,IAAnB,IAA2BA,cAAA,KAAmB1wE,SAAlD,EAA6D;UAC3Dsd,KAAA,CAAM0O,MAAN,CAAaztB,KAAb,GAAqBmyE,cAArB;QAD2D;QAI7DpzD,KAAA,CAAM0O,MAAN,CAAa0lD,UAAb,GAA0B,CAA1B;MAN0B,CAA5B;MASA,IAAI,KAAK7J,eAAL,IAAwB,KAAK1yD,YAAjC,EAA+C;QAC7Cgb,OAAA,CAAQ1S,gBAAR,CAAyB,OAAzB,EAAkCH,KAAA,IAAS;UACzC,MAAM;YAAE0O;UAAF,IAAa1O,KAAnB;UACA,IAAIszD,WAAA,CAAYC,SAAhB,EAA2B;YACzB7kD,MAAA,CAAOztB,KAAP,GAAeqyE,WAAA,CAAYC,SAA3B;UADyB;UAG3BD,WAAA,CAAYE,kBAAZ,GAAiC9kD,MAAA,CAAOztB,KAAxC;UACAqyE,WAAA,CAAYG,SAAZ,GAAwB,CAAxB;QANyC,CAA3C;QASA5gD,OAAA,CAAQ1S,gBAAR,CAAyB,mBAAzB,EAA8CusD,OAAA,IAAW;UACvD,KAAK6E,wBAAL,CAA8B7E,OAAA,CAAQh+C,MAAtC;UACA,MAAM+9C,OAAA,GAAU;YACdxrE,MAAM+e,KAAN,EAAa;cACXszD,WAAA,CAAYC,SAAZ,GAAwBvzD,KAAA,CAAMgsD,MAAN,CAAa/qE,KAAb,IAAsB,EAA9C;cACAipB,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;gBAAEnV,KAAA,EAAOqyE,WAAA,CAAYC,SAAZ,CAAsBluE,QAAtB;cAAT,CAArB;cACA2a,KAAA,CAAM0O,MAAN,CAAaztB,KAAb,GAAqBqyE,WAAA,CAAYC,SAAjC;YAHW,CADC;YAMdH,eAAepzD,KAAf,EAAsB;cACpB,MAAM;gBAAEozD;cAAF,IAAqBpzD,KAAA,CAAMgsD,MAAjC;cACAsH,WAAA,CAAYF,cAAZ,GAA6BA,cAA7B;cACA,IACEA,cAAA,KAAmB,IAAnB,IACAA,cAAA,KAAmB1wE,SADnB,IAEAsd,KAAA,CAAM0O,MAAN,KAAiBne,QAAA,CAASwzD,aAH5B,EAIE;gBAEA/jD,KAAA,CAAM0O,MAAN,CAAaztB,KAAb,GAAqBmyE,cAArB;cAFA;cAIFlpD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;gBACnBg9D;cADmB,CAArB;YAXoB,CANR;YAqBdiB,SAASr0D,KAAT,EAAgB;cACdA,KAAA,CAAM0O,MAAN,CAAa4lD,iBAAb,CAA+B,GAAGt0D,KAAA,CAAMgsD,MAAN,CAAaqI,QAA/C;YADc,CArBF;YAwBdnB,SAAA,EAAWlzD,KAAA,IAAS;cAClB,MAAM;gBAAEkzD;cAAF,IAAgBlzD,KAAA,CAAMgsD,MAA5B;cACA,MAAM;gBAAEt9C;cAAF,IAAa1O,KAAnB;cACA,IAAIkzD,SAAA,KAAc,CAAlB,EAAqB;gBACnBxkD,MAAA,CAAO23C,eAAP,CAAuB,WAAvB;gBACA;cAFmB;cAKrB33C,MAAA,CAAOqC,YAAP,CAAoB,WAApB,EAAiCmiD,SAAjC;cACA,IAAIjyE,KAAA,GAAQqyE,WAAA,CAAYC,SAAxB;cACA,IAAI,CAACtyE,KAAD,IAAUA,KAAA,CAAMR,MAAN,IAAgByyE,SAA9B,EAAyC;gBACvC;cADuC;cAGzCjyE,KAAA,GAAQA,KAAA,CAAM0F,KAAN,CAAY,CAAZ,EAAeusE,SAAf,CAAR;cACAxkD,MAAA,CAAOztB,KAAP,GAAeqyE,WAAA,CAAYC,SAAZ,GAAwBtyE,KAAvC;cACAipB,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;gBAAEnV;cAAF,CAArB;cAEA,KAAKipE,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;gBAC5DpmB,MAAA,EAAQ,IADoD;gBAE5D24D,MAAA,EAAQ;kBACN51D,EADM;kBAENzU,IAAA,EAAM,WAFA;kBAGNV,KAHM;kBAINszE,UAAA,EAAY,IAJN;kBAKNd,SAAA,EAAW,CALL;kBAMNe,QAAA,EAAU9lD,MAAA,CAAO+lD,cANX;kBAONC,MAAA,EAAQhmD,MAAA,CAAOimD;gBAPT;cAFoD,CAA9D;YAjBkB;UAxBN,CAAhB;UAuDA,KAAKnI,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;QAzDuD,CAAzD;QA8DA75C,OAAA,CAAQ1S,gBAAR,CAAyB,SAAzB,EAAoCH,KAAA,IAAS;UAC3CszD,WAAA,CAAYG,SAAZ,GAAwB,CAAxB;UAGA,IAAIA,SAAA,GAAY,CAAC,CAAjB;UACA,IAAIzzD,KAAA,CAAM9b,GAAN,KAAc,QAAlB,EAA4B;YAC1BuvE,SAAA,GAAY,CAAZ;UAD0B,CAA5B,MAEO,IAAIzzD,KAAA,CAAM9b,GAAN,KAAc,OAAd,IAAyB,CAAC,KAAKwH,IAAL,CAAU6mE,SAAxC,EAAmD;YAIxDkB,SAAA,GAAY,CAAZ;UAJwD,CAAnD,MAKA,IAAIzzD,KAAA,CAAM9b,GAAN,KAAc,KAAlB,EAAyB;YAC9BovE,WAAA,CAAYG,SAAZ,GAAwB,CAAxB;UAD8B;UAGhC,IAAIA,SAAA,KAAc,CAAC,CAAnB,EAAsB;YACpB;UADoB;UAGtB,MAAM;YAAExyE;UAAF,IAAY+e,KAAA,CAAM0O,MAAxB;UACA,IAAI4kD,WAAA,CAAYE,kBAAZ,KAAmCvyE,KAAvC,EAA8C;YAC5C;UAD4C;UAG9CqyE,WAAA,CAAYE,kBAAZ,GAAiCvyE,KAAjC;UAEAqyE,WAAA,CAAYC,SAAZ,GAAwBtyE,KAAxB;UACA,KAAKipE,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;YAC5DpmB,MAAA,EAAQ,IADoD;YAE5D24D,MAAA,EAAQ;cACN51D,EADM;cAENzU,IAAA,EAAM,WAFA;cAGNV,KAHM;cAINszE,UAAA,EAAY,IAJN;cAKNd,SALM;cAMNe,QAAA,EAAUx0D,KAAA,CAAM0O,MAAN,CAAa+lD,cANjB;cAONC,MAAA,EAAQ10D,KAAA,CAAM0O,MAAN,CAAaimD;YAPf;UAFoD,CAA9D;QAzB2C,CAA7C;QAsCA,MAAMC,aAAA,GAAgBT,YAAtB;QACAA,YAAA,GAAe,IAAf;QACAthD,OAAA,CAAQ1S,gBAAR,CAAyB,MAAzB,EAAiCH,KAAA,IAAS;UACxC,IAAI,CAACA,KAAA,CAAM2O,aAAX,EAA0B;YACxB;UADwB;UAG1B,MAAM;YAAE1tB;UAAF,IAAY+e,KAAA,CAAM0O,MAAxB;UACA4kD,WAAA,CAAYC,SAAZ,GAAwBtyE,KAAxB;UACA,IAAIqyE,WAAA,CAAYE,kBAAZ,KAAmCvyE,KAAvC,EAA8C;YAC5C,KAAKipE,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;cAC5DpmB,MAAA,EAAQ,IADoD;cAE5D24D,MAAA,EAAQ;gBACN51D,EADM;gBAENzU,IAAA,EAAM,WAFA;gBAGNV,KAHM;gBAINszE,UAAA,EAAY,IAJN;gBAKNd,SAAA,EAAWH,WAAA,CAAYG,SALjB;gBAMNe,QAAA,EAAUx0D,KAAA,CAAM0O,MAAN,CAAa+lD,cANjB;gBAONC,MAAA,EAAQ10D,KAAA,CAAM0O,MAAN,CAAaimD;cAPf;YAFoD,CAA9D;UAD4C;UAc9CC,aAAA,CAAc50D,KAAd;QApBwC,CAA1C;QAuBA,IAAI,KAAKtU,IAAL,CAAU+gE,OAAV,EAAmBoI,SAAvB,EAAkC;UAChChiD,OAAA,CAAQ1S,gBAAR,CAAyB,aAAzB,EAAwCH,KAAA,IAAS;YAC/CszD,WAAA,CAAYE,kBAAZ,GAAiC,IAAjC;YACA,MAAM;cAAE9nE,IAAF;cAAQgjB;YAAR,IAAmB1O,KAAzB;YACA,MAAM;cAAE/e,KAAF;cAASwzE,cAAT;cAAyBE;YAAzB,IAA0CjmD,MAAhD;YAEA,IAAI8lD,QAAA,GAAWC,cAAf;cACEC,MAAA,GAASC,YADX;YAGA,QAAQ30D,KAAA,CAAM80D,SAAd;cAEE,KAAK,oBAAL;gBAA2B;kBACzB,MAAMt0E,KAAA,GAAQS,KAAA,CACXohC,SADW,CACD,CADC,EACEoyC,cADF,EAEXj0E,KAFW,CAEL,YAFK,CAAd;kBAGA,IAAIA,KAAJ,EAAW;oBACTg0E,QAAA,IAAYh0E,KAAA,CAAM,CAAN,EAASC,MAArB;kBADS;kBAGX;gBAPyB;cAS3B,KAAK,mBAAL;gBAA0B;kBACxB,MAAMD,KAAA,GAAQS,KAAA,CACXohC,SADW,CACDoyC,cADC,EAEXj0E,KAFW,CAEL,YAFK,CAAd;kBAGA,IAAIA,KAAJ,EAAW;oBACTk0E,MAAA,IAAUl0E,KAAA,CAAM,CAAN,EAASC,MAAnB;kBADS;kBAGX;gBAPwB;cAS1B,KAAK,uBAAL;gBACE,IAAIg0E,cAAA,KAAmBE,YAAvB,EAAqC;kBACnCH,QAAA,IAAY,CAAZ;gBADmC;gBAGrC;cACF,KAAK,sBAAL;gBACE,IAAIC,cAAA,KAAmBE,YAAvB,EAAqC;kBACnCD,MAAA,IAAU,CAAV;gBADmC;gBAGrC;YA7BJ;YAiCA10D,KAAA,CAAM6O,cAAN;YACA,KAAKq7C,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;cAC5DpmB,MAAA,EAAQ,IADoD;cAE5D24D,MAAA,EAAQ;gBACN51D,EADM;gBAENzU,IAAA,EAAM,WAFA;gBAGNV,KAHM;gBAIN8zE,MAAA,EAAQrpE,IAAA,IAAQ,EAJV;gBAKN6oE,UAAA,EAAY,KALN;gBAMNC,QANM;gBAONE;cAPM;YAFoD,CAA9D;UA1C+C,CAAjD;QADgC;QA0DlC,KAAK1C,kBAAL,CACEn/C,OADF,EAEE,CACE,CAAC,OAAD,EAAU,OAAV,CADF,EAEE,CAAC,MAAD,EAAS,MAAT,CAFF,EAGE,CAAC,WAAD,EAAc,YAAd,CAHF,EAIE,CAAC,YAAD,EAAe,aAAf,CAJF,EAKE,CAAC,YAAD,EAAe,YAAf,CALF,EAME,CAAC,SAAD,EAAY,UAAZ,CANF,CAFF,EAUE7S,KAAA,IAASA,KAAA,CAAM0O,MAAN,CAAaztB,KAVxB;MAjM6C;MA+M/C,IAAIkzE,YAAJ,EAAkB;QAChBthD,OAAA,CAAQ1S,gBAAR,CAAyB,MAAzB,EAAiCg0D,YAAjC;MADgB;MAIlB,IAAI,KAAKzoE,IAAL,CAAU2nE,IAAd,EAAoB;QAClB,MAAM2B,UAAA,GAAa,KAAKtpE,IAAL,CAAUhE,IAAV,CAAe,CAAf,IAAoB,KAAKgE,IAAL,CAAUhE,IAAV,CAAe,CAAf,CAAvC;QACA,MAAMutE,SAAA,GAAYD,UAAA,GAAa/B,MAA/B;QAEApgD,OAAA,CAAQR,SAAR,CAAkB/V,GAAlB,CAAsB,MAAtB;QACAuW,OAAA,CAAQvE,KAAR,CAAc4mD,aAAd,GAA+B,QAAOD,SAAU,iCAAhD;MALkB;IAvSA,CAAtB,MA8SO;MACLpiD,OAAA,GAAUtiB,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAV;MACA+B,OAAA,CAAQvV,WAAR,GAAsB,KAAK5R,IAAL,CAAUonE,UAAhC;MACAjgD,OAAA,CAAQvE,KAAR,CAAc6mD,aAAd,GAA8B,QAA9B;MACAtiD,OAAA,CAAQvE,KAAR,CAAcw1C,OAAd,GAAwB,YAAxB;IAJK;IAOP,KAAKqO,aAAL,CAAmBt/C,OAAnB;IACA,KAAKq/C,mBAAL,CAAyBr/C,OAAzB;IACA,KAAK+5C,2BAAL,CAAiC/5C,OAAjC;IAEA,KAAK6E,SAAL,CAAe+E,MAAf,CAAsB5J,OAAtB;IACA,OAAO,KAAK6E,SAAZ;EAjUO;AArBuD;AA0VlE,MAAMoxC,gCAAN,SAA+CC,uBAA/C,CAAuE;EACrEnnE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEs9C,YAAA,EAAc,CAAC,CAACt9C,UAAA,CAAW/gB,IAAX,CAAgBm5C;IAAlC,CAAlB;EADsB;AAD6C;AAMvE,MAAM8jB,+BAAN,SAA8CI,uBAA9C,CAAsE;EACpEnnE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEs9C,YAAA,EAAct9C,UAAA,CAAW49C;IAA3B,CAAlB;EADsB;EAIxBpwD,OAAA,EAAS;IACP,MAAMiQ,OAAA,GAAU,KAAK1U,iBAArB;IACA,MAAM9J,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM0K,EAAA,GAAK1K,IAAA,CAAK0K,EAAhB;IACA,IAAInV,KAAA,GAAQipB,OAAA,CAAQI,QAAR,CAAiBlU,EAAjB,EAAqB;MAC/BnV,KAAA,EAAOyK,IAAA,CAAKwiE,WAAL,KAAqBxiE,IAAA,CAAKonE;IADF,CAArB,EAET7xE,KAFH;IAGA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAE7BA,KAAA,GAAQA,KAAA,KAAU,KAAlB;MACAipB,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;QAAEnV;MAAF,CAArB;IAH6B;IAM/B,KAAKy2B,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,wBAA7B,EAAuD,UAAvD;IAEA,MAAMuW,OAAA,GAAUtiB,QAAA,CAASugB,aAAT,CAAuB,OAAvB,CAAhB;IACAm3C,oBAAA,CAAqB3rD,GAArB,CAAyBuW,OAAzB;IACAA,OAAA,CAAQ9B,YAAR,CAAqB,iBAArB,EAAwC3a,EAAxC;IAEAyc,OAAA,CAAQghD,QAAR,GAAmBnoE,IAAA,CAAKooE,QAAxB;IACA,KAAKxH,YAAL,CAAkBz5C,OAAlB,EAA2B,KAAKnnB,IAAL,CAAU2gE,QAArC;IACAx5C,OAAA,CAAQ3M,IAAR,GAAe,UAAf;IACA2M,OAAA,CAAQlxB,IAAR,GAAe+J,IAAA,CAAKqoE,aAAL,IAAsBroE,IAAA,CAAKolE,SAA1C;IACA,IAAI7vE,KAAJ,EAAW;MACT4xB,OAAA,CAAQ9B,YAAR,CAAqB,SAArB,EAAgC,IAAhC;IADS;IAGX8B,OAAA,CAAQ9B,YAAR,CAAqB,aAArB,EAAoCrlB,IAAA,CAAKwiE,WAAzC;IACAr7C,OAAA,CAAQmhD,QAAR,GAAmBhM,iBAAnB;IAEAn1C,OAAA,CAAQ1S,gBAAR,CAAyB,QAAzB,EAAmCH,KAAA,IAAS;MAC1C,MAAM;QAAEre,IAAF;QAAQyzE;MAAR,IAAoBp1D,KAAA,CAAM0O,MAAhC;MACA,WAAW2mD,QAAX,IAAuB,KAAKxH,kBAAL,CAAwBlsE,IAAxB,EAA6CyU,EAA7C,CAAvB,EAAyE;QACvE,MAAMk/D,UAAA,GAAaF,OAAA,IAAWC,QAAA,CAASnH,WAAT,KAAyBxiE,IAAA,CAAKwiE,WAA5D;QACA,IAAImH,QAAA,CAASlH,UAAb,EAAyB;UACvBkH,QAAA,CAASlH,UAAT,CAAoBiH,OAApB,GAA8BE,UAA9B;QADuB;QAGzBprD,OAAA,CAAQS,QAAR,CAAiB0qD,QAAA,CAASj/D,EAA1B,EAA8B;UAAEnV,KAAA,EAAOq0E;QAAT,CAA9B;MALuE;MAOzEprD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;QAAEnV,KAAA,EAAOm0E;MAAT,CAArB;IAT0C,CAA5C;IAYAviD,OAAA,CAAQ1S,gBAAR,CAAyB,WAAzB,EAAsCH,KAAA,IAAS;MAC7C,MAAMuK,YAAA,GAAe7e,IAAA,CAAKwoE,iBAAL,IAA0B,KAA/C;MACAl0D,KAAA,CAAM0O,MAAN,CAAa0mD,OAAb,GAAuB7qD,YAAA,KAAiB7e,IAAA,CAAKwiE,WAA7C;IAF6C,CAA/C;IAKA,IAAI,KAAK3D,eAAL,IAAwB,KAAK1yD,YAAjC,EAA+C;MAC7Cgb,OAAA,CAAQ1S,gBAAR,CAAyB,mBAAzB,EAA8CusD,OAAA,IAAW;QACvD,MAAMD,OAAA,GAAU;UACdxrE,MAAM+e,KAAN,EAAa;YACXA,KAAA,CAAM0O,MAAN,CAAa0mD,OAAb,GAAuBp1D,KAAA,CAAMgsD,MAAN,CAAa/qE,KAAb,KAAuB,KAA9C;YACAipB,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cAAEnV,KAAA,EAAO+e,KAAA,CAAM0O,MAAN,CAAa0mD;YAAtB,CAArB;UAFW;QADC,CAAhB;QAMA,KAAK5I,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAPuD,CAAzD;MAUA,KAAKsF,kBAAL,CACEn/C,OADF,EAEE,CACE,CAAC,QAAD,EAAW,UAAX,CADF,EAEE,CAAC,QAAD,EAAW,QAAX,CAFF,EAGE,CAAC,OAAD,EAAU,OAAV,CAHF,EAIE,CAAC,MAAD,EAAS,MAAT,CAJF,EAKE,CAAC,WAAD,EAAc,YAAd,CALF,EAME,CAAC,YAAD,EAAe,aAAf,CANF,EAOE,CAAC,YAAD,EAAe,YAAf,CAPF,EAQE,CAAC,SAAD,EAAY,UAAZ,CARF,CAFF,EAYE7S,KAAA,IAASA,KAAA,CAAM0O,MAAN,CAAa0mD,OAZxB;IAX6C;IA2B/C,KAAKlD,mBAAL,CAAyBr/C,OAAzB;IACA,KAAK+5C,2BAAL,CAAiC/5C,OAAjC;IAEA,KAAK6E,SAAL,CAAe+E,MAAf,CAAsB5J,OAAtB;IACA,OAAO,KAAK6E,SAAZ;EA7EO;AAL2D;AAsFtE,MAAM+wC,kCAAN,SAAiDM,uBAAjD,CAAyE;EACvEnnE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEs9C,YAAA,EAAct9C,UAAA,CAAW49C;IAA3B,CAAlB;EADsB;EAIxBpwD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,wBAA7B,EAAuD,aAAvD;IACA,MAAM4N,OAAA,GAAU,KAAK1U,iBAArB;IACA,MAAM9J,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM0K,EAAA,GAAK1K,IAAA,CAAK0K,EAAhB;IACA,IAAInV,KAAA,GAAQipB,OAAA,CAAQI,QAAR,CAAiBlU,EAAjB,EAAqB;MAC/BnV,KAAA,EAAOyK,IAAA,CAAKonE,UAAL,KAAoBpnE,IAAA,CAAK6pE;IADD,CAArB,EAETt0E,KAFH;IAGA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAE7BA,KAAA,GAAQA,KAAA,KAAUyK,IAAA,CAAK6pE,WAAvB;MACArrD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;QAAEnV;MAAF,CAArB;IAH6B;IAM/B,MAAM4xB,OAAA,GAAUtiB,QAAA,CAASugB,aAAT,CAAuB,OAAvB,CAAhB;IACAm3C,oBAAA,CAAqB3rD,GAArB,CAAyBuW,OAAzB;IACAA,OAAA,CAAQ9B,YAAR,CAAqB,iBAArB,EAAwC3a,EAAxC;IAEAyc,OAAA,CAAQghD,QAAR,GAAmBnoE,IAAA,CAAKooE,QAAxB;IACA,KAAKxH,YAAL,CAAkBz5C,OAAlB,EAA2B,KAAKnnB,IAAL,CAAU2gE,QAArC;IACAx5C,OAAA,CAAQ3M,IAAR,GAAe,OAAf;IACA2M,OAAA,CAAQlxB,IAAR,GAAe+J,IAAA,CAAKqoE,aAAL,IAAsBroE,IAAA,CAAKolE,SAA1C;IACA,IAAI7vE,KAAJ,EAAW;MACT4xB,OAAA,CAAQ9B,YAAR,CAAqB,SAArB,EAAgC,IAAhC;IADS;IAGX8B,OAAA,CAAQmhD,QAAR,GAAmBhM,iBAAnB;IAEAn1C,OAAA,CAAQ1S,gBAAR,CAAyB,QAAzB,EAAmCH,KAAA,IAAS;MAC1C,MAAM;QAAEre,IAAF;QAAQyzE;MAAR,IAAoBp1D,KAAA,CAAM0O,MAAhC;MACA,WAAW8mD,KAAX,IAAoB,KAAK3H,kBAAL,CAAwBlsE,IAAxB,EAA6CyU,EAA7C,CAApB,EAAsE;QACpE8T,OAAA,CAAQS,QAAR,CAAiB6qD,KAAA,CAAMp/D,EAAvB,EAA2B;UAAEnV,KAAA,EAAO;QAAT,CAA3B;MADoE;MAGtEipB,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;QAAEnV,KAAA,EAAOm0E;MAAT,CAArB;IAL0C,CAA5C;IAQAviD,OAAA,CAAQ1S,gBAAR,CAAyB,WAAzB,EAAsCH,KAAA,IAAS;MAC7C,MAAMuK,YAAA,GAAe7e,IAAA,CAAKwoE,iBAA1B;MACAl0D,KAAA,CAAM0O,MAAN,CAAa0mD,OAAb,GACE7qD,YAAA,KAAiB,IAAjB,IACAA,YAAA,KAAiB7nB,SADjB,IAEA6nB,YAAA,KAAiB7e,IAAA,CAAK6pE,WAHxB;IAF6C,CAA/C;IAQA,IAAI,KAAKhL,eAAL,IAAwB,KAAK1yD,YAAjC,EAA+C;MAC7C,MAAM49D,cAAA,GAAiB/pE,IAAA,CAAK6pE,WAA5B;MACA1iD,OAAA,CAAQ1S,gBAAR,CAAyB,mBAAzB,EAA8CusD,OAAA,IAAW;QACvD,MAAMD,OAAA,GAAU;UACdxrE,KAAA,EAAO+e,KAAA,IAAS;YACd,MAAMo1D,OAAA,GAAUK,cAAA,KAAmBz1D,KAAA,CAAMgsD,MAAN,CAAa/qE,KAAhD;YACA,WAAWu0E,KAAX,IAAoB,KAAK3H,kBAAL,CAAwB7tD,KAAA,CAAM0O,MAAN,CAAa/sB,IAArC,CAApB,EAAgE;cAC9D,MAAM2zE,UAAA,GAAaF,OAAA,IAAWI,KAAA,CAAMp/D,EAAN,KAAaA,EAA3C;cACA,IAAIo/D,KAAA,CAAMrH,UAAV,EAAsB;gBACpBqH,KAAA,CAAMrH,UAAN,CAAiBiH,OAAjB,GAA2BE,UAA3B;cADoB;cAGtBprD,OAAA,CAAQS,QAAR,CAAiB6qD,KAAA,CAAMp/D,EAAvB,EAA2B;gBAAEnV,KAAA,EAAOq0E;cAAT,CAA3B;YAL8D;UAFlD;QADF,CAAhB;QAYA,KAAK9I,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAbuD,CAAzD;MAgBA,KAAKsF,kBAAL,CACEn/C,OADF,EAEE,CACE,CAAC,QAAD,EAAW,UAAX,CADF,EAEE,CAAC,QAAD,EAAW,QAAX,CAFF,EAGE,CAAC,OAAD,EAAU,OAAV,CAHF,EAIE,CAAC,MAAD,EAAS,MAAT,CAJF,EAKE,CAAC,WAAD,EAAc,YAAd,CALF,EAME,CAAC,YAAD,EAAe,aAAf,CANF,EAOE,CAAC,YAAD,EAAe,YAAf,CAPF,EAQE,CAAC,SAAD,EAAY,UAAZ,CARF,CAFF,EAYE7S,KAAA,IAASA,KAAA,CAAM0O,MAAN,CAAa0mD,OAZxB;IAlB6C;IAkC/C,KAAKlD,mBAAL,CAAyBr/C,OAAzB;IACA,KAAK+5C,2BAAL,CAAiC/5C,OAAjC;IAEA,KAAK6E,SAAL,CAAe+E,MAAf,CAAsB5J,OAAtB;IACA,OAAO,KAAK6E,SAAZ;EAjFO;AAL8D;AA0FzE,MAAMkxC,iCAAN,SAAgDR,qBAAhD,CAAsE;EACpExmE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEu9C,YAAA,EAAcv9C,UAAA,CAAW/gB,IAAX,CAAgBmnE;IAAhC,CAAlB;EADsB;EAIxB54D,OAAA,EAAS;IAIP,MAAMyd,SAAA,GAAY,MAAMzd,MAAN,EAAlB;IACAyd,SAAA,CAAUrF,SAAV,CAAoB/V,GAApB,CAAwB,wBAAxB,EAAkD,YAAlD;IAEA,IAAI,KAAK5Q,IAAL,CAAU4lE,eAAd,EAA+B;MAC7B55C,SAAA,CAAUy0C,KAAV,GAAkB,KAAKzgE,IAAL,CAAU4lE,eAA5B;IAD6B;IAI/B,MAAM1B,WAAA,GAAcl4C,SAAA,CAAUg+C,SAA9B;IACA,IAAI,KAAKnL,eAAL,IAAwB,KAAK1yD,YAA7B,IAA6C+3D,WAAjD,EAA8D;MAC5D,KAAKhD,2BAAL,CAAiCgD,WAAjC;MAEAA,WAAA,CAAYzvD,gBAAZ,CAA6B,mBAA7B,EAAkDusD,OAAA,IAAW;QAC3D,KAAKF,yBAAL,CAA+B,EAA/B,EAAmCE,OAAnC;MAD2D,CAA7D;IAH4D;IAQ9D,OAAOh1C,SAAP;EApBO;AAL2D;AA6BtE,MAAMmxC,6BAAN,SAA4CE,uBAA5C,CAAoE;EAClEnnE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEs9C,YAAA,EAAct9C,UAAA,CAAW49C;IAA3B,CAAlB;EADsB;EAIxBpwD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,wBAA7B;IACA,MAAM4N,OAAA,GAAU,KAAK1U,iBAArB;IACA,MAAMY,EAAA,GAAK,KAAK1K,IAAL,CAAU0K,EAArB;IAEA,MAAMy2D,UAAA,GAAa3iD,OAAA,CAAQI,QAAR,CAAiBlU,EAAjB,EAAqB;MACtCnV,KAAA,EAAO,KAAKyK,IAAL,CAAUonE;IADqB,CAArB,CAAnB;IAIA,MAAM6C,aAAA,GAAgBplE,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAAtB;IACAm3C,oBAAA,CAAqB3rD,GAArB,CAAyBq5D,aAAzB;IACAA,aAAA,CAAc5kD,YAAd,CAA2B,iBAA3B,EAA8C3a,EAA9C;IAEAu/D,aAAA,CAAc9B,QAAd,GAAyB,KAAKnoE,IAAL,CAAUooE,QAAnC;IACA,KAAKxH,YAAL,CAAkBqJ,aAAlB,EAAiC,KAAKjqE,IAAL,CAAU2gE,QAA3C;IACAsJ,aAAA,CAAch0E,IAAd,GAAqB,KAAK+J,IAAL,CAAUqoE,aAAV,IAA2B,KAAKroE,IAAL,CAAUolE,SAA1D;IACA6E,aAAA,CAAc3B,QAAd,GAAyBhM,iBAAzB;IAEA,IAAI4N,eAAA,GAAkB,KAAKlqE,IAAL,CAAUmqE,KAAV,IAAmB,KAAKnqE,IAAL,CAAUtL,OAAV,CAAkBK,MAAlB,GAA2B,CAApE;IAEA,IAAI,CAAC,KAAKiL,IAAL,CAAUmqE,KAAf,EAAsB;MAEpBF,aAAA,CAAct4D,IAAd,GAAqB,KAAK3R,IAAL,CAAUtL,OAAV,CAAkBK,MAAvC;MACA,IAAI,KAAKiL,IAAL,CAAUoqE,WAAd,EAA2B;QACzBH,aAAA,CAAcI,QAAd,GAAyB,IAAzB;MADyB;IAHP;IAQtBJ,aAAA,CAAcx1D,gBAAd,CAA+B,WAA/B,EAA4CH,KAAA,IAAS;MACnD,MAAMuK,YAAA,GAAe,KAAK7e,IAAL,CAAUwoE,iBAA/B;MACA,WAAW8B,MAAX,IAAqBL,aAAA,CAAcv1E,OAAnC,EAA4C;QAC1C41E,MAAA,CAAOC,QAAP,GAAkBD,MAAA,CAAO/0E,KAAP,KAAiBspB,YAAnC;MAD0C;IAFO,CAArD;IAQA,WAAWyrD,MAAX,IAAqB,KAAKtqE,IAAL,CAAUtL,OAA/B,EAAwC;MACtC,MAAM81E,aAAA,GAAgB3lE,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAAtB;MACAolD,aAAA,CAAc54D,WAAd,GAA4B04D,MAAA,CAAOG,YAAnC;MACAD,aAAA,CAAcj1E,KAAd,GAAsB+0E,MAAA,CAAO9H,WAA7B;MACA,IAAIrB,UAAA,CAAW5rE,KAAX,CAAiBgE,QAAjB,CAA0B+wE,MAAA,CAAO9H,WAAjC,CAAJ,EAAmD;QACjDgI,aAAA,CAAcnlD,YAAd,CAA2B,UAA3B,EAAuC,IAAvC;QACA6kD,eAAA,GAAkB,KAAlB;MAFiD;MAInDD,aAAA,CAAcl5C,MAAd,CAAqBy5C,aAArB;IARsC;IAWxC,IAAIE,gBAAA,GAAmB,IAAvB;IACA,IAAIR,eAAJ,EAAqB;MACnB,MAAMS,iBAAA,GAAoB9lE,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAA1B;MACAulD,iBAAA,CAAkBp1E,KAAlB,GAA0B,GAA1B;MACAo1E,iBAAA,CAAkBtlD,YAAlB,CAA+B,QAA/B,EAAyC,IAAzC;MACAslD,iBAAA,CAAkBtlD,YAAlB,CAA+B,UAA/B,EAA2C,IAA3C;MACA4kD,aAAA,CAAcW,OAAd,CAAsBD,iBAAtB;MAEAD,gBAAA,GAAmBA,CAAA,KAAM;QACvBC,iBAAA,CAAkB5rD,MAAlB;QACAkrD,aAAA,CAAcv1D,mBAAd,CAAkC,OAAlC,EAA2Cg2D,gBAA3C;QACAA,gBAAA,GAAmB,IAAnB;MAHuB,CAAzB;MAKAT,aAAA,CAAcx1D,gBAAd,CAA+B,OAA/B,EAAwCi2D,gBAAxC;IAZmB;IAerB,MAAM9rD,QAAA,GAAWisD,QAAA,IAAY;MAC3B,MAAM50E,IAAA,GAAO40E,QAAA,GAAW,OAAX,GAAqB,aAAlC;MACA,MAAM;QAAEn2E,OAAF;QAAW21E;MAAX,IAAwBJ,aAA9B;MACA,IAAI,CAACI,QAAL,EAAe;QACb,OAAO31E,OAAA,CAAQo2E,aAAR,KAA0B,CAAC,CAA3B,GACH,IADG,GAEHp2E,OAAA,CAAQA,OAAA,CAAQo2E,aAAhB,EAA+B70E,IAA/B,CAFJ;MADa;MAKf,OAAOwD,KAAA,CAAMtD,SAAN,CAAgBy7B,MAAhB,CACJpd,IADI,CACC9f,OADD,EACU41E,MAAA,IAAUA,MAAA,CAAOC,QAD3B,EAEJjyE,GAFI,CAEAgyE,MAAA,IAAUA,MAAA,CAAOr0E,IAAP,CAFV,CAAP;IAR2B,CAA7B;IAaA,IAAI80E,cAAA,GAAiBnsD,QAAA,CAAwB,KAAxB,CAArB;IAEA,MAAMosD,QAAA,GAAW12D,KAAA,IAAS;MACxB,MAAM5f,OAAA,GAAU4f,KAAA,CAAM0O,MAAN,CAAatuB,OAA7B;MACA,OAAO+E,KAAA,CAAMtD,SAAN,CAAgBmC,GAAhB,CAAoBkc,IAApB,CAAyB9f,OAAzB,EAAkC41E,MAAA,IAAU;QACjD,OAAO;UAAEG,YAAA,EAAcH,MAAA,CAAO14D,WAAvB;UAAoC4wD,WAAA,EAAa8H,MAAA,CAAO/0E;QAAxD,CAAP;MADiD,CAA5C,CAAP;IAFwB,CAA1B;IAOA,IAAI,KAAKspE,eAAL,IAAwB,KAAK1yD,YAAjC,EAA+C;MAC7C89D,aAAA,CAAcx1D,gBAAd,CAA+B,mBAA/B,EAAoDusD,OAAA,IAAW;QAC7D,MAAMD,OAAA,GAAU;UACdxrE,MAAM+e,KAAN,EAAa;YACXo2D,gBAAA;YACA,MAAMn1E,KAAA,GAAQ+e,KAAA,CAAMgsD,MAAN,CAAa/qE,KAA3B;YACA,MAAMqd,MAAA,GAAS,IAAIjC,GAAJ,CAAQlX,KAAA,CAAM6zB,OAAN,CAAc/3B,KAAd,IAAuBA,KAAvB,GAA+B,CAACA,KAAD,CAAvC,CAAf;YACA,WAAW+0E,MAAX,IAAqBL,aAAA,CAAcv1E,OAAnC,EAA4C;cAC1C41E,MAAA,CAAOC,QAAP,GAAkB33D,MAAA,CAAOmD,GAAP,CAAWu0D,MAAA,CAAO/0E,KAAlB,CAAlB;YAD0C;YAG5CipB,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cACnBnV,KAAA,EAAOqpB,QAAA,CAAwB,IAAxB;YADY,CAArB;YAGAmsD,cAAA,GAAiBnsD,QAAA,CAAwB,KAAxB,CAAjB;UAVW,CADC;UAadqsD,kBAAkB32D,KAAlB,EAAyB;YACvB21D,aAAA,CAAcI,QAAd,GAAyB,IAAzB;UADuB,CAbX;UAgBdtrD,OAAOzK,KAAP,EAAc;YACZ,MAAM5f,OAAA,GAAUu1E,aAAA,CAAcv1E,OAA9B;YACA,MAAMuvE,KAAA,GAAQ3vD,KAAA,CAAMgsD,MAAN,CAAavhD,MAA3B;YACArqB,OAAA,CAAQuvE,KAAR,EAAesG,QAAf,GAA0B,KAA1B;YACAN,aAAA,CAAclrD,MAAd,CAAqBklD,KAArB;YACA,IAAIvvE,OAAA,CAAQK,MAAR,GAAiB,CAArB,EAAwB;cACtB,MAAMuC,CAAA,GAAImC,KAAA,CAAMtD,SAAN,CAAgB+0E,SAAhB,CAA0B12D,IAA1B,CACR9f,OADQ,EAER41E,MAAA,IAAUA,MAAA,CAAOC,QAFT,CAAV;cAIA,IAAIjzE,CAAA,KAAM,CAAC,CAAX,EAAc;gBACZ5C,OAAA,CAAQ,CAAR,EAAW61E,QAAX,GAAsB,IAAtB;cADY;YALQ;YASxB/rD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cACnBnV,KAAA,EAAOqpB,QAAA,CAAwB,IAAxB,CADY;cAEnB/M,KAAA,EAAOm5D,QAAA,CAAS12D,KAAT;YAFY,CAArB;YAIAy2D,cAAA,GAAiBnsD,QAAA,CAAwB,KAAxB,CAAjB;UAlBY,CAhBA;UAoCd5L,MAAMsB,KAAN,EAAa;YACX,OAAO21D,aAAA,CAAcl1E,MAAd,KAAyB,CAAhC,EAAmC;cACjCk1E,aAAA,CAAclrD,MAAd,CAAqB,CAArB;YADiC;YAGnCP,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cAAEnV,KAAA,EAAO,IAAT;cAAesc,KAAA,EAAO;YAAtB,CAArB;YACAk5D,cAAA,GAAiBnsD,QAAA,CAAwB,KAAxB,CAAjB;UALW,CApCC;UA2Cdwf,OAAO9pB,KAAP,EAAc;YACZ,MAAM;cAAE2vD,KAAF;cAASwG,YAAT;cAAuBjI;YAAvB,IAAuCluD,KAAA,CAAMgsD,MAAN,CAAaliC,MAA1D;YACA,MAAM+sC,WAAA,GAAclB,aAAA,CAAc37D,QAAd,CAAuB21D,KAAvB,CAApB;YACA,MAAMuG,aAAA,GAAgB3lE,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAAtB;YACAolD,aAAA,CAAc54D,WAAd,GAA4B64D,YAA5B;YACAD,aAAA,CAAcj1E,KAAd,GAAsBitE,WAAtB;YAEA,IAAI2I,WAAJ,EAAiB;cACfA,WAAA,CAAYC,MAAZ,CAAmBZ,aAAnB;YADe,CAAjB,MAEO;cACLP,aAAA,CAAcl5C,MAAd,CAAqBy5C,aAArB;YADK;YAGPhsD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cACnBnV,KAAA,EAAOqpB,QAAA,CAAwB,IAAxB,CADY;cAEnB/M,KAAA,EAAOm5D,QAAA,CAAS12D,KAAT;YAFY,CAArB;YAIAy2D,cAAA,GAAiBnsD,QAAA,CAAwB,KAAxB,CAAjB;UAhBY,CA3CA;UA6Dd/M,MAAMyC,KAAN,EAAa;YACX,MAAM;cAAEzC;YAAF,IAAYyC,KAAA,CAAMgsD,MAAxB;YACA,OAAO2J,aAAA,CAAcl1E,MAAd,KAAyB,CAAhC,EAAmC;cACjCk1E,aAAA,CAAclrD,MAAd,CAAqB,CAArB;YADiC;YAGnC,WAAWw2C,IAAX,IAAmB1jD,KAAnB,EAA0B;cACxB,MAAM;gBAAE44D,YAAF;gBAAgBjI;cAAhB,IAAgCjN,IAAtC;cACA,MAAMiV,aAAA,GAAgB3lE,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAAtB;cACAolD,aAAA,CAAc54D,WAAd,GAA4B64D,YAA5B;cACAD,aAAA,CAAcj1E,KAAd,GAAsBitE,WAAtB;cACAyH,aAAA,CAAcl5C,MAAd,CAAqBy5C,aAArB;YALwB;YAO1B,IAAIP,aAAA,CAAcv1E,OAAd,CAAsBK,MAAtB,GAA+B,CAAnC,EAAsC;cACpCk1E,aAAA,CAAcv1E,OAAd,CAAsB,CAAtB,EAAyB61E,QAAzB,GAAoC,IAApC;YADoC;YAGtC/rD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cACnBnV,KAAA,EAAOqpB,QAAA,CAAwB,IAAxB,CADY;cAEnB/M,KAAA,EAAOm5D,QAAA,CAAS12D,KAAT;YAFY,CAArB;YAIAy2D,cAAA,GAAiBnsD,QAAA,CAAwB,KAAxB,CAAjB;UAnBW,CA7DC;UAkFdysD,QAAQ/2D,KAAR,EAAe;YACb,MAAM+2D,OAAA,GAAU,IAAI16D,GAAJ,CAAQ2D,KAAA,CAAMgsD,MAAN,CAAa+K,OAArB,CAAhB;YACA,WAAWf,MAAX,IAAqBh2D,KAAA,CAAM0O,MAAN,CAAatuB,OAAlC,EAA2C;cACzC41E,MAAA,CAAOC,QAAP,GAAkBc,OAAA,CAAQt1D,GAAR,CAAYu0D,MAAA,CAAOrG,KAAnB,CAAlB;YADyC;YAG3CzlD,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cACnBnV,KAAA,EAAOqpB,QAAA,CAAwB,IAAxB;YADY,CAArB;YAGAmsD,cAAA,GAAiBnsD,QAAA,CAAwB,KAAxB,CAAjB;UARa,CAlFD;UA4Fd+4C,SAASrjD,KAAT,EAAgB;YACdA,KAAA,CAAM0O,MAAN,CAAamlD,QAAb,GAAwB,CAAC7zD,KAAA,CAAMgsD,MAAN,CAAa3I,QAAtC;UADc;QA5FF,CAAhB;QAgGA,KAAKmJ,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAjG6D,CAA/D;MAoGAiJ,aAAA,CAAcx1D,gBAAd,CAA+B,OAA/B,EAAwCH,KAAA,IAAS;QAC/C,MAAMkuD,WAAA,GAAc5jD,QAAA,CAAwB,IAAxB,CAApB;QACAJ,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;UAAEnV,KAAA,EAAOitE;QAAT,CAArB;QAEAluD,KAAA,CAAM6O,cAAN;QAEA,KAAKq7C,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DpmB,MAAA,EAAQ,IADoD;UAE5D24D,MAAA,EAAQ;YACN51D,EADM;YAENzU,IAAA,EAAM,WAFA;YAGNV,KAAA,EAAOw1E,cAHD;YAINO,QAAA,EAAU9I,WAJJ;YAKNqG,UAAA,EAAY,KALN;YAMNd,SAAA,EAAW,CANL;YAONwD,OAAA,EAAS;UAPH;QAFoD,CAA9D;MAN+C,CAAjD;MAoBA,KAAKjF,kBAAL,CACE2D,aADF,EAEE,CACE,CAAC,OAAD,EAAU,OAAV,CADF,EAEE,CAAC,MAAD,EAAS,MAAT,CAFF,EAGE,CAAC,WAAD,EAAc,YAAd,CAHF,EAIE,CAAC,YAAD,EAAe,aAAf,CAJF,EAKE,CAAC,YAAD,EAAe,YAAf,CALF,EAME,CAAC,SAAD,EAAY,UAAZ,CANF,EAOE,CAAC,OAAD,EAAU,QAAV,CAPF,EAQE,CAAC,OAAD,EAAU,UAAV,CARF,CAFF,EAYE31D,KAAA,IAASA,KAAA,CAAM0O,MAAN,CAAaztB,KAZxB;IAzH6C,CAA/C,MAuIO;MACL00E,aAAA,CAAcx1D,gBAAd,CAA+B,OAA/B,EAAwC,UAAUH,KAAV,EAAiB;QACvDkK,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;UAAEnV,KAAA,EAAOqpB,QAAA,CAAwB,IAAxB;QAAT,CAArB;MADuD,CAAzD;IADK;IAMP,IAAI,KAAK5e,IAAL,CAAUmqE,KAAd,EAAqB;MACnB,KAAK1D,aAAL,CAAmBwD,aAAnB;IADmB,CAArB,MAEO;IAIP,KAAKzD,mBAAL,CAAyByD,aAAzB;IACA,KAAK/I,2BAAL,CAAiC+I,aAAjC;IAEA,KAAKj+C,SAAL,CAAe+E,MAAf,CAAsBk5C,aAAtB;IACA,OAAO,KAAKj+C,SAAZ;EA5OO;AALyD;AAqPpE,MAAMsxC,sBAAN,SAAqCc,iBAArC,CAAuD;EACrDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAM;MAAE/gB,IAAF;MAAQgiE;IAAR,IAAqBjhD,UAA3B;IACA,MAAMs9C,YAAA,GAAe,CAAC,EACpBr+D,IAAA,CAAK2hE,QAAL,EAAe5pE,GAAf,IACAiI,IAAA,CAAK6hE,WAAL,EAAkB9pE,GADlB,IAEAiI,IAAA,CAAK8hE,QAAL,EAAe/pE,GAFf,CADF;IAKA,MAAMgpB,UAAN,EAAkB;MAAEs9C;IAAF,CAAlB;IACA,KAAK2D,QAAL,GAAgBA,QAAhB;EARsB;EAWxBzzD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,iBAA7B;IAEA,MAAM8wD,KAAA,GAAQ,IAAI8J,YAAJ,CAAiB;MAC7Bx/C,SAAA,EAAW,KAAKA,SADa;MAE7BvC,KAAA,EAAO,KAAKzpB,IAAL,CAAUypB,KAFY;MAG7Bk4C,QAAA,EAAU,KAAK3hE,IAAL,CAAU2hE,QAHS;MAI7BC,gBAAA,EAAkB,KAAK5hE,IAAL,CAAU4hE,gBAJC;MAK7BC,WAAA,EAAa,KAAK7hE,IAAL,CAAU6hE,WALM;MAM7BC,QAAA,EAAU,KAAK9hE,IAAL,CAAU8hE,QANS;MAO7B9lE,IAAA,EAAM,KAAKgE,IAAL,CAAUhE,IAPa;MAQ7B+lE,UAAA,EAAY,KAAK/hE,IAAL,CAAU+hE,UAAV,IAAwB,IARP;MAS7B/hD,MAAA,EAAQ,KAAKA,MATgB;MAU7BgiD,QAAA,EAAU,KAAKA,QAVc;MAW7BjtC,IAAA,EAAM,KAAK/0B,IAAL,CAAU+0B;IAXa,CAAjB,CAAd;IAcA,MAAM02C,UAAA,GAAa,EAAnB;IACA,WAAWtkD,OAAX,IAAsB,KAAK66C,QAA3B,EAAqC;MACnC76C,OAAA,CAAQu6C,KAAR,GAAgBA,KAAhB;MACA+J,UAAA,CAAW7zE,IAAX,CAAgBuvB,OAAA,CAAQnnB,IAAR,CAAa0K,EAA7B;MACAyc,OAAA,CAAQ67C,gBAAR;IAHmC;IAMrC,KAAKh3C,SAAL,CAAe3G,YAAf,CAA4B,eAA5B,EAA6ComD,UAAA,CAAW5zE,IAAX,CAAgB,GAAhB,CAA7C;IAEA,OAAO,KAAKm0B,SAAZ;EA1BO;AAZ4C;AA0CvD,MAAMw/C,YAAN,CAAmB;EACjB,CAAAE,eAAA,GAAmB,IAAnB;EAEA,CAAAC,SAAA,GAAa,KAAK,CAAA/T,IAAL,CAAW38C,IAAX,CAAgB,IAAhB,CAAb;EAEA,CAAA2wD,SAAA,GAAa,KAAK,CAAA7T,IAAL,CAAW98C,IAAX,CAAgB,IAAhB,CAAb;EAEA,CAAA4wD,WAAA,GAAe,KAAK,CAAA1U,MAAL,CAAal8C,IAAb,CAAkB,IAAlB,CAAf;EAEA,CAAAwO,KAAA,GAAS,IAAT;EAEA,CAAAuC,SAAA,GAAa,IAAb;EAEA,CAAA61C,WAAA,GAAe,IAAf;EAEA,CAAAG,QAAA,GAAY,IAAZ;EAEA,CAAAhiD,MAAA,GAAU,IAAV;EAEA,CAAA+hD,UAAA,GAAc,IAAd;EAEA,CAAA+J,MAAA,GAAU,KAAV;EAEA,CAAApK,KAAA,GAAS,IAAT;EAEA,CAAA1lE,IAAA,GAAQ,IAAR;EAEA,CAAA8lE,QAAA,GAAY,IAAZ;EAEA,CAAAH,QAAA,GAAY,IAAZ;EAEA,CAAAoK,UAAA,GAAc,KAAd;EAEA71E,YAAY;IACV81B,SADU;IAEVvC,KAFU;IAGVu4C,QAHU;IAIVL,QAJU;IAKVC,gBALU;IAMVC,WANU;IAOVC,QAPU;IAQV9hD,MARU;IASVhkB,IATU;IAUV+lE,UAVU;IAWVhtC;EAXU,CAAZ,EAYG;IACD,KAAK,CAAA/I,SAAL,GAAkBA,SAAlB;IACA,KAAK,CAAA21C,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAAE,WAAL,GAAoBA,WAApB;IACA,KAAK,CAAAC,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAA9hD,MAAL,GAAeA,MAAf;IACA,KAAK,CAAAyJ,KAAL,GAAcA,KAAd;IACA,KAAK,CAAAztB,IAAL,GAAaA,IAAb;IACA,KAAK,CAAA+lE,UAAL,GAAmBA,UAAnB;IACA,KAAK,CAAAC,QAAL,GAAiBA,QAAjB;IAEA,MAAMgK,UAAA,GAAa3zC,4BAAA,CAAcC,YAAd,CAA2BspC,gBAA3B,CAAnB;IACA,IAAIoK,UAAJ,EAAgB;MAId,KAAK,CAAAN,eAAL,GAAwB1rD,MAAA,CAAO82C,IAAP,CAAYr2D,GAAZ,CAAgB,wBAAhB,EAA0C;QAChEvB,IAAA,EAAM8sE,UAAA,CAAWC,kBAAX,EAD0D;QAEhEj9D,IAAA,EAAMg9D,UAAA,CAAWE,kBAAX;MAF0D,CAA1C,CAAxB;IAJc;IAUhB,KAAKC,OAAL,GAAenK,QAAA,CAASoK,OAAT,CAAiBzyC,CAAA,IAAKA,CAAA,CAAEopC,yBAAF,EAAtB,CAAf;IAEA,WAAW57C,OAAX,IAAsB,KAAKglD,OAA3B,EAAoC;MAClChlD,OAAA,CAAQ1S,gBAAR,CAAyB,OAAzB,EAAkC,KAAK,CAAAo3D,WAAvC;MACA1kD,OAAA,CAAQ1S,gBAAR,CAAyB,YAAzB,EAAuC,KAAK,CAAAm3D,SAA5C;MACAzkD,OAAA,CAAQ1S,gBAAR,CAAyB,YAAzB,EAAuC,KAAK,CAAAk3D,SAA5C;IAHkC;IASpC,KAAK,CAAA3/C,SAAL,CAAgBorC,MAAhB,GAAyB,IAAzB;IACA,IAAIriC,IAAJ,EAAU;MACR,KAAK,CAAAoiC,MAAL;IADQ;EAlCT;EAoDH5oD,OAAA,EAAS;IACP,IAAI,KAAK,CAAAmzD,KAAT,EAAiB;MACf;IADe;IAIjB,MAAM;MACJ7oD,IAAA,EAAM;QAAEvL;MAAF,CADF;MAEJmB,QAAA,EAAU;QACR0S,OAAA,EAAS;UAAEC,SAAF;UAAaC,UAAb;UAAyBC,KAAzB;UAAgCC;QAAhC;MADD;IAFN,IAKF,KAAK,CAAAvB,MALT;IAMA,MAAM0hD,KAAA,GAAS,KAAK,CAAAA,KAAL,GAAc78D,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAA7B;IACAs8C,KAAA,CAAMp8C,SAAN,GAAkB,OAAlB;IAEA,IAAI,KAAK,CAAAmE,KAAT,EAAiB;MACf,MAAM4iD,SAAA,GAAa3K,KAAA,CAAM9+C,KAAN,CAAY0pD,YAAZ,GAA2BzyE,UAAA,CAAKC,YAAL,CAC5C,GAAG,KAAK,CAAA2vB,KADoC,CAA9C;MAGA,IAEEqG,GAAA,CAAIy8C,QAAJ,CAAa,kBAAb,EAAiC,oCAAjC,CAFF,EAGE;QACA7K,KAAA,CAAM9+C,KAAN,CAAYs8B,eAAZ,GAA+B,sBAAqBmtB,SAAU,cAA9D;MADA,CAHF,MAKO;QAKL,MAAMG,kBAAA,GAAqB,GAA3B;QACA9K,KAAA,CAAM9+C,KAAN,CAAYs8B,eAAZ,GAA8BrlD,UAAA,CAAKC,YAAL,CAC5B,GAAG,KAAK,CAAA2vB,KAAL,CAAYnxB,GAAZ,CAAgBmD,CAAA,IACjBjE,IAAA,CAAKg6C,KAAL,CAAWg7B,kBAAA,IAAsB,MAAM/wE,CAAN,CAAtB,GAAiCA,CAA5C,CADC,CADyB,CAA9B;MANK;IATQ;IAuBjB,MAAMgxE,MAAA,GAAS5nE,QAAA,CAASugB,aAAT,CAAuB,MAAvB,CAAf;IACAqnD,MAAA,CAAOnnD,SAAP,GAAmB,QAAnB;IACA,MAAMm7C,KAAA,GAAQ57D,QAAA,CAASugB,aAAT,CAAuB,IAAvB,CAAd;IACAqnD,MAAA,CAAO17C,MAAP,CAAc0vC,KAAd;IACA,CAAC;MAAEzM,GAAA,EAAKyM,KAAA,CAAMzM,GAAb;MAAkBj8D,GAAA,EAAK0oE,KAAA,CAAM7uD;IAA7B,IAA6C,KAAK,CAAA+vD,QAAnD;IACAD,KAAA,CAAM3wC,MAAN,CAAa07C,MAAb;IAEA,IAAI,KAAK,CAAAf,eAAT,EAA2B;MACzB,MAAM9J,gBAAA,GAAmB/8D,QAAA,CAASugB,aAAT,CAAuB,MAAvB,CAAzB;MACAw8C,gBAAA,CAAiBj7C,SAAjB,CAA2B/V,GAA3B,CAA+B,WAA/B;MACA,KAAK,CAAA86D,eAAL,CAAsBnlE,IAAtB,CAA2BmmE,SAAA,IAAa;QACtC9K,gBAAA,CAAiBhwD,WAAjB,GAA+B86D,SAA/B;MADsC,CAAxC;MAGAD,MAAA,CAAO17C,MAAP,CAAc6wC,gBAAd;IANyB;IAS3B,MAAMC,WAAA,GAAc,KAAK,CAAAA,WAAzB;IACA,MAAMC,QAAA,GAAW,KAAK,CAAAA,QAAtB;IACA,IACEA,QAAA,EAAU/pE,GAAV,KACC,CAAC8pE,WAAA,EAAa9pE,GAAd,IAAqB8pE,WAAA,CAAY9pE,GAAZ,KAAoB+pE,QAAA,CAAS/pE,GAAlD,CAFH,EAGE;MACA40E,mBAAA,CAASp+D,MAAT,CAAgB;QACdq+D,OAAA,EAAS9K,QAAA,CAAS+K,IADJ;QAEd7+D,MAAA,EAAQ,UAFM;QAGdgT,GAAA,EAAK0gD;MAHS,CAAhB;MAKAA,KAAA,CAAMsI,SAAN,CAAgBrjD,SAAhB,CAA0B/V,GAA1B,CAA8B,UAA9B,EAA0C,cAA1C;IANA,CAHF,MAUO;MACL,MAAMk8D,QAAA,GAAW,KAAKC,eAAL,CAAqBlL,WAArB,CAAjB;MACAH,KAAA,CAAM3wC,MAAN,CAAa+7C,QAAb;IAFK;IAKP,IAAIE,aAAA,GAAgB,CAAC,CAAC,KAAK,CAAAjL,UAA3B;IACA,IAAI/lE,IAAA,GAAOgxE,aAAA,GAAgB,KAAK,CAAAjL,UAArB,GAAmC,KAAK,CAAA/lE,IAAnD;IACA,WAAWmrB,OAAX,IAAsB,KAAK,CAAA66C,QAA3B,EAAsC;MACpC,IAAI,CAAChmE,IAAD,IAASnC,UAAA,CAAKoC,SAAL,CAAekrB,OAAA,CAAQnnB,IAAR,CAAahE,IAA5B,EAAkCA,IAAlC,MAA4C,IAAzD,EAA+D;QAC7DA,IAAA,GAAOmrB,OAAA,CAAQnnB,IAAR,CAAahE,IAApB;QACAgxE,aAAA,GAAgB,IAAhB;QACA;MAH6D;IAD3B;IAQtC,MAAMC,cAAA,GAAiBpzE,UAAA,CAAKkC,aAAL,CAAmB,CACxCC,IAAA,CAAK,CAAL,CADwC,EAExCsR,IAAA,CAAK,CAAL,IAAUtR,IAAA,CAAK,CAAL,CAAV,GAAoBsR,IAAA,CAAK,CAAL,CAFoB,EAGxCtR,IAAA,CAAK,CAAL,CAHwC,EAIxCsR,IAAA,CAAK,CAAL,IAAUtR,IAAA,CAAK,CAAL,CAAV,GAAoBsR,IAAA,CAAK,CAAL,CAJoB,CAAnB,CAAvB;IAOA,MAAM4/D,iCAAA,GAAoC,CAA1C;IACA,MAAMtoD,WAAA,GAAcooD,aAAA,GAChBhxE,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAV,GAAoBkxE,iCADJ,GAEhB,CAFJ;IAGA,MAAMC,SAAA,GAAYF,cAAA,CAAe,CAAf,IAAoBroD,WAAtC;IACA,MAAMwoD,QAAA,GAAWH,cAAA,CAAe,CAAf,CAAjB;IAEA,MAAM;MAAErqD;IAAF,IAAY,KAAK,CAAAoJ,SAAvB;IACApJ,KAAA,CAAMyB,IAAN,GAAa,GAAI,OAAO8oD,SAAA,GAAY7rD,KAAZ,CAAR,GAA8BF,SAAU,GAAxD;IACAwB,KAAA,CAAM0B,GAAN,GAAY,GAAI,OAAO8oD,QAAA,GAAW7rD,KAAX,CAAR,GAA6BF,UAAW,GAAvD;IAEA,KAAK,CAAA2K,SAAL,CAAgB+E,MAAhB,CAAuB2wC,KAAvB;EAlGO;EA6GTqL,gBAAgB;IAAEh1E,GAAF;IAAOi8D;EAAP,CAAhB,EAA8B;IAC5B,MAAMx5D,CAAA,GAAIqK,QAAA,CAASugB,aAAT,CAAuB,GAAvB,CAAV;IACA5qB,CAAA,CAAEmsB,SAAF,CAAY/V,GAAZ,CAAgB,cAAhB;IACApW,CAAA,CAAEw5D,GAAF,GAAQA,GAAR;IACA,MAAMqZ,KAAA,GAAQt1E,GAAA,CAAI+wB,KAAJ,CAAU,cAAV,CAAd;IACA,KAAK,IAAIxxB,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKivE,KAAA,CAAMt4E,MAAtB,EAA8BuC,CAAA,GAAI8G,EAAvC,EAA2C,EAAE9G,CAA7C,EAAgD;MAC9C,MAAMqkE,IAAA,GAAO0R,KAAA,CAAM/1E,CAAN,CAAb;MACAkD,CAAA,CAAEu2B,MAAF,CAASlsB,QAAA,CAAS+2D,cAAT,CAAwBD,IAAxB,CAAT;MACA,IAAIrkE,CAAA,GAAI8G,EAAA,GAAK,CAAb,EAAgB;QACd5D,CAAA,CAAEu2B,MAAF,CAASlsB,QAAA,CAASugB,aAAT,CAAuB,IAAvB,CAAT;MADc;IAH8B;IAOhD,OAAO5qB,CAAP;EAZ4B;EAkB9B,CAAA28D,OAAA,EAAU;IACR,KAAK,CAAA2U,MAAL,GAAe,CAAC,KAAK,CAAAA,MAArB;IACA,IAAI,KAAK,CAAAA,MAAT,EAAkB;MAChB,KAAK,CAAA/T,IAAL;MACA,KAAK,CAAA/rC,SAAL,CAAgBvX,gBAAhB,CAAiC,OAAjC,EAA0C,KAAK,CAAAo3D,WAA/C;IAFgB,CAAlB,MAGO;MACL,KAAK,CAAAjU,IAAL;MACA,KAAK,CAAA5rC,SAAL,CAAgBtX,mBAAhB,CAAoC,OAApC,EAA6C,KAAK,CAAAm3D,WAAlD;IAFK;EALC;EAcV,CAAA9T,KAAA,EAAQ;IACN,IAAI,CAAC,KAAK,CAAA2J,KAAV,EAAkB;MAChB,KAAKnzD,MAAL;IADgB;IAGlB,IAAI,CAAC,KAAKgsC,SAAV,EAAqB;MACnB,KAAK,CAAAvuB,SAAL,CAAgBorC,MAAhB,GAAyB,KAAzB;MACA,KAAK,CAAAprC,SAAL,CAAgBpJ,KAAhB,CAAsBjC,MAAtB,GACE+X,QAAA,CAAS,KAAK,CAAA1M,SAAL,CAAgBpJ,KAAhB,CAAsBjC,MAA/B,IAAyC,IAD3C;IAFmB,CAArB,MAIO,IAAI,KAAK,CAAAmrD,MAAT,EAAkB;MACvB,KAAK,CAAA9/C,SAAL,CAAgBrF,SAAhB,CAA0B/V,GAA1B,CAA8B,SAA9B;IADuB;EARnB;EAgBR,CAAAgnD,KAAA,EAAQ;IACN,KAAK,CAAA5rC,SAAL,CAAgBrF,SAAhB,CAA0B5H,MAA1B,CAAiC,SAAjC;IACA,IAAI,KAAK,CAAA+sD,MAAT,EAAkB;MAChB;IADgB;IAGlB,KAAK,CAAA9/C,SAAL,CAAgBorC,MAAhB,GAAyB,IAAzB;IACA,KAAK,CAAAprC,SAAL,CAAgBpJ,KAAhB,CAAsBjC,MAAtB,GACE+X,QAAA,CAAS,KAAK,CAAA1M,SAAL,CAAgBpJ,KAAhB,CAAsBjC,MAA/B,IAAyC,IAD3C;EANM;EAURmiD,UAAA,EAAY;IACV,KAAK,CAAAiJ,UAAL,GAAmB,KAAKxxB,SAAxB;IACA,IAAI,CAAC,KAAK,CAAAwxB,UAAV,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAA//C,SAAL,CAAgBorC,MAAhB,GAAyB,IAAzB;EALU;EAQZyL,UAAA,EAAY;IACV,IAAI,CAAC,KAAK,CAAAkJ,UAAV,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,UAAL,GAAmB,KAAnB;IACA,KAAK,CAAA//C,SAAL,CAAgBorC,MAAhB,GAAyB,KAAzB;EALU;EAQZ,IAAI7c,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAK,CAAAvuB,SAAL,CAAgBorC,MAAhB,KAA2B,KAAlC;EADc;AAxRC;AA6RnB,MAAMyE,yBAAN,SAAwCuC,iBAAxC,CAA0D;EACxDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;IACA,KAAK1sD,WAAL,GAAmBmP,UAAA,CAAW/gB,IAAX,CAAgB4R,WAAnC;IACA,KAAK+mD,oBAAL,GAA4B7yE,0BAAA,CAAqBE,QAAjD;EATsB;EAYxBuoB,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,oBAA7B;IAEA,IAAI,KAAKgB,WAAT,EAAsB;MACpB,MAAM8nD,OAAA,GAAU70D,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAhB;MACAs0C,OAAA,CAAQ/yC,SAAR,CAAkB/V,GAAlB,CAAsB,uBAAtB;MACA8oD,OAAA,CAAQr0C,YAAR,CAAqB,MAArB,EAA6B,SAA7B;MACA,WAAWs2C,IAAX,IAAmB,KAAK/pD,WAAxB,EAAqC;QACnC,MAAM07D,QAAA,GAAWzoE,QAAA,CAASugB,aAAT,CAAuB,MAAvB,CAAjB;QACAkoD,QAAA,CAAS17D,WAAT,GAAuB+pD,IAAvB;QACAjC,OAAA,CAAQ3oC,MAAR,CAAeu8C,QAAf;MAHmC;MAKrC,KAAKthD,SAAL,CAAe+E,MAAf,CAAsB2oC,OAAtB;IAToB;IAYtB,IAAI,CAAC,KAAK15D,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAGzB,OAAO,KAAKz1C,SAAZ;EAlBO;AAb+C;AA5oE1DvnC,iCAAA,GAAAo3E,yBAAA;AA+qEA,MAAM0B,qBAAN,SAAoCa,iBAApC,CAAsD;EACpD,CAAAzC,IAAA,GAAQ,IAAR;EAEAzlE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxB/vD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,gBAA7B;IAKA,MAAM5Q,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEsb,KAAF;MAASC;IAAT,IAAoBihD,WAAA,CAAYx8D,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM60B,GAAA,GAAM,KAAK+tC,UAAL,CAAgBrmE,MAAhB,CACV+iB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAQA,MAAMogD,IAAA,GAAQ,KAAK,CAAAA,IAAL,GAAa,KAAKiD,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAA3B;IACAu2C,IAAA,CAAKt2C,YAAL,CAAkB,IAAlB,EAAwBrlB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKutE,eAAL,CAAqB,CAArB,CAAvC;IACA5R,IAAA,CAAKt2C,YAAL,CAAkB,IAAlB,EAAwBrlB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKutE,eAAL,CAAqB,CAArB,CAAvC;IACA5R,IAAA,CAAKt2C,YAAL,CAAkB,IAAlB,EAAwBrlB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKutE,eAAL,CAAqB,CAArB,CAAvC;IACA5R,IAAA,CAAKt2C,YAAL,CAAkB,IAAlB,EAAwBrlB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAegE,IAAA,CAAKutE,eAAL,CAAqB,CAArB,CAAvC;IAGA5R,IAAA,CAAKt2C,YAAL,CAAkB,cAAlB,EAAkCrlB,IAAA,CAAKs/D,WAAL,CAAiBhkD,KAAjB,IAA0B,CAA5D;IACAqgD,IAAA,CAAKt2C,YAAL,CAAkB,QAAlB,EAA4B,aAA5B;IACAs2C,IAAA,CAAKt2C,YAAL,CAAkB,MAAlB,EAA0B,aAA1B;IAEAwL,GAAA,CAAIE,MAAJ,CAAW4qC,IAAX;IACA,KAAK3vC,SAAL,CAAe+E,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7wB,IAAA,CAAKm/D,QAAV,EAAoB;MAClB,KAAKsC,YAAL;IADkB;IAIpB,OAAO,KAAKz1C,SAAZ;EApCO;EAuCT+2C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAApH,IAAZ;EAD0B;EAI5BqH,iBAAA,EAAmB;IACjB,KAAKh3C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,eAA7B;EADiB;AAxDiC;AA6DtD,MAAM4sD,uBAAN,SAAsCY,iBAAtC,CAAwD;EACtD,CAAAoP,MAAA,GAAU,IAAV;EAEAt3E,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxB/vD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,kBAA7B;IAKA,MAAM5Q,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEsb,KAAF;MAASC;IAAT,IAAoBihD,WAAA,CAAYx8D,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM60B,GAAA,GAAM,KAAK+tC,UAAL,CAAgBrmE,MAAhB,CACV+iB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IASA,MAAMgkD,WAAA,GAAcv/D,IAAA,CAAKs/D,WAAL,CAAiBhkD,KAArC;IACA,MAAMkyD,MAAA,GAAU,KAAK,CAAAA,MAAL,GAAe,KAAK5O,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAA/B;IACAooD,MAAA,CAAOnoD,YAAP,CAAoB,GAApB,EAAyBk6C,WAAA,GAAc,CAAvC;IACAiO,MAAA,CAAOnoD,YAAP,CAAoB,GAApB,EAAyBk6C,WAAA,GAAc,CAAvC;IACAiO,MAAA,CAAOnoD,YAAP,CAAoB,OAApB,EAA6B/J,KAAA,GAAQikD,WAArC;IACAiO,MAAA,CAAOnoD,YAAP,CAAoB,QAApB,EAA8B9J,MAAA,GAASgkD,WAAvC;IAGAiO,MAAA,CAAOnoD,YAAP,CAAoB,cAApB,EAAoCk6C,WAAA,IAAe,CAAnD;IACAiO,MAAA,CAAOnoD,YAAP,CAAoB,QAApB,EAA8B,aAA9B;IACAmoD,MAAA,CAAOnoD,YAAP,CAAoB,MAApB,EAA4B,aAA5B;IAEAwL,GAAA,CAAIE,MAAJ,CAAWy8C,MAAX;IACA,KAAKxhD,SAAL,CAAe+E,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7wB,IAAA,CAAKm/D,QAAV,EAAoB;MAClB,KAAKsC,YAAL;IADkB;IAIpB,OAAO,KAAKz1C,SAAZ;EAtCO;EAyCT+2C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAyK,MAAZ;EAD0B;EAI5BxK,iBAAA,EAAmB;IACjB,KAAKh3C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,eAA7B;EADiB;AA1DmC;AA+DxD,MAAM6sD,uBAAN,SAAsCW,iBAAtC,CAAwD;EACtD,CAAAqP,MAAA,GAAU,IAAV;EAEAv3E,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxB/vD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,kBAA7B;IAKA,MAAM5Q,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEsb,KAAF;MAASC;IAAT,IAAoBihD,WAAA,CAAYx8D,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM60B,GAAA,GAAM,KAAK+tC,UAAL,CAAgBrmE,MAAhB,CACV+iB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IASA,MAAMgkD,WAAA,GAAcv/D,IAAA,CAAKs/D,WAAL,CAAiBhkD,KAArC;IACA,MAAMmyD,MAAA,GAAU,KAAK,CAAAA,MAAL,GACd,KAAK7O,UAAL,CAAgBx5C,aAAhB,CAA8B,aAA9B,CADF;IAEAqoD,MAAA,CAAOpoD,YAAP,CAAoB,IAApB,EAA0B/J,KAAA,GAAQ,CAAlC;IACAmyD,MAAA,CAAOpoD,YAAP,CAAoB,IAApB,EAA0B9J,MAAA,GAAS,CAAnC;IACAkyD,MAAA,CAAOpoD,YAAP,CAAoB,IAApB,EAA0B/J,KAAA,GAAQ,CAAR,GAAYikD,WAAA,GAAc,CAApD;IACAkO,MAAA,CAAOpoD,YAAP,CAAoB,IAApB,EAA0B9J,MAAA,GAAS,CAAT,GAAagkD,WAAA,GAAc,CAArD;IAGAkO,MAAA,CAAOpoD,YAAP,CAAoB,cAApB,EAAoCk6C,WAAA,IAAe,CAAnD;IACAkO,MAAA,CAAOpoD,YAAP,CAAoB,QAApB,EAA8B,aAA9B;IACAooD,MAAA,CAAOpoD,YAAP,CAAoB,MAApB,EAA4B,aAA5B;IAEAwL,GAAA,CAAIE,MAAJ,CAAW08C,MAAX;IACA,KAAKzhD,SAAL,CAAe+E,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7wB,IAAA,CAAKm/D,QAAV,EAAoB;MAClB,KAAKsC,YAAL;IADkB;IAIpB,OAAO,KAAKz1C,SAAZ;EAvCO;EA0CT+2C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAA0K,MAAZ;EAD0B;EAI5BzK,iBAAA,EAAmB;IACjB,KAAKh3C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,eAA7B;EADiB;AA3DmC;AAgExD,MAAM8sD,yBAAN,SAAwCU,iBAAxC,CAA0D;EACxD,CAAAsP,QAAA,GAAY,IAAZ;EAEAx3E,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;IAEA,KAAKqP,kBAAL,GAA0B,oBAA1B;IACA,KAAKC,cAAL,GAAsB,cAAtB;EAVsB;EAaxBr/D,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,KAAK+8D,kBAAlC;IAKA,MAAM3tE,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEsb,KAAF;MAASC;IAAT,IAAoBihD,WAAA,CAAYx8D,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM60B,GAAA,GAAM,KAAK+tC,UAAL,CAAgBrmE,MAAhB,CACV+iB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAUA,IAAIwpB,MAAA,GAAS,EAAb;IACA,WAAW8oC,UAAX,IAAyB7tE,IAAA,CAAK8tE,QAA9B,EAAwC;MACtC,MAAMjsD,CAAA,GAAIgsD,UAAA,CAAWhsD,CAAX,GAAe7hB,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAzB;MACA,MAAM8lB,CAAA,GAAI9hB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAe6xE,UAAA,CAAW/rD,CAApC;MACAijB,MAAA,CAAOntC,IAAP,CAAYiqB,CAAA,GAAI,GAAJ,GAAUC,CAAtB;IAHsC;IAKxCijB,MAAA,GAASA,MAAA,CAAOltC,IAAP,CAAY,GAAZ,CAAT;IAEA,MAAM61E,QAAA,GAAY,KAAK,CAAAA,QAAL,GAAiB,KAAK9O,UAAL,CAAgBx5C,aAAhB,CACjC,KAAKwoD,cAD4B,CAAnC;IAGAF,QAAA,CAASroD,YAAT,CAAsB,QAAtB,EAAgC0f,MAAhC;IAGA2oC,QAAA,CAASroD,YAAT,CAAsB,cAAtB,EAAsCrlB,IAAA,CAAKs/D,WAAL,CAAiBhkD,KAAjB,IAA0B,CAAhE;IACAoyD,QAAA,CAASroD,YAAT,CAAsB,QAAtB,EAAgC,aAAhC;IACAqoD,QAAA,CAASroD,YAAT,CAAsB,MAAtB,EAA8B,aAA9B;IAEAwL,GAAA,CAAIE,MAAJ,CAAW28C,QAAX;IACA,KAAK1hD,SAAL,CAAe+E,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7wB,IAAA,CAAKm/D,QAAV,EAAoB;MAClB,KAAKsC,YAAL,CAAkBiM,QAAlB,EAA4B1tE,IAA5B;IADkB;IAIpB,OAAO,KAAKgsB,SAAZ;EA7CO;EAgDT+2C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAA2K,QAAZ;EAD0B;EAI5B1K,iBAAA,EAAmB;IACjB,KAAKh3C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,eAA7B;EADiB;AApEqC;AAyE1D,MAAMitD,wBAAN,SAAuCH,yBAAvC,CAAiE;EAC/DxnE,YAAY6qB,UAAZ,EAAwB;IAEtB,MAAMA,UAAN;IAEA,KAAK4sD,kBAAL,GAA0B,mBAA1B;IACA,KAAKC,cAAL,GAAsB,aAAtB;EALsB;AADuC;AAUjE,MAAMjQ,sBAAN,SAAqCS,iBAArC,CAAuD;EACrDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxB/vD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,iBAA7B;IAEA,IAAI,CAAC,KAAK5Q,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAGzB,OAAO,KAAKz1C,SAAZ;EANO;AAX4C;AAqBvD,MAAM4xC,oBAAN,SAAmCQ,iBAAnC,CAAqD;EACnD,CAAA2P,SAAA,GAAa,EAAb;EAEA73E,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;IAEA,KAAKqP,kBAAL,GAA0B,eAA1B;IAIA,KAAKC,cAAL,GAAsB,cAAtB;IACA,KAAKjV,oBAAL,GAA4B7yE,0BAAA,CAAqBI,GAAjD;EAdsB;EAiBxBqoB,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,KAAK+8D,kBAAlC;IAIA,MAAM3tE,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEsb,KAAF;MAASC;IAAT,IAAoBihD,WAAA,CAAYx8D,IAAA,CAAKhE,IAAjB,CAA1B;IACA,MAAM60B,GAAA,GAAM,KAAK+tC,UAAL,CAAgBrmE,MAAhB,CACV+iB,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAMA,WAAWyyD,OAAX,IAAsBhuE,IAAA,CAAKiuE,QAA3B,EAAqC;MAKnC,IAAIlpC,MAAA,GAAS,EAAb;MACA,WAAW8oC,UAAX,IAAyBG,OAAzB,EAAkC;QAChC,MAAMnsD,CAAA,GAAIgsD,UAAA,CAAWhsD,CAAX,GAAe7hB,IAAA,CAAKhE,IAAL,CAAU,CAAV,CAAzB;QACA,MAAM8lB,CAAA,GAAI9hB,IAAA,CAAKhE,IAAL,CAAU,CAAV,IAAe6xE,UAAA,CAAW/rD,CAApC;QACAijB,MAAA,CAAOntC,IAAP,CAAY,GAAGiqB,CAAE,IAAGC,CAAR,EAAZ;MAHgC;MAKlCijB,MAAA,GAASA,MAAA,CAAOltC,IAAP,CAAY,GAAZ,CAAT;MAEA,MAAM61E,QAAA,GAAW,KAAK9O,UAAL,CAAgBx5C,aAAhB,CAA8B,KAAKwoD,cAAnC,CAAjB;MACA,KAAK,CAAAG,SAAL,CAAgBn2E,IAAhB,CAAqB81E,QAArB;MACAA,QAAA,CAASroD,YAAT,CAAsB,QAAtB,EAAgC0f,MAAhC;MAGA2oC,QAAA,CAASroD,YAAT,CAAsB,cAAtB,EAAsCrlB,IAAA,CAAKs/D,WAAL,CAAiBhkD,KAAjB,IAA0B,CAAhE;MACAoyD,QAAA,CAASroD,YAAT,CAAsB,QAAtB,EAAgC,aAAhC;MACAqoD,QAAA,CAASroD,YAAT,CAAsB,MAAtB,EAA8B,aAA9B;MAIA,IAAI,CAACrlB,IAAA,CAAKm/D,QAAV,EAAoB;QAClB,KAAKsC,YAAL,CAAkBiM,QAAlB,EAA4B1tE,IAA5B;MADkB;MAIpB6wB,GAAA,CAAIE,MAAJ,CAAW28C,QAAX;IA5BmC;IA+BrC,KAAK1hD,SAAL,CAAe+E,MAAf,CAAsBF,GAAtB;IACA,OAAO,KAAK7E,SAAZ;EA7CO;EAgDT+2C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAgL,SAAZ;EAD0B;EAI5B/K,iBAAA,EAAmB;IACjB,KAAKh3C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,eAA7B;EADiB;AAxEgC;AAn9ErDnsB,4BAAA,GAAAm5E,oBAAA;AAgiFA,MAAME,0BAAN,SAAyCM,iBAAzC,CAA2D;EACzDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAChBs9C,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBhwD,OAAA,EAAS;IACP,IAAI,CAAC,KAAKvO,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAIzB,IAAI,KAAKxC,cAAT,EAAyB;MACvB,OAAO,KAAKgD,qBAAL,CAA2B,qBAA3B,CAAP;IADuB;IAIzB,KAAKj2C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKob,SAAZ;EAVO;AAfgD;AA6B3D,MAAM+xC,0BAAN,SAAyCK,iBAAzC,CAA2D;EACzDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAChBs9C,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBhwD,OAAA,EAAS;IACP,IAAI,CAAC,KAAKvO,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAIzB,IAAI,KAAKxC,cAAT,EAAyB;MACvB,OAAO,KAAKgD,qBAAL,CAA2B,qBAA3B,CAAP;IADuB;IAIzB,KAAKj2C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKob,SAAZ;EAVO;AAfgD;AA6B3D,MAAMgyC,yBAAN,SAAwCI,iBAAxC,CAA0D;EACxDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAChBs9C,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBhwD,OAAA,EAAS;IACP,IAAI,CAAC,KAAKvO,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAIzB,IAAI,KAAKxC,cAAT,EAAyB;MACvB,OAAO,KAAKgD,qBAAL,CAA2B,oBAA3B,CAAP;IADuB;IAIzB,KAAKj2C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,oBAA7B;IACA,OAAO,KAAKob,SAAZ;EAVO;AAf+C;AA6B1D,MAAMiyC,0BAAN,SAAyCG,iBAAzC,CAA2D;EACzDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAChBs9C,YADgB;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EAPsB;EAcxBhwD,OAAA,EAAS;IACP,IAAI,CAAC,KAAKvO,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAIzB,IAAI,KAAKxC,cAAT,EAAyB;MACvB,OAAO,KAAKgD,qBAAL,CAA2B,qBAA3B,CAAP;IADuB;IAIzB,KAAKj2C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKob,SAAZ;EAVO;AAfgD;AA6B3D,MAAMkyC,sBAAN,SAAqCE,iBAArC,CAAuD;EACrDloE,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMs9C,YAAA,GAAe,CAAC,EACpBt9C,UAAA,CAAW/gB,IAAX,CAAgBm/D,QAAhB,IACAp+C,UAAA,CAAW/gB,IAAX,CAAgB2hE,QAAhB,EAA0B5pE,GAD1B,IAEAgpB,UAAA,CAAW/gB,IAAX,CAAgB6hE,WAAhB,EAA6B9pE,GAF7B,IAGAgpB,UAAA,CAAW/gB,IAAX,CAAgB8hE,QAAhB,EAA0B/pE,GAH1B,CADF;IAMA,MAAMgpB,UAAN,EAAkB;MAAEs9C,YAAF;MAAgBC,YAAA,EAAc;IAA9B,CAAlB;EAPsB;EAUxB/vD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,iBAA7B;IAEA,IAAI,CAAC,KAAK5Q,IAAL,CAAUm/D,QAAf,EAAyB;MACvB,KAAKsC,YAAL;IADuB;IAGzB,OAAO,KAAKz1C,SAAZ;EANO;AAX4C;AAqBvD,MAAMmyC,+BAAN,SAA8CC,iBAA9C,CAAgE;EAC9D,CAAA+N,OAAA,GAAW,IAAX;EAEAj2E,YAAY6qB,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEs9C,YAAA,EAAc;IAAhB,CAAlB;IAEA,MAAM;MAAE5iD,QAAF;MAAYi+C;IAAZ,IAAwB,KAAK15D,IAAL,CAAUkuE,IAAxC;IACA,KAAKzyD,QAAL,GAAgB,IAAAsb,iCAAA,EAAmBtb,QAAnB,EAAmD,IAAnD,CAAhB;IACA,KAAKi+C,OAAL,GAAeA,OAAf;IAEA,KAAK8E,WAAL,CAAiB/zC,QAAjB,EAA2BsD,QAA3B,CAAoC,0BAApC,EAAgE;MAC9DpmB,MAAA,EAAQ,IADsD;MAE9D8T,QAF8D;MAG9Di+C;IAH8D,CAAhE;EAPsB;EAcxBnrD,OAAA,EAAS;IACP,KAAKyd,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,0BAA7B;IAEA,IAAIu7D,OAAJ;IACA,IAAI,KAAKnsE,IAAL,CAAUmnE,aAAd,EAA6B;MAC3BgF,OAAA,GAAUtnE,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAV;IAD2B,CAA7B,MAEO;MAML+mD,OAAA,GAAUtnE,QAAA,CAASugB,aAAT,CAAuB,KAAvB,CAAV;MACA+mD,OAAA,CAAQrpE,GAAR,GAAc,GAAG,KAAK47D,kBAAmB,cACvC,aAAa5nC,IAAb,CAAkB,KAAK92B,IAAL,CAAU/J,IAA5B,IAAoC,WAApC,GAAkD,SACnD,MAFD;IAPK;IAWPk2E,OAAA,CAAQxlD,SAAR,CAAkB/V,GAAlB,CAAsB,kBAAtB;IACAu7D,OAAA,CAAQ13D,gBAAR,CAAyB,UAAzB,EAAqC,KAAK05D,SAAL,CAAelzD,IAAf,CAAoB,IAApB,CAArC;IACA,KAAK,CAAAkxD,OAAL,GAAgBA,OAAhB;IAEA,IACE,CAAC,KAAKnsE,IAAL,CAAUm/D,QAAX,KACC,KAAKn/D,IAAL,CAAU2hE,QAAV,EAAoB5pE,GAApB,IACC,KAAKiI,IAAL,CAAU6hE,WAAV,EAAuB9pE,GADxB,IAEC,KAAKiI,IAAL,CAAU8hE,QAFX,CAFH,EAKE;MACA,KAAKL,YAAL;IADA;IAIF,KAAKz1C,SAAL,CAAe+E,MAAf,CAAsBo7C,OAAtB;IACA,OAAO,KAAKngD,SAAZ;EA/BO;EAkCT+2C,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAoJ,OAAZ;EAD0B;EAI5BnJ,iBAAA,EAAmB;IACjB,KAAKh3C,SAAL,CAAerF,SAAf,CAAyB/V,GAAzB,CAA6B,eAA7B;EADiB;EAUnBu9D,UAAA,EAAY;IACV,KAAK1P,eAAL,EAAsBkG,kBAAtB,CACE,KAAK34C,SADP,EAEE,KAAK0tC,OAFP,EAGE,KAAKj+C,QAHP;EADU;AAjEkD;AAiGhE,MAAM2yD,eAAN,CAAsB;EACpB,CAAAlY,oBAAA,GAAwB,IAAxB;EAEA,CAAArnD,mBAAA,GAAuB,IAAvB;EAEA,CAAAw/D,mBAAA,GAAuB,IAAIhuE,GAAJ,EAAvB;EAEAnK,YAAY;IACV8qB,GADU;IAEVk1C,oBAFU;IAGVrnD,mBAHU;IAIVioD,IAJU;IAKVj+C,IALU;IAMVpK;EANU,CAAZ,EAOG;IACD,KAAKuS,GAAL,GAAWA,GAAX;IACA,KAAK,CAAAk1C,oBAAL,GAA6BA,oBAA7B;IACA,KAAK,CAAArnD,mBAAL,GAA4BA,mBAA5B;IACA,KAAKioD,IAAL,GAAYA,IAAZ;IACA,KAAKj+C,IAAL,GAAYA,IAAZ;IACA,KAAKpK,QAAL,GAAgBA,QAAhB;IACA,KAAKkS,MAAL,GAAc,CAAd;IAME,MAAM;MAAE2tD;IAAF,IAAe3tE,mBAAA,CAAQ,EAAR,CAArB;IACA,KAAKm2D,IAAL,KAAcwX,QAAd;EAdD;EA6BH,CAAAC,cAAepnD,OAAf,EAAwBzc,EAAxB,EAA4B;IAC1B,MAAM8jE,cAAA,GAAiBrnD,OAAA,CAAQsnD,UAAR,IAAsBtnD,OAA7C;IACAqnD,cAAA,CAAe9jE,EAAf,GAAoB,GAAGmlB,+BAAH,GAAsBnlB,EAAtB,EAApB;IAEA,KAAKsW,GAAL,CAAS+P,MAAT,CAAgB5J,OAAhB;IACA,KAAK,CAAA+uC,oBAAL,EAA4BsC,gBAA5B,CACE,KAAKx3C,GADP,EAEEmG,OAFF,EAGEqnD,cAHF,EAIsB,KAJtB;EAL0B;EAmB5B,MAAMjgE,MAANA,CAAa9L,MAAb,EAAqB;IACnB,MAAM;MAAEisE;IAAF,IAAkBjsE,MAAxB;IACA,MAAMgqB,KAAA,GAAQ,KAAKzL,GAAnB;IACA,IAAAgZ,iCAAA,EAAmBvN,KAAnB,EAA0B,KAAKhe,QAA/B;IAEA,MAAMkgE,eAAA,GAAkB,IAAItuE,GAAJ,EAAxB;IACA,MAAMuuE,aAAA,GAAgB;MACpB5uE,IAAA,EAAM,IADc;MAEpBysB,KAFoB;MAGpB+xC,WAAA,EAAa/7D,MAAA,CAAO+7D,WAHA;MAIpBC,eAAA,EAAiBh8D,MAAA,CAAOg8D,eAJJ;MAKpBC,kBAAA,EAAoBj8D,MAAA,CAAOi8D,kBAAP,IAA6B,EAL7B;MAMpBC,WAAA,EAAal8D,MAAA,CAAOk8D,WAAP,KAAuB,KANhB;MAOpBC,UAAA,EAAY,IAAIlpC,4BAAJ,EAPQ;MAQpB5rB,iBAAA,EAAmBrH,MAAA,CAAOqH,iBAAP,IAA4B,IAAIyO,qCAAJ,EAR3B;MASpBsmD,eAAA,EAAiBp8D,MAAA,CAAOo8D,eAAP,KAA2B,IATxB;MAUpB1yD,YAAA,EAAc1J,MAAA,CAAO0J,YAVD;MAWpB4yD,YAAA,EAAct8D,MAAA,CAAOs8D,YAXD;MAYpB/+C,MAAA,EAAQ,IAZY;MAapBgiD,QAAA,EAAU;IAbU,CAAtB;IAgBA,WAAWhiE,IAAX,IAAmB0uE,WAAnB,EAAgC;MAC9B,IAAI1uE,IAAA,CAAK6uE,MAAT,EAAiB;QACf;MADe;MAGjB,MAAMC,iBAAA,GAAoB9uE,IAAA,CAAK04D,cAAL,KAAwBzwE,oBAAA,CAAea,KAAjE;MACA,IAAI,CAACgmF,iBAAL,EAAwB;QACtB,MAAM;UAAExzD,KAAF;UAASC;QAAT,IAAoBihD,WAAA,CAAYx8D,IAAA,CAAKhE,IAAjB,CAA1B;QACA,IAAIsf,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;UAC7B;QAD6B;MAFT,CAAxB,MAKO;QACL,MAAMymD,QAAA,GAAW2M,eAAA,CAAgBluE,GAAhB,CAAoBT,IAAA,CAAK0K,EAAzB,CAAjB;QACA,IAAI,CAACs3D,QAAL,EAAe;UAEb;QAFa;QAIf4M,aAAA,CAAc5M,QAAd,GAAyBA,QAAzB;MANK;MAQP4M,aAAA,CAAc5uE,IAAd,GAAqBA,IAArB;MACA,MAAMmnB,OAAA,GAAUs1C,wBAAA,CAAyBlkE,MAAzB,CAAgCq2E,aAAhC,CAAhB;MAEA,IAAI,CAACznD,OAAA,CAAQk3C,YAAb,EAA2B;QACzB;MADyB;MAI3B,IAAI,CAACyQ,iBAAD,IAAsB9uE,IAAA,CAAKm/D,QAA/B,EAAyC;QACvC,MAAM6C,QAAA,GAAW2M,eAAA,CAAgBluE,GAAhB,CAAoBT,IAAA,CAAKm/D,QAAzB,CAAjB;QACA,IAAI,CAAC6C,QAAL,EAAe;UACb2M,eAAA,CAAgBv/D,GAAhB,CAAoBpP,IAAA,CAAKm/D,QAAzB,EAAmC,CAACh4C,OAAD,CAAnC;QADa,CAAf,MAEO;UACL66C,QAAA,CAASpqE,IAAT,CAAcuvB,OAAd;QADK;MAJgC;MASzC,IAAIA,OAAA,CAAQwxC,oBAAR,GAA+B,CAAnC,EAAsC;QACpC,KAAK,CAAA0V,mBAAL,CAA0Bj/D,GAA1B,CAA8B+X,OAAA,CAAQnnB,IAAR,CAAa0K,EAA3C,EAA+Cyc,OAA/C;MADoC;MAItC,MAAM4nD,QAAA,GAAW5nD,OAAA,CAAQ5Y,MAAR,EAAjB;MACA,IAAIvO,IAAA,CAAKo3D,MAAT,EAAiB;QACf2X,QAAA,CAASnsD,KAAT,CAAe+N,UAAf,GAA4B,QAA5B;MADe;MAGjB,IAAIl3B,KAAA,CAAM6zB,OAAN,CAAcyhD,QAAd,CAAJ,EAA6B;QAC3B,WAAWC,eAAX,IAA8BD,QAA9B,EAAwC;UACtC,KAAK,CAAAR,aAAL,CAAoBS,eAApB,EAAqChvE,IAAA,CAAK0K,EAA1C;QADsC;MADb,CAA7B,MAIO;QACL,KAAK,CAAA6jE,aAAL,CAAoBQ,QAApB,EAA8B/uE,IAAA,CAAK0K,EAAnC;MADK;IA9CuB;IAmDhC,KAAK,CAAAukE,sBAAL;IAEA,MAAM,KAAKnY,IAAL,CAAUvyC,SAAV,CAAoBkI,KAApB,CAAN;EA3EmB;EAoFrB7M,OAAO;IAAEnR;EAAF,CAAP,EAAqB;IACnB,MAAMge,KAAA,GAAQ,KAAKzL,GAAnB;IACA,KAAKvS,QAAL,GAAgBA,QAAhB;IACA,IAAAurB,iCAAA,EAAmBvN,KAAnB,EAA0B;MAAEhf,QAAA,EAAUgB,QAAA,CAAShB;IAArB,CAA1B;IAEA,KAAK,CAAAwhE,sBAAL;IACAxiD,KAAA,CAAM2qC,MAAN,GAAe,KAAf;EANmB;EASrB,CAAA6X,uBAAA,EAA0B;IACxB,IAAI,CAAC,KAAK,CAAApgE,mBAAV,EAAgC;MAC9B;IAD8B;IAGhC,MAAM4d,KAAA,GAAQ,KAAKzL,GAAnB;IACA,WAAW,CAACtW,EAAD,EAAK4R,MAAL,CAAX,IAA2B,KAAK,CAAAzN,mBAAhC,EAAsD;MACpD,MAAMsY,OAAA,GAAUsF,KAAA,CAAMi2C,aAAN,CAAqB,wBAAuBh4D,EAAG,IAA/C,CAAhB;MACA,IAAI,CAACyc,OAAL,EAAc;QACZ;MADY;MAId,MAAM;QAAEsnD;MAAF,IAAiBtnD,OAAvB;MACA,IAAI,CAACsnD,UAAL,EAAiB;QACftnD,OAAA,CAAQ4J,MAAR,CAAezU,MAAf;MADe,CAAjB,MAEO,IAAImyD,UAAA,CAAW1I,QAAX,KAAwB,QAA5B,EAAsC;QAC3C0I,UAAA,CAAWS,WAAX,CAAuB5yD,MAAvB;MAD2C,CAAtC,MAEA;QACLmyD,UAAA,CAAWrD,MAAX,CAAkB9uD,MAAlB;MADK;IAX6C;IAetD,KAAK,CAAAzN,mBAAL,CAA0BmE,KAA1B;EApBwB;EAuB1B0kD,uBAAA,EAAyB;IACvB,OAAOj+D,KAAA,CAAMuiE,IAAN,CAAW,KAAK,CAAAqS,mBAAL,CAA0Bz7D,MAA1B,EAAX,CAAP;EADuB;EAIzBklD,sBAAsBptD,EAAtB,EAA0B;IACxB,OAAO,KAAK,CAAA2jE,mBAAL,CAA0B5tE,GAA1B,CAA8BiK,EAA9B,CAAP;EADwB;AAtLN;AA1wFtBjmB,uBAAA,GAAA2pF,eAAA;;;;;;;;;;;;ACsBA,SAASe,aAATA,CAAuBz1E,CAAvB,EAA0B;EACxB,OAAOlC,IAAA,CAAKg6C,KAAL,CAAWh6C,IAAA,CAAK4D,GAAL,CAAS,CAAT,EAAY5D,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYiC,CAAZ,CAAZ,IAA8B,GAAzC,EACJC,QADI,CACK,EADL,EAEJC,QAFI,CAEK,CAFL,EAEQ,GAFR,CAAP;AADwB;AAO1B,MAAM2mE,eAAN,CAAsB;EACpB,OAAO6O,MAAPA,CAAc,CAAC3zE,CAAD,EAAIqmB,CAAJ,EAAOrnB,CAAP,EAAU64B,CAAV,CAAd,EAA4B;IAC1B,OAAO,CAAC,GAAD,EAAM,IAAI97B,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAY,MAAMgE,CAAN,GAAU,OAAOhB,CAAjB,GAAqB,OAAOqnB,CAA5B,GAAgCwR,CAA5C,CAAV,CAAP;EAD0B;EAI5B,OAAO+7C,MAAPA,CAAc,CAACr1E,CAAD,CAAd,EAAmB;IACjB,OAAO,CAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,EAAe,CAAf,EAAkB,IAAIA,CAAtB,CAAP;EADiB;EAInB,OAAOs1E,KAAPA,CAAa,CAACt1E,CAAD,CAAb,EAAkB;IAChB,OAAO,CAAC,KAAD,EAAQA,CAAR,EAAWA,CAAX,EAAcA,CAAd,CAAP;EADgB;EAIlB,OAAOu1E,MAAPA,CAAc,CAACv1E,CAAD,CAAd,EAAmB;IACjB,MAAMw1E,CAAA,GAAIL,aAAA,CAAcn1E,CAAd,CAAV;IACA,OAAQ,IAAGw1E,CAAJ,GAAQA,CAAR,GAAYA,CAAZ,EAAP;EAFiB;EAKnB,OAAOC,KAAPA,CAAa,CAAC11E,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAAb,EAAwB;IACtB,OAAO,CAAC,GAAD,EAAM,MAAMF,CAAN,GAAU,OAAOC,CAAjB,GAAqB,OAAOC,CAAlC,CAAP;EADsB;EAIxB,OAAOy1E,QAAPA,CAAgB,CAAC31E,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAAhB,EAA2B;IACzB,MAAM01E,CAAA,GAAIR,aAAA,CAAcp1E,CAAd,CAAV;IACA,MAAMy1E,CAAA,GAAIL,aAAA,CAAcn1E,CAAd,CAAV;IACA,MAAM41E,CAAA,GAAIT,aAAA,CAAcl1E,CAAd,CAAV;IACA,OAAQ,IAAG01E,CAAJ,GAAQH,CAAR,GAAYI,CAAZ,EAAP;EAJyB;EAO3B,OAAOC,MAAPA,CAAA,EAAgB;IACd,OAAO,WAAP;EADc;EAIhB,OAAOC,QAAPA,CAAgB,CAACr0E,CAAD,EAAIqmB,CAAJ,EAAOrnB,CAAP,EAAU64B,CAAV,CAAhB,EAA8B;IAC5B,OAAO,CACL,KADK,EAEL,IAAI97B,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYgE,CAAA,GAAI63B,CAAhB,CAFC,EAGL,IAAI97B,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYgD,CAAA,GAAI64B,CAAhB,CAHC,EAIL,IAAI97B,IAAA,CAAKC,GAAL,CAAS,CAAT,EAAYqqB,CAAA,GAAIwR,CAAhB,CAJC,CAAP;EAD4B;EAS9B,OAAOy8C,SAAPA,CAAiBC,UAAjB,EAA6B;IAC3B,MAAMtmD,GAAA,GAAM,KAAKomD,QAAL,CAAcE,UAAd,EAA0B/0E,KAA1B,CAAgC,CAAhC,CAAZ;IACA,OAAO,KAAKy0E,QAAL,CAAchmD,GAAd,CAAP;EAF2B;EAK7B,OAAOumD,QAAPA,CAAgB,CAACl2E,CAAD,EAAIC,CAAJ,EAAOC,CAAP,CAAhB,EAA2B;IACzB,MAAMwB,CAAA,GAAI,IAAI1B,CAAd;IACA,MAAMU,CAAA,GAAI,IAAIT,CAAd;IACA,MAAM8nB,CAAA,GAAI,IAAI7nB,CAAd;IACA,MAAMq5B,CAAA,GAAI97B,IAAA,CAAKC,GAAL,CAASgE,CAAT,EAAYhB,CAAZ,EAAeqnB,CAAf,CAAV;IACA,OAAO,CAAC,MAAD,EAASrmB,CAAT,EAAYhB,CAAZ,EAAeqnB,CAAf,EAAkBwR,CAAlB,CAAP;EALyB;AA/CP;AA7BtB7uC,uBAAA,GAAA87E,eAAA;;;;;;;;;;;;ACkBA,IAAAj/D,SAAA,GAAAX,mBAAA;AAYA,MAAMgsE,QAAN,CAAe;EACb,OAAOuD,YAAPA,CAAoBrD,IAApB,EAA0BniE,EAA1B,EAA8Byc,OAA9B,EAAuC3I,OAAvC,EAAgDxQ,MAAhD,EAAwD;IACtD,MAAMmzD,UAAA,GAAa3iD,OAAA,CAAQI,QAAR,CAAiBlU,EAAjB,EAAqB;MAAEnV,KAAA,EAAO;IAAT,CAArB,CAAnB;IACA,QAAQ4xB,OAAA,CAAQlxB,IAAhB;MACE,KAAK,UAAL;QACE,IAAIkrE,UAAA,CAAW5rE,KAAX,KAAqB,IAAzB,EAA+B;UAC7Bs3E,IAAA,CAAKj7D,WAAL,GAAmBuvD,UAAA,CAAW5rE,KAA9B;QAD6B;QAG/B,IAAIyY,MAAA,KAAW,OAAf,EAAwB;UACtB;QADsB;QAGxB6+D,IAAA,CAAKp4D,gBAAL,CAAsB,OAAtB,EAA+BH,KAAA,IAAS;UACtCkK,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;YAAEnV,KAAA,EAAO+e,KAAA,CAAM0O,MAAN,CAAaztB;UAAtB,CAArB;QADsC,CAAxC;QAGA;MACF,KAAK,OAAL;QACE,IACE4xB,OAAA,CAAQkS,UAAR,CAAmB7e,IAAnB,KAA4B,OAA5B,IACA2M,OAAA,CAAQkS,UAAR,CAAmB7e,IAAnB,KAA4B,UAF9B,EAGE;UACA,IAAI2mD,UAAA,CAAW5rE,KAAX,KAAqB4xB,OAAA,CAAQkS,UAAR,CAAmB82C,KAA5C,EAAmD;YACjDtD,IAAA,CAAKxnD,YAAL,CAAkB,SAAlB,EAA6B,IAA7B;UADiD,CAAnD,MAEO,IAAI87C,UAAA,CAAW5rE,KAAX,KAAqB4xB,OAAA,CAAQkS,UAAR,CAAmB+2C,MAA5C,EAAoD;YAGzDvD,IAAA,CAAKlS,eAAL,CAAqB,SAArB;UAHyD;UAK3D,IAAI3sD,MAAA,KAAW,OAAf,EAAwB;YACtB;UADsB;UAGxB6+D,IAAA,CAAKp4D,gBAAL,CAAsB,QAAtB,EAAgCH,KAAA,IAAS;YACvCkK,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cACnBnV,KAAA,EAAO+e,KAAA,CAAM0O,MAAN,CAAa0mD,OAAb,GACHp1D,KAAA,CAAM0O,MAAN,CAAa4/C,YAAb,CAA0B,OAA1B,CADG,GAEHtuD,KAAA,CAAM0O,MAAN,CAAa4/C,YAAb,CAA0B,QAA1B;YAHe,CAArB;UADuC,CAAzC;QAXA,CAHF,MAqBO;UACL,IAAIzB,UAAA,CAAW5rE,KAAX,KAAqB,IAAzB,EAA+B;YAC7Bs3E,IAAA,CAAKxnD,YAAL,CAAkB,OAAlB,EAA2B87C,UAAA,CAAW5rE,KAAtC;UAD6B;UAG/B,IAAIyY,MAAA,KAAW,OAAf,EAAwB;YACtB;UADsB;UAGxB6+D,IAAA,CAAKp4D,gBAAL,CAAsB,OAAtB,EAA+BH,KAAA,IAAS;YACtCkK,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;cAAEnV,KAAA,EAAO+e,KAAA,CAAM0O,MAAN,CAAaztB;YAAtB,CAArB;UADsC,CAAxC;QAPK;QAWP;MACF,KAAK,QAAL;QACE,IAAI4rE,UAAA,CAAW5rE,KAAX,KAAqB,IAAzB,EAA+B;UAC7B,WAAW+0E,MAAX,IAAqBnjD,OAAA,CAAQ7Y,QAA7B,EAAuC;YACrC,IAAIg8D,MAAA,CAAOjxC,UAAP,CAAkB9jC,KAAlB,KAA4B4rE,UAAA,CAAW5rE,KAA3C,EAAkD;cAChD+0E,MAAA,CAAOjxC,UAAP,CAAkBkxC,QAAlB,GAA6B,IAA7B;YADgD;UADb;QADV;QAO/BsC,IAAA,CAAKp4D,gBAAL,CAAsB,OAAtB,EAA+BH,KAAA,IAAS;UACtC,MAAM5f,OAAA,GAAU4f,KAAA,CAAM0O,MAAN,CAAatuB,OAA7B;UACA,MAAMa,KAAA,GACJb,OAAA,CAAQo2E,aAAR,KAA0B,CAAC,CAA3B,GACI,EADJ,GAEIp2E,OAAA,CAAQA,OAAA,CAAQo2E,aAAhB,EAA+Bv1E,KAHrC;UAIAipB,OAAA,CAAQS,QAAR,CAAiBvU,EAAjB,EAAqB;YAAEnV;UAAF,CAArB;QANsC,CAAxC;QAQA;IA9DJ;EAFsD;EAoExD,OAAO86E,aAAPA,CAAqB;IAAExD,IAAF;IAAQ1lD,OAAR;IAAiB3I,OAAA,GAAU,IAA3B;IAAiCxQ,MAAjC;IAAyCwwD;EAAzC,CAArB,EAA6E;IAC3E,MAAM;MAAEnlC;IAAF,IAAiBlS,OAAvB;IACA,MAAMmpD,mBAAA,GAAsBzD,IAAA,YAAgB0D,iBAA5C;IAEA,IAAIl3C,UAAA,CAAW7e,IAAX,KAAoB,OAAxB,EAAiC;MAG/B6e,UAAA,CAAWpjC,IAAX,GAAkB,GAAGojC,UAAA,CAAWpjC,IAAK,IAAG+X,MAAtB,EAAlB;IAH+B;IAKjC,WAAW,CAACxV,GAAD,EAAMjD,KAAN,CAAX,IAA2BE,MAAA,CAAO0pB,OAAP,CAAeka,UAAf,CAA3B,EAAuD;MACrD,IAAI9jC,KAAA,KAAU,IAAV,IAAkBA,KAAA,KAAUyB,SAAhC,EAA2C;QACzC;MADyC;MAI3C,QAAQwB,GAAR;QACE,KAAK,OAAL;UACE,IAAIjD,KAAA,CAAMR,MAAV,EAAkB;YAChB83E,IAAA,CAAKxnD,YAAL,CAAkB7sB,GAAlB,EAAuBjD,KAAA,CAAMsC,IAAN,CAAW,GAAX,CAAvB;UADgB;UAGlB;QACF,KAAK,QAAL;UAIE;QACF,KAAK,IAAL;UACEg1E,IAAA,CAAKxnD,YAAL,CAAkB,iBAAlB,EAAqC9vB,KAArC;UACA;QACF,KAAK,OAAL;UACEE,MAAA,CAAO6c,MAAP,CAAcu6D,IAAA,CAAKjqD,KAAnB,EAA0BrtB,KAA1B;UACA;QACF,KAAK,aAAL;UACEs3E,IAAA,CAAKj7D,WAAL,GAAmBrc,KAAnB;UACA;QACF;UACE,IAAI,CAAC+6E,mBAAD,IAAyB93E,GAAA,KAAQ,MAAR,IAAkBA,GAAA,KAAQ,WAAvD,EAAqE;YACnEq0E,IAAA,CAAKxnD,YAAL,CAAkB7sB,GAAlB,EAAuBjD,KAAvB;UADmE;MArBzE;IALqD;IAgCvD,IAAI+6E,mBAAJ,EAAyB;MACvB9R,WAAA,CAAY6E,iBAAZ,CACEwJ,IADF,EAEExzC,UAAA,CAAWvxB,IAFb,EAGEuxB,UAAA,CAAWiqC,SAHb;IADuB;IASzB,IAAI9kD,OAAA,IAAW6a,UAAA,CAAWm3C,MAA1B,EAAkC;MAChC,KAAKN,YAAL,CAAkBrD,IAAlB,EAAwBxzC,UAAA,CAAWm3C,MAAnC,EAA2CrpD,OAA3C,EAAoD3I,OAApD;IADgC;EAlDyC;EA4D7E,OAAOjQ,MAAPA,CAAcwS,UAAd,EAA0B;IACxB,MAAMvC,OAAA,GAAUuC,UAAA,CAAWjX,iBAA3B;IACA,MAAM00D,WAAA,GAAcz9C,UAAA,CAAWy9C,WAA/B;IACA,MAAMiS,IAAA,GAAO1vD,UAAA,CAAW6rD,OAAxB;IACA,MAAM5+D,MAAA,GAAS+S,UAAA,CAAW/S,MAAX,IAAqB,SAApC;IACA,MAAM0iE,QAAA,GAAW7rE,QAAA,CAASugB,aAAT,CAAuBqrD,IAAA,CAAKx6E,IAA5B,CAAjB;IACA,IAAIw6E,IAAA,CAAKp3C,UAAT,EAAqB;MACnB,KAAKg3C,aAAL,CAAmB;QACjBxD,IAAA,EAAM6D,QADW;QAEjBvpD,OAAA,EAASspD,IAFQ;QAGjBziE,MAHiB;QAIjBwwD;MAJiB,CAAnB;IADmB;IAQrB,MAAMmS,KAAA,GAAQ,CAAC,CAACF,IAAD,EAAO,CAAC,CAAR,EAAWC,QAAX,CAAD,CAAd;IAEA,MAAME,OAAA,GAAU7vD,UAAA,CAAWC,GAA3B;IACA4vD,OAAA,CAAQ7/C,MAAR,CAAe2/C,QAAf;IAEA,IAAI3vD,UAAA,CAAWtS,QAAf,EAAyB;MACvB,MAAMngB,SAAA,GAAa,UAASyyB,UAAA,CAAWtS,QAAX,CAAoBngB,SAApB,CAA8BuJ,IAA9B,CAAmC,GAAnC,CAAwC,GAApE;MACA+4E,OAAA,CAAQhuD,KAAR,CAAct0B,SAAd,GAA0BA,SAA1B;IAFuB;IAMzB,IAAI0f,MAAA,KAAW,UAAf,EAA2B;MACzB4iE,OAAA,CAAQvrD,YAAR,CAAqB,OAArB,EAA8B,kBAA9B;IADyB;IAK3B,MAAMwvC,QAAA,GAAW,EAAjB;IAEA,OAAO8b,KAAA,CAAM57E,MAAN,GAAe,CAAtB,EAAyB;MACvB,MAAM,CAACirB,MAAD,EAAS1oB,CAAT,EAAYu1E,IAAZ,IAAoB8D,KAAA,CAAM5nD,EAAN,CAAS,CAAC,CAAV,CAA1B;MACA,IAAIzxB,CAAA,GAAI,CAAJ,KAAU0oB,MAAA,CAAO1R,QAAP,CAAgBvZ,MAA9B,EAAsC;QACpC47E,KAAA,CAAMn9B,GAAN;QACA;MAFoC;MAKtC,MAAM+V,KAAA,GAAQvpC,MAAA,CAAO1R,QAAP,CAAgB,EAAEqiE,KAAA,CAAM5nD,EAAN,CAAS,CAAC,CAAV,EAAa,CAAb,CAAlB,CAAd;MACA,IAAIwgC,KAAA,KAAU,IAAd,EAAoB;QAClB;MADkB;MAIpB,MAAM;QAAEtzD;MAAF,IAAWszD,KAAjB;MACA,IAAItzD,IAAA,KAAS,OAAb,EAAsB;QACpB,MAAMozD,IAAA,GAAOxkD,QAAA,CAAS+2D,cAAT,CAAwBrS,KAAA,CAAMh0D,KAA9B,CAAb;QACAs/D,QAAA,CAASj9D,IAAT,CAAcyxD,IAAd;QACAwjB,IAAA,CAAK97C,MAAL,CAAYs4B,IAAZ;QACA;MAJoB;MAOtB,IAAIwnB,SAAJ;MACA,IAAItnB,KAAA,EAAOlwB,UAAP,EAAmBy3C,KAAvB,EAA8B;QAC5BD,SAAA,GAAYhsE,QAAA,CAASisB,eAAT,CAAyBy4B,KAAA,CAAMlwB,UAAN,CAAiBy3C,KAA1C,EAAiD76E,IAAjD,CAAZ;MAD4B,CAA9B,MAEO;QACL46E,SAAA,GAAYhsE,QAAA,CAASugB,aAAT,CAAuBnvB,IAAvB,CAAZ;MADK;MAIP42E,IAAA,CAAK97C,MAAL,CAAY8/C,SAAZ;MACA,IAAItnB,KAAA,CAAMlwB,UAAV,EAAsB;QACpB,KAAKg3C,aAAL,CAAmB;UACjBxD,IAAA,EAAMgE,SADW;UAEjB1pD,OAAA,EAASoiC,KAFQ;UAGjB/qC,OAHiB;UAIjBxQ,MAJiB;UAKjBwwD;QALiB,CAAnB;MADoB;MAUtB,IAAIjV,KAAA,CAAMj7C,QAAN,IAAkBi7C,KAAA,CAAMj7C,QAAN,CAAevZ,MAAf,GAAwB,CAA9C,EAAiD;QAC/C47E,KAAA,CAAM/4E,IAAN,CAAW,CAAC2xD,KAAD,EAAQ,CAAC,CAAT,EAAYsnB,SAAZ,CAAX;MAD+C,CAAjD,MAEO,IAAItnB,KAAA,CAAMh0D,KAAV,EAAiB;QACtB,MAAM8zD,IAAA,GAAOxkD,QAAA,CAAS+2D,cAAT,CAAwBrS,KAAA,CAAMh0D,KAA9B,CAAb;QACA,IAAIyc,iBAAA,CAAQs3C,eAAR,CAAwBrzD,IAAxB,CAAJ,EAAmC;UACjC4+D,QAAA,CAASj9D,IAAT,CAAcyxD,IAAd;QADiC;QAGnCwnB,SAAA,CAAU9/C,MAAV,CAAiBs4B,IAAjB;MALsB;IAxCD;IAiEzB,WAAW0nB,EAAX,IAAiBH,OAAA,CAAQI,gBAAR,CACf,uDADe,CAAjB,EAEG;MACDD,EAAA,CAAG1rD,YAAH,CAAgB,UAAhB,EAA4B,IAA5B;IADC;IAIH,OAAO;MACLwvC;IADK,CAAP;EAvGwB;EAiH1B,OAAOj1C,MAAPA,CAAcmB,UAAd,EAA0B;IACxB,MAAMzyB,SAAA,GAAa,UAASyyB,UAAA,CAAWtS,QAAX,CAAoBngB,SAApB,CAA8BuJ,IAA9B,CAAmC,GAAnC,CAAwC,GAApE;IACAkpB,UAAA,CAAWC,GAAX,CAAe4B,KAAf,CAAqBt0B,SAArB,GAAiCA,SAAjC;IACAyyB,UAAA,CAAWC,GAAX,CAAeo2C,MAAf,GAAwB,KAAxB;EAHwB;AAlPb;AA9Bf3yE,gBAAA,GAAAkoF,QAAA;;;;;;;;;;;;;ACyBA,MAAMsE,oBAAA,GAAuB;EAC3BC,QAAA,EAAU,mBADiB;EAE3BC,aAAA,EAAe,oCAFY;EAI3BC,sBAAA,EAAwB,mCAJG;EAK3BC,sBAAA,EAAwB,mCALG;EAM3BC,+BAAA,EAAiC,oBANN;EAO3BC,yCAAA,EAA2C,IAPhB;EAQ3BC,8CAAA,EAAgD,IARrB;EAS3BC,kDAAA,EAAoD,UATzB;EAU3BC,mDAAA,EAAqD,WAV1B;EAW3BC,qCAAA,EAAuC,IAXZ;EAY3BC,qCAAA,EAAuC,IAZZ;EAa3BC,yCAAA,EAA2C,QAbhB;EAc3BC,wCAAA,EAA0C,OAdf;EAe3BC,8CAAA,EACE,mDAhByB;EAiB3BC,mDAAA,EACE,6DAlByB;EAmB3BC,kCAAA,EAAoC,KAnBT;EAoB3BC,iCAAA,EAAmC,IApBR;EAsB3BC,iBAAA,EAAmB,mBAtBQ;EAuB3BC,aAAA,EAAe,eAvBY;EAwB3BC,gBAAA,EAAkB,eAxBS;EAyB3BC,iBAAA,EAAmB,4BAzBQ;EA2B3BC,gBAAA,EAAkB,gDA3BS;EA4B3BC,mBAAA,EAAqB,6CA5BM;EA6B3B,yBAAyB,gCA7BE;EA8B3B,2BAA2B,kCA9BA;EA+B3B,+BAA+B,2BA/BJ;EAgC3B,iCAAiC,6BAhCN;EAiC3BC,cAAA,EAAgB,kBAjCW;EAmC3BC,gBAAA,EAAkB,YAnCS;EAoC3BC,cAAA,EAAgB,UApCW;EAqC3BC,eAAA,EAAiB,gBArCU;EAsC3BC,iBAAA,EAAmB,aAtCQ;EAuC3BC,kBAAA,EAAoB,YAvCO;EAyC3BC,aAAA,EAAe,0CAzCY;EA0C3BC,kBAAA,EAAoB,gCA1CO;EA2C3BC,kBAAA,EAAoB,mBA3CO;EA4C3BC,yBAAA,EAA2B,6BA5CA;EA6C3BC,eAAA,EAAiB,6CA7CU;EA+C3BC,sBAAA,EAAwB,oBA/CG;EAiD3BC,sBAAA,EACE,2DAlDyB;EAmD3BC,kBAAA,EAAoB,oDAnDO;EAoD3BC,kBAAA,EACE,2DArDyB;EAuD3BC,0BAAA,EAA4B,eAvDD;EAwD3BC,4BAAA,EAA8B,aAxDH;EAyD3BC,sBAAA,EAAwB,aAzDG;EA0D3BC,4BAAA,EAA8B;AA1DH,CAA7B;AA4DqE;EACnE1C,oBAAA,CAAqB2C,sBAArB,GAA8C,eAA9C;AADmE;AAIrE,SAASC,eAATA,CAAyBr7E,GAAzB,EAA8BunC,IAA9B,EAAoC;EAClC,QAAQvnC,GAAR;IACE,KAAK,kBAAL;MACEA,GAAA,GAAO,oBAAmBunC,IAAA,CAAK32B,KAAL,KAAe,CAAf,GAAmB,KAAnB,GAA2B,OAAQ,GAA7D;MACA;IACF,KAAK,wBAAL;MACE5Q,GAAA,GAAO,0BAAyBunC,IAAA,CAAK4S,KAAL,KAAe,CAAf,GAAmB,KAAnB,GAA2B,OAAQ,GAAnE;MACA;EANJ;EAQA,OAAOs+B,oBAAA,CAAqBz4E,GAArB,KAA6B,EAApC;AATkC;AAapC,SAASs7E,eAATA,CAAyBl/C,IAAzB,EAA+BmL,IAA/B,EAAqC;EACnC,IAAI,CAACA,IAAL,EAAW;IACT,OAAOnL,IAAP;EADS;EAGX,OAAOA,IAAA,CAAKt0B,UAAL,CAAgB,sBAAhB,EAAwC,CAAC2G,GAAD,EAAMhR,IAAN,KAAe;IAC5D,OAAOA,IAAA,IAAQ8pC,IAAR,GAAeA,IAAA,CAAK9pC,IAAL,CAAf,GAA4B,OAAOA,IAAP,GAAc,IAAjD;EAD4D,CAAvD,CAAP;AAJmC;AAarC,MAAMq4E,QAAA,GAAW;EACf,MAAMyF,WAANA,CAAA,EAAoB;IAClB,OAAO,OAAP;EADkB,CADL;EAKf,MAAMC,YAANA,CAAA,EAAqB;IACnB,OAAO,KAAP;EADmB,CALN;EASf,MAAMvzE,GAANA,CAAUjI,GAAV,EAAeunC,IAAA,GAAO,IAAtB,EAA4ByP,QAAA,GAAWqkC,eAAA,CAAgBr7E,GAAhB,EAAqBunC,IAArB,CAAvC,EAAmE;IACjE,OAAO+zC,eAAA,CAAgBtkC,QAAhB,EAA0BzP,IAA1B,CAAP;EADiE,CATpD;EAaf,MAAMxb,SAANA,CAAgB4C,OAAhB,EAAyB;AAbV,CAAjB;AAnHA1iC,gBAAA,GAAA6pF,QAAA;;;;;;;;;;;;ACeA,IAAA5tE,KAAA,GAAAC,mBAAA;AAKA,IAAAyd,OAAA,GAAAzd,mBAAA;AACA,IAAAs4D,iBAAA,GAAAt4D,mBAAA;AACA,IAAAuf,MAAA,GAAAvf,mBAAA;AAKA,MAAMszE,YAAA,GAAe,EAArB;AAKA,MAAMld,SAAN,SAAwB/3C,wBAAxB,CAAyC;EACvC,CAAAk1D,WAAA,GAAe,CAAf;EAEA,CAAAC,UAAA,GAAc,CAAd;EAEA,CAAAC,SAAA,GAAa,CAAb;EAEA,CAAAC,sBAAA,GAA0B,KAAKC,iBAAL,CAAuBr5D,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAAs5D,sBAAA,GAA0B,KAAKC,iBAAL,CAAuBv5D,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAAw5D,uBAAA,GAA2B,KAAKC,kBAAL,CAAwBz5D,IAAxB,CAA6B,IAA7B,CAA3B;EAEA,CAAA05D,oBAAA,GAAwB,KAAKC,eAAL,CAAqB35D,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAA45D,sBAAA,GAA0B,KAAKC,iBAAL,CAAuB75D,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAA85D,aAAA,GAAiB,IAAIrvC,MAAJ,EAAjB;EAEA,CAAA5e,cAAA,GAAkB,KAAlB;EAEA,CAAAkuD,kBAAA,GAAsB,KAAtB;EAEA,CAAAC,mBAAA,GAAuB,KAAvB;EAEA,CAAAC,QAAA,GAAY,IAAZ;EAEA,CAAAC,SAAA,GAAa,CAAb;EAEA,CAAAC,UAAA,GAAc,CAAd;EAEA,CAAAC,oBAAA,GAAwB,IAAxB;EAEA,OAAOtb,aAAP,GAAuB,IAAvB;EAEA,OAAOub,eAAP,GAAyB,CAAzB;EAEA,OAAOC,iBAAP,GAA2B,CAA3B;EAEA,OAAO1b,YAAP;EAEA,OAAOx6C,KAAP,GAAe,KAAf;EAEAnpB,YAAYuM,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAaxM,IAAA,EAAM;IAAnB,CAAN;IACA,KAAKwzB,KAAL,GAAahnB,MAAA,CAAOgnB,KAAP,IAAgB,IAA7B;IACA,KAAK+rD,SAAL,GAAiB/yE,MAAA,CAAO+yE,SAAP,IAAoB,IAArC;IACA,KAAKluD,OAAL,GAAe7kB,MAAA,CAAO6kB,OAAP,IAAkB,IAAjC;IACA,KAAK2sB,KAAL,GAAa,EAAb;IACA,KAAKwhC,YAAL,GAAoB,EAApB;IACA,KAAKC,WAAL,GAAmB,EAAnB;IACA,KAAKC,WAAL,GAAmB,EAAnB;IACA,KAAK/f,WAAL,GAAmB,CAAnB;IACA,KAAKggB,YAAL,GAAoB,KAAKC,YAAL,GAAoB,CAAxC;IACA,KAAKh0D,CAAL,GAAS,CAAT;IACA,KAAKC,CAAL,GAAS,CAAT;EAZkB;EAepB,OAAO+0C,UAAPA,CAAkBC,IAAlB,EAAwB;IACtB,KAAK+C,YAAL,GAAoB,IAAIx5D,GAAJ,CAClB,CAAC,8BAAD,EAAiC,wBAAjC,EAA2D/H,GAA3D,CAA+DP,GAAA,IAAO,CACpEA,GADoE,EAEpE++D,IAAA,CAAKr2D,GAAL,CAAS1I,GAAT,CAFoE,CAAtE,CADkB,CAApB;EADsB;EASxB,OAAO+2B,mBAAPA,CAA2BtU,IAA3B,EAAiCjlB,KAAjC,EAAwC;IACtC,QAAQilB,IAAR;MACE,KAAKr0B,gCAAA,CAA2BK,aAAhC;QACEuwE,SAAA,CAAUwe,iBAAV,GAA8BhgF,KAA9B;QACA;MACF,KAAKpP,gCAAA,CAA2BI,SAAhC;QACEwwE,SAAA,CAAUgD,aAAV,GAA0BxkE,KAA1B;QACA;MACF,KAAKpP,gCAAA,CAA2BM,WAAhC;QACEswE,SAAA,CAAUue,eAAV,GAA4B//E,KAAA,GAAQ,GAApC;QACA;IATJ;EADsC;EAexCsxB,aAAarM,IAAb,EAAmBjlB,KAAnB,EAA0B;IACxB,QAAQilB,IAAR;MACE,KAAKr0B,gCAAA,CAA2BK,aAAhC;QACE,KAAK,CAAAsvF,eAAL,CAAsBvgF,KAAtB;QACA;MACF,KAAKpP,gCAAA,CAA2BI,SAAhC;QACE,KAAK,CAAA2zE,WAAL,CAAkB3kE,KAAlB;QACA;MACF,KAAKpP,gCAAA,CAA2BM,WAAhC;QACE,KAAK,CAAAsvF,aAAL,CAAoBxgF,KAApB;QACA;IATJ;EADwB;EAc1B,WAAW84B,yBAAXA,CAAA,EAAuC;IACrC,OAAO,CACL,CAACloC,gCAAA,CAA2BK,aAA5B,EAA2CuwE,SAAA,CAAUwe,iBAArD,CADK,EAEL,CACEpvF,gCAAA,CAA2BI,SAD7B,EAEEwwE,SAAA,CAAUgD,aAAV,IAA2B/6C,wBAAA,CAAiBiD,iBAF9C,CAFK,EAML,CACE97B,gCAAA,CAA2BM,WAD7B,EAEE+Q,IAAA,CAAK+vB,KAAL,CAAWwvC,SAAA,CAAUue,eAAV,GAA4B,GAAvC,CAFF,CANK,CAAP;EADqC;EAevC,IAAItuD,kBAAJA,CAAA,EAAyB;IACvB,OAAO,CACL,CACE7gC,gCAAA,CAA2BK,aAD7B,EAEE,KAAKgvF,SAAL,IAAkBze,SAAA,CAAUwe,iBAF9B,CADK,EAKL,CACEpvF,gCAAA,CAA2BI,SAD7B,EAEE,KAAKkjC,KAAL,IACEstC,SAAA,CAAUgD,aADZ,IAEE/6C,wBAAA,CAAiBiD,iBAJrB,CALK,EAWL,CACE97B,gCAAA,CAA2BM,WAD7B,EAEE+Q,IAAA,CAAK+vB,KAAL,CAAW,OAAO,KAAKD,OAAL,IAAgByvC,SAAA,CAAUue,eAA1B,CAAlB,CAFF,CAXK,CAAP;EADuB;EAuBzB,CAAAQ,gBAAiBN,SAAjB,EAA4B;IAC1B,MAAMQ,cAAA,GAAiB,KAAKR,SAA5B;IACA,KAAK/yD,WAAL,CAAiB;MACfsF,GAAA,EAAKA,CAAA,KAAM;QACT,KAAKytD,SAAL,GAAiBA,SAAjB;QACA,KAAK,CAAAS,YAAL;MAFS,CADI;MAKfjuD,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKwtD,SAAL,GAAiBQ,cAAjB;QACA,KAAK,CAAAC,YAAL;MAFU,CALG;MASfhuD,QAAA,EAAU,IATK;MAUfzN,IAAA,EAAMr0B,gCAAA,CAA2BK,aAVlB;MAWf0hC,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAF0B;EAsB5B,CAAA+xC,YAAazwC,KAAb,EAAoB;IAClB,MAAM8wC,UAAA,GAAa,KAAK9wC,KAAxB;IACA,KAAKhH,WAAL,CAAiB;MACfsF,GAAA,EAAKA,CAAA,KAAM;QACT,KAAK0B,KAAL,GAAaA,KAAb;QACA,KAAK,CAAAysD,MAAL;MAFS,CADI;MAKfluD,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKyB,KAAL,GAAa8wC,UAAb;QACA,KAAK,CAAA2b,MAAL;MAFU,CALG;MASfjuD,QAAA,EAAU,IATK;MAUfzN,IAAA,EAAMr0B,gCAAA,CAA2BI,SAVlB;MAWf2hC,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAFkB;EAsBpB,CAAA4tD,cAAezuD,OAAf,EAAwB;IACtBA,OAAA,IAAW,GAAX;IACA,MAAM6uD,YAAA,GAAe,KAAK7uD,OAA1B;IACA,KAAK7E,WAAL,CAAiB;MACfsF,GAAA,EAAKA,CAAA,KAAM;QACT,KAAKT,OAAL,GAAeA,OAAf;QACA,KAAK,CAAA4uD,MAAL;MAFS,CADI;MAKfluD,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKV,OAAL,GAAe6uD,YAAf;QACA,KAAK,CAAAD,MAAL;MAFU,CALG;MASfjuD,QAAA,EAAU,IATK;MAUfzN,IAAA,EAAMr0B,gCAAA,CAA2BM,WAVlB;MAWfyhC,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAHsB;EAoBxB5B,QAAA,EAAU;IACR,MAAMA,OAAN;IACA,IAAI,KAAKvF,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,CAAC,KAAK1E,MAAV,EAAkB;MAChB,KAAK,CAAAqtC,YAAL;MACA,KAAK,CAAAysB,cAAL;IAFgB;IAKlB,IAAI,CAAC,KAAKr0D,eAAV,EAA2B;MAGzB,KAAK/B,MAAL,CAAYpP,GAAZ,CAAgB,IAAhB;MACA,KAAK,CAAAylE,aAAL;IAJyB;IAM3B,KAAK,CAAAJ,YAAL;EAjBQ;EAqBVl3D,OAAA,EAAS;IACP,IAAI,KAAKzC,MAAL,KAAgB,IAApB,EAA0B;MACxB;IADwB;IAI1B,IAAI,CAAC,KAAKgH,OAAL,EAAL,EAAqB;MACnB,KAAKC,MAAL;IADmB;IAKrB,KAAKjH,MAAL,CAAYhB,KAAZ,GAAoB,KAAKgB,MAAL,CAAYf,MAAZ,GAAqB,CAAzC;IACA,KAAKe,MAAL,CAAYyC,MAAZ;IACA,KAAKzC,MAAL,GAAc,IAAd;IAEA,KAAK,CAAA44D,QAAL,CAAeoB,UAAf;IACA,KAAK,CAAApB,QAAL,GAAiB,IAAjB;IAEA,MAAMn2D,MAAN;EAjBO;EAoBT+D,UAAU9C,MAAV,EAAkB;IAChB,IAAI,CAAC,KAAKA,MAAN,IAAgBA,MAApB,EAA4B;MAG1B,KAAKU,UAAL,CAAgBmM,mBAAhB,CAAoC,IAApC;IAH0B,CAA5B,MAIO,IAAI,KAAK7M,MAAL,IAAeA,MAAA,KAAW,IAA9B,EAAoC;MAIzC,KAAKU,UAAL,CAAgBkM,gBAAhB,CAAiC,IAAjC;IAJyC;IAM3C,MAAM9J,SAAN,CAAgB9C,MAAhB;EAXgB;EAclB2L,gBAAA,EAAkB;IAChB,MAAM,CAAC/G,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;IACA,MAAMtG,KAAA,GAAQ,KAAKA,KAAL,GAAasJ,WAA3B;IACA,MAAMrJ,MAAA,GAAS,KAAKA,MAAL,GAAcsJ,YAA7B;IACA,KAAK0xD,aAAL,CAAmBj7D,KAAnB,EAA0BC,MAA1B;EAJgB;EAQlB4K,eAAA,EAAiB;IACf,IAAI,KAAK,CAAAW,cAAL,IAAwB,KAAKxK,MAAL,KAAgB,IAA5C,EAAkD;MAChD;IADgD;IAIlD,MAAM6J,cAAN;IACA,KAAKnF,GAAL,CAAS05C,SAAT,GAAqB,KAArB;IACA,KAAKp+C,MAAL,CAAY7H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAogE,sBAAjD;EAPe;EAWjBzuD,gBAAA,EAAkB;IAChB,IAAI,CAAC,KAAK3F,YAAL,EAAD,IAAwB,KAAKnE,MAAL,KAAgB,IAA5C,EAAkD;MAChD;IADgD;IAIlD,MAAM8J,eAAN;IACA,KAAKpF,GAAL,CAAS05C,SAAT,GAAqB,CAAC,KAAKp3C,OAAL,EAAtB;IACA,KAAKtC,GAAL,CAAS2F,SAAT,CAAmB5H,MAAnB,CAA0B,SAA1B;IAEA,KAAKzC,MAAL,CAAY5H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAAmgE,sBAFP;EATgB;EAgBlB3uD,UAAA,EAAY;IACV,KAAKlF,GAAL,CAAS05C,SAAT,GAAqB,CAAC,KAAKp3C,OAAL,EAAtB;EADU;EAKZA,QAAA,EAAU;IACR,OACE,KAAK2wB,KAAL,CAAWl/C,MAAX,KAAsB,CAAtB,IACC,KAAKk/C,KAAL,CAAWl/C,MAAX,KAAsB,CAAtB,IAA2B,KAAKk/C,KAAL,CAAW,CAAX,EAAcl/C,MAAd,KAAyB,CAFvD;EADQ;EAOV,CAAAyhF,eAAA,EAAkB;IAChB,MAAM;MACJhyD,cADI;MAEJ5C,gBAAA,EAAkB,CAACtG,KAAD,EAAQC,MAAR;IAFd,IAGF,IAHJ;IAIA,QAAQiJ,cAAR;MACE,KAAK,EAAL;QACE,OAAO,CAAC,CAAD,EAAIjJ,MAAJ,EAAYA,MAAZ,EAAoBD,KAApB,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACA,KAAD,EAAQC,MAAR,EAAgBD,KAAhB,EAAuBC,MAAvB,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACD,KAAD,EAAQ,CAAR,EAAWC,MAAX,EAAmBD,KAAnB,CAAP;MACF;QACE,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAOA,KAAP,EAAcC,MAAd,CAAP;IARJ;EALgB;EAoBlB,CAAAk7D,UAAA,EAAa;IACX,MAAM;MAAE/8C,GAAF;MAAOjQ,KAAP;MAAcnC,OAAd;MAAuBkuD,SAAvB;MAAkC/wD,WAAlC;MAA+CmxC;IAA/C,IAA+D,IAArE;IACAl8B,GAAA,CAAIwN,SAAJ,GAAiBsuC,SAAA,GAAY/wD,WAAb,GAA4BmxC,WAA5C;IACAl8B,GAAA,CAAIuR,OAAJ,GAAc,OAAd;IACAvR,GAAA,CAAIwR,QAAJ,GAAe,OAAf;IACAxR,GAAA,CAAIyR,UAAJ,GAAiB,EAAjB;IACAzR,GAAA,CAAImR,WAAJ,GAAkB,GAAGphB,KAAH,GAAW,IAAApC,mBAAA,EAAaC,OAAb,CAAX,EAAlB;EANW;EAcb,CAAAovD,aAAc70D,CAAd,EAAiBC,CAAjB,EAAoB;IAClB,KAAKxF,MAAL,CAAY7H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAA4/D,sBAAjD;IACA,KAAK/3D,MAAL,CAAY7H,gBAAZ,CAA6B,cAA7B,EAA6C,KAAK,CAAAggE,uBAAlD;IACA,KAAKn4D,MAAL,CAAY7H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAA8/D,sBAAjD;IACA,KAAKj4D,MAAL,CAAY7H,gBAAZ,CAA6B,WAA7B,EAA0C,KAAK,CAAAkgE,oBAA/C;IACA,KAAKr4D,MAAL,CAAY5H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAAmgE,sBAFP;IAKA,KAAKr0D,SAAL,GAAiB,IAAjB;IACA,IAAI,CAAC,KAAK,CAAAy0D,mBAAV,EAAgC;MAC9B,KAAK,CAAAA,mBAAL,GAA4B,IAA5B;MACA,KAAK,CAAAoB,aAAL;MACA,KAAKb,SAAL,KAAmBze,SAAA,CAAUwe,iBAA7B;MACA,KAAK9rD,KAAL,KACEstC,SAAA,CAAUgD,aAAV,IAA2B/6C,wBAAA,CAAiBiD,iBAD9C;MAEA,KAAKqF,OAAL,KAAiByvC,SAAA,CAAUue,eAA3B;IAN8B;IAQhC,KAAKK,WAAL,CAAiB/9E,IAAjB,CAAsB,CAACiqB,CAAD,EAAIC,CAAJ,CAAtB;IACA,KAAK,CAAAkzD,kBAAL,GAA2B,KAA3B;IACA,KAAK,CAAAyB,SAAL;IAEA,KAAK,CAAApB,oBAAL,GAA6B,MAAM;MACjC,KAAK,CAAAsB,UAAL;MACA,IAAI,KAAK,CAAAtB,oBAAT,EAAgC;QAC9BttE,MAAA,CAAOiW,qBAAP,CAA6B,KAAK,CAAAq3D,oBAAlC;MAD8B;IAFC,CAAnC;IAMAttE,MAAA,CAAOiW,qBAAP,CAA6B,KAAK,CAAAq3D,oBAAlC;EA7BkB;EAqCpB,CAAAuB,KAAM/0D,CAAN,EAASC,CAAT,EAAY;IACV,MAAM,CAAC+0D,KAAD,EAAQC,KAAR,IAAiB,KAAKnB,WAAL,CAAiB5sD,EAAjB,CAAoB,CAAC,CAArB,CAAvB;IACA,IAAI,KAAK4sD,WAAL,CAAiB5gF,MAAjB,GAA0B,CAA1B,IAA+B8sB,CAAA,KAAMg1D,KAArC,IAA8C/0D,CAAA,KAAMg1D,KAAxD,EAA+D;MAC7D;IAD6D;IAG/D,MAAMnB,WAAA,GAAc,KAAKA,WAAzB;IACA,IAAIoB,MAAA,GAAS,KAAK,CAAAhC,aAAlB;IACAY,WAAA,CAAY/9E,IAAZ,CAAiB,CAACiqB,CAAD,EAAIC,CAAJ,CAAjB;IACA,KAAK,CAAAkzD,kBAAL,GAA2B,IAA3B;IAEA,IAAIW,WAAA,CAAY5gF,MAAZ,IAAsB,CAA1B,EAA6B;MAC3BgiF,MAAA,CAAOxoF,MAAP,CAAc,GAAGonF,WAAA,CAAY,CAAZ,CAAjB;MACAoB,MAAA,CAAOvoF,MAAP,CAAcqzB,CAAd,EAAiBC,CAAjB;MACA;IAH2B;IAM7B,IAAI6zD,WAAA,CAAY5gF,MAAZ,KAAuB,CAA3B,EAA8B;MAC5B,KAAK,CAAAggF,aAAL,GAAsBgC,MAAA,GAAS,IAAIrxC,MAAJ,EAA/B;MACAqxC,MAAA,CAAOxoF,MAAP,CAAc,GAAGonF,WAAA,CAAY,CAAZ,CAAjB;IAF4B;IAK9B,KAAK,CAAAqB,eAAL,CACED,MADF,EAEE,GAAGpB,WAAA,CAAY5sD,EAAZ,CAAe,CAAC,CAAhB,CAFL,EAGE,GAAG4sD,WAAA,CAAY5sD,EAAZ,CAAe,CAAC,CAAhB,CAHL,EAIElH,CAJF,EAKEC,CALF;EArBU;EA8BZ,CAAAxyB,QAAA,EAAW;IACT,IAAI,KAAKqmF,WAAL,CAAiB5gF,MAAjB,KAA4B,CAAhC,EAAmC;MACjC;IADiC;IAGnC,MAAMkiF,SAAA,GAAY,KAAKtB,WAAL,CAAiB5sD,EAAjB,CAAoB,CAAC,CAArB,CAAlB;IACA,KAAK,CAAAgsD,aAAL,CAAoBvmF,MAApB,CAA2B,GAAGyoF,SAA9B;EALS;EAaX,CAAAC,YAAar1D,CAAb,EAAgBC,CAAhB,EAAmB;IACjB,KAAK,CAAAuzD,oBAAL,GAA6B,IAA7B;IAEAxzD,CAAA,GAAIrqB,IAAA,CAAKC,GAAL,CAASD,IAAA,CAAK4D,GAAL,CAASymB,CAAT,EAAY,CAAZ,CAAT,EAAyB,KAAKvF,MAAL,CAAYhB,KAArC,CAAJ;IACAwG,CAAA,GAAItqB,IAAA,CAAKC,GAAL,CAASD,IAAA,CAAK4D,GAAL,CAAS0mB,CAAT,EAAY,CAAZ,CAAT,EAAyB,KAAKxF,MAAL,CAAYf,MAArC,CAAJ;IAEA,KAAK,CAAAq7D,IAAL,CAAW/0D,CAAX,EAAcC,CAAd;IACA,KAAK,CAAAxyB,OAAL;IAKA,IAAI6nF,MAAJ;IACA,IAAI,KAAKxB,WAAL,CAAiB5gF,MAAjB,KAA4B,CAAhC,EAAmC;MACjCoiF,MAAA,GAAS,KAAK,CAAAC,oBAAL,EAAT;IADiC,CAAnC,MAEO;MAEL,MAAMC,EAAA,GAAK,CAACx1D,CAAD,EAAIC,CAAJ,CAAX;MACAq1D,MAAA,GAAS,CAAC,CAACE,EAAD,EAAKA,EAAA,CAAGp8E,KAAH,EAAL,EAAiBo8E,EAAA,CAAGp8E,KAAH,EAAjB,EAA6Bo8E,EAA7B,CAAD,CAAT;IAHK;IAKP,MAAMN,MAAA,GAAS,KAAK,CAAAhC,aAApB;IACA,MAAMY,WAAA,GAAc,KAAKA,WAAzB;IACA,KAAKA,WAAL,GAAmB,EAAnB;IACA,KAAK,CAAAZ,aAAL,GAAsB,IAAIrvC,MAAJ,EAAtB;IAEA,MAAM3d,GAAA,GAAMA,CAAA,KAAM;MAChB,KAAK2tD,WAAL,CAAiB99E,IAAjB,CAAsB+9E,WAAtB;MACA,KAAK1hC,KAAL,CAAWr8C,IAAX,CAAgBu/E,MAAhB;MACA,KAAK1B,YAAL,CAAkB79E,IAAlB,CAAuBm/E,MAAvB;MACA,KAAKxwD,OAAL;IAJgB,CAAlB;IAOA,MAAMyB,IAAA,GAAOA,CAAA,KAAM;MACjB,KAAK0tD,WAAL,CAAiBliC,GAAjB;MACA,KAAKS,KAAL,CAAWT,GAAX;MACA,KAAKiiC,YAAL,CAAkBjiC,GAAlB;MACA,IAAI,KAAKS,KAAL,CAAWl/C,MAAX,KAAsB,CAA1B,EAA6B;QAC3B,KAAKgqB,MAAL;MAD2B,CAA7B,MAEO;QACL,IAAI,CAAC,KAAKzC,MAAV,EAAkB;UAChB,KAAK,CAAAqtC,YAAL;UACA,KAAK,CAAAysB,cAAL;QAFgB;QAIlB,KAAK,CAAAH,YAAL;MALK;IANU,CAAnB;IAeA,KAAKxzD,WAAL,CAAiB;MAAEsF,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EA/CiB;EAkDnB,CAAA0uD,WAAA,EAAc;IACZ,IAAI,CAAC,KAAK,CAAA3B,kBAAV,EAA+B;MAC7B;IAD6B;IAG/B,KAAK,CAAAA,kBAAL,GAA2B,KAA3B;IAEA,MAAMQ,SAAA,GAAYh+E,IAAA,CAAKq1C,IAAL,CAAU,KAAK2oC,SAAL,GAAiB,KAAK/wD,WAAhC,CAAlB;IACA,MAAM6yD,UAAA,GAAa,KAAK3B,WAAL,CAAiB16E,KAAjB,CAAuB,CAAC,CAAxB,CAAnB;IACA,MAAM4mB,CAAA,GAAIy1D,UAAA,CAAWh/E,GAAX,CAAe++E,EAAA,IAAMA,EAAA,CAAG,CAAH,CAArB,CAAV;IACA,MAAMv1D,CAAA,GAAIw1D,UAAA,CAAWh/E,GAAX,CAAe++E,EAAA,IAAMA,EAAA,CAAG,CAAH,CAArB,CAAV;IACA,MAAME,IAAA,GAAO//E,IAAA,CAAKC,GAAL,CAAS,GAAGoqB,CAAZ,IAAiB2zD,SAA9B;IACA,MAAMgC,IAAA,GAAOhgF,IAAA,CAAK4D,GAAL,CAAS,GAAGymB,CAAZ,IAAiB2zD,SAA9B;IACA,MAAMiC,IAAA,GAAOjgF,IAAA,CAAKC,GAAL,CAAS,GAAGqqB,CAAZ,IAAiB0zD,SAA9B;IACA,MAAMkC,IAAA,GAAOlgF,IAAA,CAAK4D,GAAL,CAAS,GAAG0mB,CAAZ,IAAiB0zD,SAA9B;IAEA,MAAM;MAAE97C;IAAF,IAAU,IAAhB;IACAA,GAAA,CAAItrC,IAAJ;IASEsrC,GAAA,CAAI+X,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoB,KAAKn1B,MAAL,CAAYhB,KAAhC,EAAuC,KAAKgB,MAAL,CAAYf,MAAnD;IAGF,WAAWkqB,IAAX,IAAmB,KAAKgwC,YAAxB,EAAsC;MACpC/7C,GAAA,CAAI5qC,MAAJ,CAAW22C,IAAX;IADoC;IAGtC/L,GAAA,CAAI5qC,MAAJ,CAAW,KAAK,CAAAimF,aAAhB;IAEAr7C,GAAA,CAAIrrC,OAAJ;EAjCY;EAoCd,CAAA2oF,gBAAiBD,MAAjB,EAAyBt6E,EAAzB,EAA6BC,EAA7B,EAAiCC,EAAjC,EAAqCC,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiD;IAC/C,MAAM66E,KAAA,GAAS,CAAAl7E,EAAA,GAAKE,EAAL,IAAW,CAA1B;IACA,MAAMi7E,KAAA,GAAS,CAAAl7E,EAAA,GAAKE,EAAL,IAAW,CAA1B;IACA,MAAMG,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;IACA,MAAMG,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;IAEAi6E,MAAA,CAAOj1C,aAAP,CACE61C,KAAA,GAAS,KAAKh7E,EAAA,GAAKg7E,KAAL,CAAN,GAAqB,CAD/B,EAEEC,KAAA,GAAS,KAAKh7E,EAAA,GAAKg7E,KAAL,CAAN,GAAqB,CAF/B,EAGE76E,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAHzB,EAIEC,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAJzB,EAKED,EALF,EAMEC,EANF;EAN+C;EAgBjD,CAAAo6E,qBAAA,EAAwB;IACtB,MAAM3xC,IAAA,GAAO,KAAKkwC,WAAlB;IACA,IAAIlwC,IAAA,CAAK1wC,MAAL,IAAe,CAAnB,EAAsB;MACpB,OAAO,CAAC,CAAC0wC,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,EAAmBA,IAAA,CAAK1c,EAAL,CAAQ,CAAC,CAAT,CAAnB,EAAgC0c,IAAA,CAAK1c,EAAL,CAAQ,CAAC,CAAT,CAAhC,CAAD,CAAP;IADoB;IAItB,MAAM8uD,YAAA,GAAe,EAArB;IACA,IAAIvgF,CAAJ;IACA,IAAI,CAACmF,EAAD,EAAKC,EAAL,IAAW+oC,IAAA,CAAK,CAAL,CAAf;IACA,KAAKnuC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAImuC,IAAA,CAAK1wC,MAAL,GAAc,CAA9B,EAAiCuC,CAAA,EAAjC,EAAsC;MACpC,MAAM,CAACqF,EAAD,EAAKC,EAAL,IAAW6oC,IAAA,CAAKnuC,CAAL,CAAjB;MACA,MAAM,CAACuF,EAAD,EAAKC,EAAL,IAAW2oC,IAAA,CAAKnuC,CAAA,GAAI,CAAT,CAAjB;MACA,MAAMyF,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;MACA,MAAMG,EAAA,GAAM,CAAAJ,EAAA,GAAKE,EAAL,IAAW,CAAvB;MAKA,MAAMg7E,QAAA,GAAW,CAACr7E,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAlD,CAAjB;MACA,MAAMq7E,QAAA,GAAW,CAACh7E,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAAlD,CAAjB;MAEA66E,YAAA,CAAajgF,IAAb,CAAkB,CAAC,CAAC6E,EAAD,EAAKC,EAAL,CAAD,EAAWo7E,QAAX,EAAqBC,QAArB,EAA+B,CAACh7E,EAAD,EAAKC,EAAL,CAA/B,CAAlB;MAEA,CAACP,EAAD,EAAKC,EAAL,IAAW,CAACK,EAAD,EAAKC,EAAL,CAAX;IAdoC;IAiBtC,MAAM,CAACL,EAAD,EAAKC,EAAL,IAAW6oC,IAAA,CAAKnuC,CAAL,CAAjB;IACA,MAAM,CAACuF,EAAD,EAAKC,EAAL,IAAW2oC,IAAA,CAAKnuC,CAAA,GAAI,CAAT,CAAjB;IAGA,MAAMwgF,QAAA,GAAW,CAACr7E,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKE,EAAA,GAAKF,EAAL,CAAN,GAAkB,CAAlD,CAAjB;IACA,MAAMq7E,QAAA,GAAW,CAACl7E,EAAA,GAAM,KAAKF,EAAA,GAAKE,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKF,EAAA,GAAKE,EAAL,CAAN,GAAkB,CAAlD,CAAjB;IAEA+6E,YAAA,CAAajgF,IAAb,CAAkB,CAAC,CAAC6E,EAAD,EAAKC,EAAL,CAAD,EAAWo7E,QAAX,EAAqBC,QAArB,EAA+B,CAACl7E,EAAD,EAAKC,EAAL,CAA/B,CAAlB;IACA,OAAO+6E,YAAP;EAlCsB;EAwCxB,CAAA3B,OAAA,EAAU;IACR,IAAI,KAAK5yD,OAAL,EAAJ,EAAoB;MAClB,KAAK,CAAA00D,eAAL;MACA;IAFkB;IAIpB,KAAK,CAAAvB,SAAL;IAEA,MAAM;MAAEn6D,MAAF;MAAUod;IAAV,IAAkB,IAAxB;IACAA,GAAA,CAAI6H,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;IACA7H,GAAA,CAAI+X,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBn1B,MAAA,CAAOhB,KAA3B,EAAkCgB,MAAA,CAAOf,MAAzC;IACA,KAAK,CAAAy8D,eAAL;IAEA,WAAWvyC,IAAX,IAAmB,KAAKgwC,YAAxB,EAAsC;MACpC/7C,GAAA,CAAI5qC,MAAJ,CAAW22C,IAAX;IADoC;EAZ9B;EAoBVliB,OAAA,EAAS;IACP,IAAI,KAAK,CAAAuD,cAAT,EAA0B;MACxB;IADwB;IAI1B,MAAMvD,MAAN;IAEA,KAAK/C,SAAL,GAAiB,KAAjB;IACA,KAAK4F,eAAL;IAGA,KAAKvD,eAAL;IAEA,KAAK,CAAAiE,cAAL,GAAuB,IAAvB;IACA,KAAK9F,GAAL,CAAS2F,SAAT,CAAmB/V,GAAnB,CAAuB,UAAvB;IAEA,KAAK,CAAAqlE,YAAL,CAAqC,IAArC;IAEA,KAAKj2D,MAAL,CAAYg3C,oBAAZ,CAAsD,IAAtD;IAIA,KAAKh3C,MAAL,CAAYu4C,eAAZ,CAA4B,IAA5B;IACA,KAAKv3C,GAAL,CAAS2L,KAAT,CAAe;MACbiuC,aAAA,EAAe;IADF,CAAf;EAvBO;EA6BTx6C,QAAQ9L,KAAR,EAAe;IACb,MAAM8L,OAAN,CAAc9L,KAAd;IACA,KAAK6R,cAAL;EAFa;EASf2uD,kBAAkBxgE,KAAlB,EAAyB;IACvB,IAAIA,KAAA,CAAMmR,MAAN,KAAiB,CAAjB,IAAsB,CAAC,KAAKhF,YAAL,EAAvB,IAA8C,KAAK,CAAAqG,cAAvD,EAAwE;MACtE;IADsE;IAMxE,KAAKjE,eAAL;IAEAvO,KAAA,CAAM6O,cAAN;IAEA,IAAI7O,KAAA,CAAMkG,IAAN,KAAe,OAAnB,EAA4B;MAC1B,KAAKwG,GAAL,CAAS2L,KAAT;IAD0B;IAI5B,KAAK,CAAA+pD,YAAL,CAAmBpiE,KAAA,CAAM5G,OAAzB,EAAkC4G,KAAA,CAAM3G,OAAxC;EAfuB;EAsBzB2mE,kBAAkBhgE,KAAlB,EAAyB;IACvBA,KAAA,CAAM6O,cAAN;EADuB;EAQzBqxD,kBAAkBlgE,KAAlB,EAAyB;IACvBA,KAAA,CAAM6O,cAAN;IACA,KAAK,CAAAyzD,IAAL,CAAWtiE,KAAA,CAAM5G,OAAjB,EAA0B4G,KAAA,CAAM3G,OAAhC;EAFuB;EASzBinE,gBAAgBtgE,KAAhB,EAAuB;IACrBA,KAAA,CAAM6O,cAAN;IACA,KAAK,CAAArF,UAAL,CAAiBxJ,KAAjB;EAFqB;EASvBogE,mBAAmBpgE,KAAnB,EAA0B;IACxB,KAAK,CAAAwJ,UAAL,CAAiBxJ,KAAjB;EADwB;EAQ1B,CAAAwJ,WAAYxJ,KAAZ,EAAmB;IACjB,KAAKgI,MAAL,CAAY5H,mBAAZ,CACE,cADF,EAEE,KAAK,CAAA+/D,uBAFP;IAIA,KAAKn4D,MAAL,CAAY5H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAA6/D,sBAFP;IAIA,KAAKj4D,MAAL,CAAY5H,mBAAZ,CAAgC,WAAhC,EAA6C,KAAK,CAAAigE,oBAAlD;IACA,KAAKr4D,MAAL,CAAY7H,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAogE,sBAAjD;IAIAzhE,UAAA,CAAW,MAAM;MACf,KAAKkJ,MAAL,CAAY5H,mBAAZ,CACE,aADF,EAEE,KAAK,CAAA2/D,sBAFP;IADe,CAAjB,EAKG,EALH;IAOA,KAAK,CAAA6C,WAAL,CAAkB5iE,KAAA,CAAM5G,OAAxB,EAAiC4G,KAAA,CAAM3G,OAAvC;IAEA,KAAK6U,sBAAL;IAIA,KAAKG,eAAL;EA3BiB;EAiCnB,CAAAgnC,aAAA,EAAgB;IACd,KAAKrtC,MAAL,GAAczX,QAAA,CAASugB,aAAT,CAAuB,QAAvB,CAAd;IACA,KAAK9I,MAAL,CAAYhB,KAAZ,GAAoB,KAAKgB,MAAL,CAAYf,MAAZ,GAAqB,CAAzC;IACA,KAAKe,MAAL,CAAYgJ,SAAZ,GAAwB,iBAAxB;IAEAyxC,SAAA,CAAU8C,YAAV,CACGp5D,GADH,CACO,8BADP,EAEG8F,IAFH,CAEQ1S,GAAA,IAAO,KAAKyoB,MAAL,EAAa+I,YAAb,CAA0B,YAA1B,EAAwCxxB,GAAxC,CAFf;IAGA,KAAKmtB,GAAL,CAAS+P,MAAT,CAAgB,KAAKzU,MAArB;IACA,KAAKod,GAAL,GAAW,KAAKpd,MAAL,CAAYge,UAAZ,CAAuB,IAAvB,CAAX;EATc;EAehB,CAAA87C,eAAA,EAAkB;IAChB,KAAK,CAAAlB,QAAL,GAAiB,IAAI+C,cAAJ,CAAmB94D,OAAA,IAAW;MAC7C,MAAMnjB,IAAA,GAAOmjB,OAAA,CAAQ,CAAR,EAAW+4D,WAAxB;MACA,IAAIl8E,IAAA,CAAKsf,KAAL,IAActf,IAAA,CAAKuf,MAAvB,EAA+B;QAC7B,KAAKg7D,aAAL,CAAmBv6E,IAAA,CAAKsf,KAAxB,EAA+Btf,IAAA,CAAKuf,MAApC;MAD6B;IAFc,CAA9B,CAAjB;IAMA,KAAK,CAAA25D,QAAL,CAAeiD,OAAf,CAAuB,KAAKn3D,GAA5B;EAPgB;EAWlBzS,OAAA,EAAS;IACP,IAAI,KAAKyS,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIw6C,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKngD,KAAT,EAAgB;MACdkgD,KAAA,GAAQ,KAAK35C,CAAb;MACA45C,KAAA,GAAQ,KAAK35C,CAAb;IAFc;IAKhB,MAAMvT,MAAN;IAEAwoD,SAAA,CAAU8C,YAAV,CACGp5D,GADH,CACO,wBADP,EAEG8F,IAFH,CAEQ1S,GAAA,IAAO,KAAKmtB,GAAL,EAAUqE,YAAV,CAAuB,YAAvB,EAAqCxxB,GAArC,CAFf;IAIA,MAAM,CAACguB,CAAD,EAAIC,CAAJ,EAAOi4B,CAAP,EAAUC,CAAV,IAAe,KAAK,CAAAw8B,cAAL,EAArB;IACA,KAAKvyD,KAAL,CAAWpC,CAAX,EAAcC,CAAd,EAAiB,CAAjB,EAAoB,CAApB;IACA,KAAK6C,OAAL,CAAao1B,CAAb,EAAgBC,CAAhB;IAEA,KAAK,CAAA2P,YAAL;IAEA,IAAI,KAAKruC,KAAT,EAAgB;MAEd,MAAM,CAACsJ,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;MACA,KAAKqC,KAAL,CACEu3C,KAAA,GAAQ52C,WADV,EAEE62C,KAAA,GAAQ52C,YAFV,EAGE,KAAKvJ,KAAL,GAAasJ,WAHf,EAIE,KAAKrJ,MAAL,GAAcsJ,YAJhB;MAMA,KAAK,CAAAowD,mBAAL,GAA4B,IAA5B;MACA,KAAK,CAAAoB,aAAL;MACA,KAAK1xD,OAAL,CAAa,KAAKrJ,KAAL,GAAasJ,WAA1B,EAAuC,KAAKrJ,MAAL,GAAcsJ,YAArD;MACA,KAAK,CAAAqxD,MAAL;MACA,KAAK,CAAAkC,UAAL;MACA,KAAKp3D,GAAL,CAAS2F,SAAT,CAAmB/V,GAAnB,CAAuB,UAAvB;IAdc,CAAhB,MAeO;MACL,KAAKoQ,GAAL,CAAS2F,SAAT,CAAmB/V,GAAnB,CAAuB,SAAvB;MACA,KAAKuV,cAAL;IAFK;IAKP,KAAK,CAAAiwD,cAAL;IAEA,OAAO,KAAKp1D,GAAZ;EA7CO;EAgDT,CAAAq1D,cAAA,EAAiB;IACf,IAAI,CAAC,KAAK,CAAApB,mBAAV,EAAgC;MAC9B;IAD8B;IAGhC,MAAM,CAACrwD,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;IACA,KAAKtF,MAAL,CAAYhB,KAAZ,GAAoB9jB,IAAA,CAAKq1C,IAAL,CAAU,KAAKvxB,KAAL,GAAasJ,WAAvB,CAApB;IACA,KAAKtI,MAAL,CAAYf,MAAZ,GAAqB/jB,IAAA,CAAKq1C,IAAL,CAAU,KAAKtxB,MAAL,GAAcsJ,YAAxB,CAArB;IACA,KAAK,CAAAmzD,eAAL;EAPe;EAiBjBzB,cAAcj7D,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAM88D,YAAA,GAAe7gF,IAAA,CAAK+vB,KAAL,CAAWjM,KAAX,CAArB;IACA,MAAMg9D,aAAA,GAAgB9gF,IAAA,CAAK+vB,KAAL,CAAWhM,MAAX,CAAtB;IACA,IACE,KAAK,CAAA45D,SAAL,KAAoBkD,YAApB,IACA,KAAK,CAAAjD,UAAL,KAAqBkD,aAFvB,EAGE;MACA;IADA;IAIF,KAAK,CAAAnD,SAAL,GAAkBkD,YAAlB;IACA,KAAK,CAAAjD,UAAL,GAAmBkD,aAAnB;IAEA,KAAKh8D,MAAL,CAAYsG,KAAZ,CAAkB+N,UAAlB,GAA+B,QAA/B;IAEA,IACE,KAAK,CAAAujD,WAAL,IACA18E,IAAA,CAAKgG,GAAL,CAAS,KAAK,CAAA02E,WAAL,GAAoB54D,KAAA,GAAQC,MAArC,IAA+C,IAFjD,EAGE;MACAA,MAAA,GAAS/jB,IAAA,CAAKq1C,IAAL,CAAUvxB,KAAA,GAAQ,KAAK,CAAA44D,WAAvB,CAAT;MACA,KAAKvvD,OAAL,CAAarJ,KAAb,EAAoBC,MAApB;IAFA;IAKF,MAAM,CAACqJ,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;IACA,KAAKtG,KAAL,GAAaA,KAAA,GAAQsJ,WAArB;IACA,KAAKrJ,MAAL,GAAcA,MAAA,GAASsJ,YAAvB;IAEA,IAAI,KAAK,CAAAiC,cAAT,EAA0B;MACxB,KAAK,CAAAyxD,cAAL,CAAqBj9D,KAArB,EAA4BC,MAA5B;IADwB;IAI1B,KAAK,CAAA86D,aAAL;IACA,KAAK,CAAAH,MAAL;IAEA,KAAK55D,MAAL,CAAYsG,KAAZ,CAAkB+N,UAAlB,GAA+B,SAA/B;IAIA,KAAK7L,OAAL;EAtC2B;EAyC7B,CAAAyzD,eAAgBj9D,KAAhB,EAAuBC,MAAvB,EAA+B;IAC7B,MAAM2gD,OAAA,GAAU,KAAK,CAAAsc,UAAL,EAAhB;IACA,MAAMC,YAAA,GAAgB,CAAAn9D,KAAA,GAAQ4gD,OAAR,IAAmB,KAAK,CAAAkY,SAA9C;IACA,MAAMsE,YAAA,GAAgB,CAAAn9D,MAAA,GAAS2gD,OAAT,IAAoB,KAAK,CAAAiY,UAA/C;IACA,KAAKve,WAAL,GAAmBp+D,IAAA,CAAKC,GAAL,CAASghF,YAAT,EAAuBC,YAAvB,CAAnB;EAJ6B;EAU/B,CAAAV,gBAAA,EAAmB;IACjB,MAAM9b,OAAA,GAAU,KAAK,CAAAsc,UAAL,KAAqB,CAArC;IACA,KAAK9+C,GAAL,CAAS6H,YAAT,CACE,KAAKq0B,WADP,EAEE,CAFF,EAGE,CAHF,EAIE,KAAKA,WAJP,EAKE,KAAKggB,YAAL,GAAoB,KAAKhgB,WAAzB,GAAuCsG,OALzC,EAME,KAAK2Z,YAAL,GAAoB,KAAKjgB,WAAzB,GAAuCsG,OANzC;EAFiB;EAiBnB,OAAO,CAAAyc,WAAPA,CAAoBxB,MAApB,EAA4B;IAC1B,MAAMJ,MAAA,GAAS,IAAIrxC,MAAJ,EAAf;IACA,KAAK,IAAIpuC,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK+4E,MAAA,CAAOpiF,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,EAA5C,EAAiD;MAC/C,MAAM,CAACoE,KAAD,EAAQo8E,QAAR,EAAkBC,QAAlB,EAA4Bp8E,MAA5B,IAAsCw7E,MAAA,CAAO7/E,CAAP,CAA5C;MACA,IAAIA,CAAA,KAAM,CAAV,EAAa;QACXy/E,MAAA,CAAOxoF,MAAP,CAAc,GAAGmN,KAAjB;MADW;MAGbq7E,MAAA,CAAOj1C,aAAP,CACEg2C,QAAA,CAAS,CAAT,CADF,EAEEA,QAAA,CAAS,CAAT,CAFF,EAGEC,QAAA,CAAS,CAAT,CAHF,EAIEA,QAAA,CAAS,CAAT,CAJF,EAKEp8E,MAAA,CAAO,CAAP,CALF,EAMEA,MAAA,CAAO,CAAP,CANF;IAL+C;IAcjD,OAAOo7E,MAAP;EAhB0B;EAmB5B,OAAO,CAAA6B,gBAAPA,CAAyB7zC,MAAzB,EAAiC/oC,IAAjC,EAAuCyR,QAAvC,EAAiD;IAC/C,MAAM,CAACorE,GAAD,EAAMC,GAAN,EAAWC,GAAX,EAAgBC,GAAhB,IAAuBh9E,IAA7B;IAEA,QAAQyR,QAAR;MACE,KAAK,CAAL;QACE,KAAK,IAAInW,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClDytC,MAAA,CAAOztC,CAAP,KAAauhF,GAAb;UACA9zC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgB0hF,GAAA,GAAMj0C,MAAA,CAAOztC,CAAA,GAAI,CAAX,CAAtB;QAFkD;QAIpD;MACF,KAAK,EAAL;QACE,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMuqB,CAAA,GAAIkjB,MAAA,CAAOztC,CAAP,CAAV;UACAytC,MAAA,CAAOztC,CAAP,IAAYytC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgBuhF,GAA5B;UACA9zC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgBuqB,CAAA,GAAIi3D,GAApB;QAHkD;QAKpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIxhF,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClDytC,MAAA,CAAOztC,CAAP,IAAYyhF,GAAA,GAAMh0C,MAAA,CAAOztC,CAAP,CAAlB;UACAytC,MAAA,CAAOztC,CAAA,GAAI,CAAX,KAAiBwhF,GAAjB;QAFkD;QAIpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIxhF,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMuqB,CAAA,GAAIkjB,MAAA,CAAOztC,CAAP,CAAV;UACAytC,MAAA,CAAOztC,CAAP,IAAYyhF,GAAA,GAAMh0C,MAAA,CAAOztC,CAAA,GAAI,CAAX,CAAlB;UACAytC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgB0hF,GAAA,GAAMn3D,CAAtB;QAHkD;QAKpD;MACF;QACE,MAAM,IAAI3tB,KAAJ,CAAU,kBAAV,CAAN;IA5BJ;IA8BA,OAAO6wC,MAAP;EAjC+C;EAoCjD,OAAO,CAAAk0C,kBAAPA,CAA2Bl0C,MAA3B,EAAmC/oC,IAAnC,EAAyCyR,QAAzC,EAAmD;IACjD,MAAM,CAACorE,GAAD,EAAMC,GAAN,EAAWC,GAAX,EAAgBC,GAAhB,IAAuBh9E,IAA7B;IAEA,QAAQyR,QAAR;MACE,KAAK,CAAL;QACE,KAAK,IAAInW,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClDytC,MAAA,CAAOztC,CAAP,KAAauhF,GAAb;UACA9zC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgB0hF,GAAA,GAAMj0C,MAAA,CAAOztC,CAAA,GAAI,CAAX,CAAtB;QAFkD;QAIpD;MACF,KAAK,EAAL;QACE,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMuqB,CAAA,GAAIkjB,MAAA,CAAOztC,CAAP,CAAV;UACAytC,MAAA,CAAOztC,CAAP,IAAYytC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgBwhF,GAA5B;UACA/zC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgBuqB,CAAA,GAAIg3D,GAApB;QAHkD;QAKpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIvhF,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClDytC,MAAA,CAAOztC,CAAP,IAAYyhF,GAAA,GAAMh0C,MAAA,CAAOztC,CAAP,CAAlB;UACAytC,MAAA,CAAOztC,CAAA,GAAI,CAAX,KAAiBwhF,GAAjB;QAFkD;QAIpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIxhF,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK2mC,MAAA,CAAOhwC,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMuqB,CAAA,GAAIkjB,MAAA,CAAOztC,CAAP,CAAV;UACAytC,MAAA,CAAOztC,CAAP,IAAY0hF,GAAA,GAAMj0C,MAAA,CAAOztC,CAAA,GAAI,CAAX,CAAlB;UACAytC,MAAA,CAAOztC,CAAA,GAAI,CAAX,IAAgByhF,GAAA,GAAMl3D,CAAtB;QAHkD;QAKpD;MACF;QACE,MAAM,IAAI3tB,KAAJ,CAAU,kBAAV,CAAN;IA5BJ;IA8BA,OAAO6wC,MAAP;EAjCiD;EA2CnD,CAAAm0C,eAAgB/6C,CAAhB,EAAmBja,EAAnB,EAAuBC,EAAvB,EAA2BnoB,IAA3B,EAAiC;IAC/B,MAAMi4C,KAAA,GAAQ,EAAd;IACA,MAAMioB,OAAA,GAAU,KAAKsZ,SAAL,GAAiB,CAAjC;IACA,MAAMzvD,MAAA,GAASoY,CAAA,GAAIja,EAAJ,GAASg4C,OAAxB;IACA,MAAMl2C,MAAA,GAASmY,CAAA,GAAIha,EAAJ,GAAS+3C,OAAxB;IACA,WAAWib,MAAX,IAAqB,KAAKljC,KAA1B,EAAiC;MAC/B,MAAMp7C,MAAA,GAAS,EAAf;MACA,MAAMksC,MAAA,GAAS,EAAf;MACA,KAAK,IAAItnC,CAAA,GAAI,CAAR,EAAWukD,EAAA,GAAKm1B,MAAA,CAAOpiF,MAAvB,EAA+B0I,CAAA,GAAIukD,EAAxC,EAA4CvkD,CAAA,EAA5C,EAAiD;QAC/C,MAAM,CAAC/B,KAAD,EAAQo8E,QAAR,EAAkBC,QAAlB,EAA4Bp8E,MAA5B,IAAsCw7E,MAAA,CAAO15E,CAAP,CAA5C;QACA,MAAM07E,GAAA,GAAMh7C,CAAA,GAAIziC,KAAA,CAAM,CAAN,CAAJ,GAAeqqB,MAA3B;QACA,MAAMqzD,GAAA,GAAMj7C,CAAA,GAAIziC,KAAA,CAAM,CAAN,CAAJ,GAAesqB,MAA3B;QACA,MAAMqzD,GAAA,GAAMl7C,CAAA,GAAI25C,QAAA,CAAS,CAAT,CAAJ,GAAkB/xD,MAA9B;QACA,MAAMuzD,GAAA,GAAMn7C,CAAA,GAAI25C,QAAA,CAAS,CAAT,CAAJ,GAAkB9xD,MAA9B;QACA,MAAMuzD,GAAA,GAAMp7C,CAAA,GAAI45C,QAAA,CAAS,CAAT,CAAJ,GAAkBhyD,MAA9B;QACA,MAAMyzD,GAAA,GAAMr7C,CAAA,GAAI45C,QAAA,CAAS,CAAT,CAAJ,GAAkB/xD,MAA9B;QACA,MAAMyzD,GAAA,GAAMt7C,CAAA,GAAIxiC,MAAA,CAAO,CAAP,CAAJ,GAAgBoqB,MAA5B;QACA,MAAM2zD,GAAA,GAAMv7C,CAAA,GAAIxiC,MAAA,CAAO,CAAP,CAAJ,GAAgBqqB,MAA5B;QAEA,IAAIvoB,CAAA,KAAM,CAAV,EAAa;UACX5E,MAAA,CAAOjB,IAAP,CAAYuhF,GAAZ,EAAiBC,GAAjB;UACAr0C,MAAA,CAAOntC,IAAP,CAAYuhF,GAAZ,EAAiBC,GAAjB;QAFW;QAIbvgF,MAAA,CAAOjB,IAAP,CAAYyhF,GAAZ,EAAiBC,GAAjB,EAAsBC,GAAtB,EAA2BC,GAA3B,EAAgCC,GAAhC,EAAqCC,GAArC;QACA30C,MAAA,CAAOntC,IAAP,CAAYyhF,GAAZ,EAAiBC,GAAjB;QACA,IAAI77E,CAAA,KAAMukD,EAAA,GAAK,CAAf,EAAkB;UAChBjd,MAAA,CAAOntC,IAAP,CAAY6hF,GAAZ,EAAiBC,GAAjB;QADgB;MAjB6B;MAqBjDzlC,KAAA,CAAMr8C,IAAN,CAAW;QACTu/E,MAAA,EAAQpgB,SAAA,CAAU,CAAA6hB,gBAAV,CAA4B//E,MAA5B,EAAoCmD,IAApC,EAA0C,KAAKyR,QAA/C,CADC;QAETs3B,MAAA,EAAQgyB,SAAA,CAAU,CAAA6hB,gBAAV,CAA4B7zC,MAA5B,EAAoC/oC,IAApC,EAA0C,KAAKyR,QAA/C;MAFC,CAAX;IAxB+B;IA8BjC,OAAOwmC,KAAP;EAnC+B;EA0CjC,CAAA0lC,QAAA,EAAW;IACT,IAAIpC,IAAA,GAAO/uC,QAAX;IACA,IAAIgvC,IAAA,GAAO,CAAChvC,QAAZ;IACA,IAAIivC,IAAA,GAAOjvC,QAAX;IACA,IAAIkvC,IAAA,GAAO,CAAClvC,QAAZ;IAEA,WAAW/C,IAAX,IAAmB,KAAKwO,KAAxB,EAA+B;MAC7B,WAAW,CAACv4C,KAAD,EAAQo8E,QAAR,EAAkBC,QAAlB,EAA4Bp8E,MAA5B,CAAX,IAAkD8pC,IAAlD,EAAwD;QACtD,MAAMiT,IAAA,GAAO7+C,UAAA,CAAK2C,iBAAL,CACX,GAAGd,KADQ,EAEX,GAAGo8E,QAFQ,EAGX,GAAGC,QAHQ,EAIX,GAAGp8E,MAJQ,CAAb;QAMA47E,IAAA,GAAO//E,IAAA,CAAKC,GAAL,CAAS8/E,IAAT,EAAe7+B,IAAA,CAAK,CAAL,CAAf,CAAP;QACA++B,IAAA,GAAOjgF,IAAA,CAAKC,GAAL,CAASggF,IAAT,EAAe/+B,IAAA,CAAK,CAAL,CAAf,CAAP;QACA8+B,IAAA,GAAOhgF,IAAA,CAAK4D,GAAL,CAASo8E,IAAT,EAAe9+B,IAAA,CAAK,CAAL,CAAf,CAAP;QACAg/B,IAAA,GAAOlgF,IAAA,CAAK4D,GAAL,CAASs8E,IAAT,EAAeh/B,IAAA,CAAK,CAAL,CAAf,CAAP;MAVsD;IAD3B;IAe/B,OAAO,CAAC6+B,IAAD,EAAOE,IAAP,EAAaD,IAAb,EAAmBE,IAAnB,CAAP;EArBS;EA+BX,CAAAc,WAAA,EAAc;IACZ,OAAO,KAAK,CAAA1xD,cAAL,GACHtvB,IAAA,CAAKq1C,IAAL,CAAU,KAAK2oC,SAAL,GAAiB,KAAK/wD,WAAhC,CADG,GAEH,CAFJ;EADY;EAWd,CAAAwxD,aAAc2D,SAAA,GAAY,KAA1B,EAAiC;IAC/B,IAAI,KAAKt2D,OAAL,EAAJ,EAAoB;MAClB;IADkB;IAIpB,IAAI,CAAC,KAAK,CAAAwD,cAAV,EAA2B;MACzB,KAAK,CAAAovD,MAAL;MACA;IAFyB;IAK3B,MAAMx9B,IAAA,GAAO,KAAK,CAAAihC,OAAL,EAAb;IACA,MAAMzd,OAAA,GAAU,KAAK,CAAAsc,UAAL,EAAhB;IACA,KAAK,CAAApE,SAAL,GAAkB58E,IAAA,CAAK4D,GAAL,CAAS64E,YAAT,EAAuBv7B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAjC,CAAlB;IACA,KAAK,CAAAy7B,UAAL,GAAmB38E,IAAA,CAAK4D,GAAL,CAAS64E,YAAT,EAAuBv7B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAjC,CAAnB;IAEA,MAAMp9B,KAAA,GAAQ9jB,IAAA,CAAKq1C,IAAL,CAAUqvB,OAAA,GAAU,KAAK,CAAAkY,SAAL,GAAkB,KAAKxe,WAA3C,CAAd;IACA,MAAMr6C,MAAA,GAAS/jB,IAAA,CAAKq1C,IAAL,CAAUqvB,OAAA,GAAU,KAAK,CAAAiY,UAAL,GAAmB,KAAKve,WAA5C,CAAf;IAEA,MAAM,CAAChxC,WAAD,EAAcC,YAAd,IAA8B,KAAKjD,gBAAzC;IACA,KAAKtG,KAAL,GAAaA,KAAA,GAAQsJ,WAArB;IACA,KAAKrJ,MAAL,GAAcA,MAAA,GAASsJ,YAAvB;IAEA,KAAK,CAAAqvD,WAAL,GAAoB54D,KAAA,GAAQC,MAA5B;IACA,KAAK,CAAA68D,UAAL;IAEA,MAAMyB,gBAAA,GAAmB,KAAKjE,YAA9B;IACA,MAAMkE,gBAAA,GAAmB,KAAKjE,YAA9B;IAEA,KAAKD,YAAL,GAAoB,CAACl9B,IAAA,CAAK,CAAL,CAArB;IACA,KAAKm9B,YAAL,GAAoB,CAACn9B,IAAA,CAAK,CAAL,CAArB;IACA,KAAK,CAAA29B,aAAL;IACA,KAAK,CAAAH,MAAL;IAEA,KAAK,CAAAf,SAAL,GAAkB75D,KAAlB;IACA,KAAK,CAAA85D,UAAL,GAAmB75D,MAAnB;IAEA,KAAKoJ,OAAL,CAAarJ,KAAb,EAAoBC,MAApB;IACA,MAAMw+D,eAAA,GAAkBH,SAAA,GAAY1d,OAAA,GAAU,KAAKtG,WAAf,GAA6B,CAAzC,GAA6C,CAArE;IACA,KAAKrxC,SAAL,CACEs1D,gBAAA,GAAmB,KAAKjE,YAAxB,GAAuCmE,eADzC,EAEED,gBAAA,GAAmB,KAAKjE,YAAxB,GAAuCkE,eAFzC;EAtC+B;EA4CjC,CAAA3B,WAAA,EAAc;IACZ,MAAM;MAAEx1D;IAAF,IAAY,KAAK5B,GAAvB;IACA,IAAI,KAAK,CAAAkzD,WAAL,IAAqB,CAAzB,EAA4B;MAC1BtxD,KAAA,CAAMo3D,SAAN,GAAkB,GAAG/F,YAAa,IAAlC;MACArxD,KAAA,CAAMq3D,QAAN,GAAiB,GAAGziF,IAAA,CAAK+vB,KAAL,CAAW,KAAK,CAAA2sD,WAAL,GAAoBD,YAA/B,CAA6C,IAAjE;IAF0B,CAA5B,MAGO;MACLrxD,KAAA,CAAMq3D,QAAN,GAAiB,GAAGhG,YAAa,IAAjC;MACArxD,KAAA,CAAMo3D,SAAN,GAAkB,GAAGxiF,IAAA,CAAK+vB,KAAL,CAAW0sD,YAAA,GAAe,KAAK,CAAAC,WAA/B,CAA6C,IAAlE;IAFK;EALK;EAYd,OAAOztD,WAAPA,CAAmBzmB,IAAnB,EAAyBggB,MAAzB,EAAiCiB,SAAjC,EAA4C;IAC1C,IAAIjhB,IAAA,YAAgB49D,sCAApB,EAA0C;MACxC,OAAO,IAAP;IADwC;IAG1C,MAAMx7C,MAAA,GAAS,MAAMqE,WAAN,CAAkBzmB,IAAlB,EAAwBggB,MAAxB,EAAgCiB,SAAhC,CAAf;IAEAmB,MAAA,CAAOozD,SAAP,GAAmBx1E,IAAA,CAAKw1E,SAAxB;IACApzD,MAAA,CAAOqH,KAAP,GAAe5vB,UAAA,CAAKC,YAAL,CAAkB,GAAGkG,IAAA,CAAKypB,KAA1B,CAAf;IACArH,MAAA,CAAOkF,OAAP,GAAiBtnB,IAAA,CAAKsnB,OAAtB;IAEA,MAAM,CAAClG,SAAD,EAAYC,UAAZ,IAA0Be,MAAA,CAAOV,cAAvC;IACA,MAAMpG,KAAA,GAAQ8G,MAAA,CAAO9G,KAAP,GAAe8F,SAA7B;IACA,MAAM7F,MAAA,GAAS6G,MAAA,CAAO7G,MAAP,GAAgB8F,UAA/B;IACA,MAAMu0C,WAAA,GAAcxzC,MAAA,CAAOqC,WAA3B;IACA,MAAMy3C,OAAA,GAAUl8D,IAAA,CAAKw1E,SAAL,GAAiB,CAAjC;IAEApzD,MAAA,CAAO,CAAA8xD,WAAP,GAAsB54D,KAAA,GAAQC,MAA9B;IACA6G,MAAA,CAAO,CAAA0E,cAAP,GAAyB,IAAzB;IACA1E,MAAA,CAAO,CAAA+yD,SAAP,GAAoB39E,IAAA,CAAK+vB,KAAL,CAAWjM,KAAX,CAApB;IACA8G,MAAA,CAAO,CAAAgzD,UAAP,GAAqB59E,IAAA,CAAK+vB,KAAL,CAAWhM,MAAX,CAArB;IAEA,MAAM;MAAE04B,KAAF;MAASj4C,IAAT;MAAeyR;IAAf,IAA4BzN,IAAlC;IAEA,SAAS;MAAEm3E;IAAF,CAAT,IAAuBljC,KAAvB,EAA8B;MAC5BkjC,MAAA,GAASpgB,SAAA,CAAU,CAAAkiB,kBAAV,CAA8B9B,MAA9B,EAAsCn7E,IAAtC,EAA4CyR,QAA5C,CAAT;MACA,MAAMg4B,IAAA,GAAO,EAAb;MACArjB,MAAA,CAAO6xB,KAAP,CAAar8C,IAAb,CAAkB6tC,IAAlB;MACA,IAAIE,EAAA,GAAKiwB,WAAA,IAAeuhB,MAAA,CAAO,CAAP,IAAYjb,OAAZ,CAAxB;MACA,IAAInhE,EAAA,GAAK66D,WAAA,IAAeuhB,MAAA,CAAO,CAAP,IAAYjb,OAAZ,CAAxB;MACA,KAAK,IAAI5kE,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK+4E,MAAA,CAAOpiF,MAAvB,EAA+BuC,CAAA,GAAI8G,EAAxC,EAA4C9G,CAAA,IAAK,CAAjD,EAAoD;QAClD,MAAM6hF,GAAA,GAAMvjB,WAAA,IAAeuhB,MAAA,CAAO7/E,CAAP,IAAY4kE,OAAZ,CAA3B;QACA,MAAMkd,GAAA,GAAMxjB,WAAA,IAAeuhB,MAAA,CAAO7/E,CAAA,GAAI,CAAX,IAAgB4kE,OAAhB,CAA3B;QACA,MAAMmd,GAAA,GAAMzjB,WAAA,IAAeuhB,MAAA,CAAO7/E,CAAA,GAAI,CAAX,IAAgB4kE,OAAhB,CAA3B;QACA,MAAMod,GAAA,GAAM1jB,WAAA,IAAeuhB,MAAA,CAAO7/E,CAAA,GAAI,CAAX,IAAgB4kE,OAAhB,CAA3B;QACA,MAAMqd,GAAA,GAAM3jB,WAAA,IAAeuhB,MAAA,CAAO7/E,CAAA,GAAI,CAAX,IAAgB4kE,OAAhB,CAA3B;QACA,MAAMsd,GAAA,GAAM5jB,WAAA,IAAeuhB,MAAA,CAAO7/E,CAAA,GAAI,CAAX,IAAgB4kE,OAAhB,CAA3B;QACAz2B,IAAA,CAAK7tC,IAAL,CAAU,CACR,CAAC+tC,EAAD,EAAK5qC,EAAL,CADQ,EAER,CAACo+E,GAAD,EAAMC,GAAN,CAFQ,EAGR,CAACC,GAAD,EAAMC,GAAN,CAHQ,EAIR,CAACC,GAAD,EAAMC,GAAN,CAJQ,CAAV;QAMA7zC,EAAA,GAAK4zC,GAAL;QACAx+E,EAAA,GAAKy+E,GAAL;MAdkD;MAgBpD,MAAMzC,MAAA,GAAS,KAAK,CAAA4B,WAAL,CAAkBlzC,IAAlB,CAAf;MACArjB,MAAA,CAAOqzD,YAAP,CAAoB79E,IAApB,CAAyBm/E,MAAzB;IAvB4B;IA0B9B,MAAMr+B,IAAA,GAAOt2B,MAAA,CAAO,CAAAu3D,OAAP,EAAb;IACAv3D,MAAA,CAAO,CAAAgyD,SAAP,GAAoB58E,IAAA,CAAK4D,GAAL,CAAS64E,YAAT,EAAuBv7B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAjC,CAApB;IACAt2B,MAAA,CAAO,CAAA+xD,UAAP,GAAqB38E,IAAA,CAAK4D,GAAL,CAAS64E,YAAT,EAAuBv7B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAjC,CAArB;IACAt2B,MAAA,CAAO,CAAAm2D,cAAP,CAAuBj9D,KAAvB,EAA8BC,MAA9B;IAEA,OAAO6G,MAAP;EAtD0C;EA0D5CzC,UAAA,EAAY;IACV,IAAI,KAAK2D,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,MAAMtnB,IAAA,GAAO,KAAK8pB,OAAL,CAAa,CAAb,EAAgB,CAAhB,CAAb;IACA,MAAM2D,KAAA,GAAQzK,wBAAA,CAAiB6B,aAAjB,CAA+B2I,OAA/B,CAAuC,KAAKkQ,GAAL,CAASmR,WAAhD,CAAd;IAEA,OAAO;MACL6tB,cAAA,EAAgB5yE,0BAAA,CAAqBI,GADhC;MAELujC,KAFK;MAGL+rD,SAAA,EAAW,KAAKA,SAHX;MAILluD,OAAA,EAAS,KAAKA,OAJT;MAKL2sB,KAAA,EAAO,KAAK,CAAAilC,cAAL,CACL,KAAKtjB,WAAL,GAAmB,KAAKnxC,WADnB,EAEL,KAAKmxD,YAFA,EAGL,KAAKC,YAHA,EAIL75E,IAJK,CALF;MAWLwQ,SAAA,EAAW,KAAKA,SAXX;MAYLxQ,IAZK;MAaLyR,QAAA,EAAU,KAAKA;IAbV,CAAP;EARU;AAtoC2B;AAhCzChpB,iBAAA,GAAAsyE,SAAA;;;;;;;;;;;;ACgBA,IAAAl2D,cAAA,GAAAF,mBAAA;AACA,IAAAD,KAAA,GAAAC,mBAAA;AASA,IAAAM,QAAA,GAAAN,mBAAA;AAEA;AAMA,MAAMu5E,YAAA,GAAe;EACnBC,SAAA,EAAW,QADQ;EAEnB56C,UAAA,EAAY,QAFO;EAGnBsH,SAAA,EAAW;AAHQ,CAArB;AAKA,MAAMuzC,MAAA,GAAS,sCAAf;AACA,MAAMC,QAAA,GAAW,8BAAjB;AACA,MAAM3sC,eAAA,GAAkB,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAAxB;AACA,MAAMC,gBAAA,GAAmB,CAAC,OAAD,EAAU,OAAV,EAAmB,OAAnB,CAAzB;AAEA,MAAMh4B,eAAA,GAAkB,SAAAA,CACtB3V,IADsB,EAEtBs6E,WAAA,GAAc,EAFQ,EAGtBC,eAAA,GAAkB,KAHI,EAItB;EACA,IAAIplF,GAAA,CAAIwgB,eAAJ,IAAuB,OAAOC,IAAP,KAAgB,WAAvC,IAAsD,CAAC2kE,eAA3D,EAA4E;IAC1E,OAAOplF,GAAA,CAAIwgB,eAAJ,CAAoB,IAAIC,IAAJ,CAAS,CAAC5V,IAAD,CAAT,EAAiB;MAAEwa,IAAA,EAAM8/D;IAAR,CAAjB,CAApB,CAAP;EAD0E;EAI5E,MAAME,MAAA,GACJ,mEADF;EAGA,IAAI3hF,MAAA,GAAU,QAAOyhF,WAAY,UAAjC;EACA,KAAK,IAAIhjF,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAK4B,IAAA,CAAKjL,MAArB,EAA6BuC,CAAA,GAAI8G,EAAtC,EAA0C9G,CAAA,IAAK,CAA/C,EAAkD;IAChD,MAAMmjF,EAAA,GAAKz6E,IAAA,CAAK1I,CAAL,IAAU,IAArB;IACA,MAAMojF,EAAA,GAAK16E,IAAA,CAAK1I,CAAA,GAAI,CAAT,IAAc,IAAzB;IACA,MAAMqjF,EAAA,GAAK36E,IAAA,CAAK1I,CAAA,GAAI,CAAT,IAAc,IAAzB;IACA,MAAMsjF,EAAA,GAAKH,EAAA,IAAM,CAAjB;MACEI,EAAA,GAAO,CAAAJ,EAAA,GAAK,CAAL,KAAW,CAAb,GAAmBC,EAAA,IAAM,CADhC;IAEA,MAAMI,EAAA,GAAKxjF,CAAA,GAAI,CAAJ,GAAQ8G,EAAR,GAAe,CAAAs8E,EAAA,GAAK,GAAL,KAAa,CAAf,GAAqBC,EAAA,IAAM,CAAxC,GAA6C,EAAxD;IACA,MAAMI,EAAA,GAAKzjF,CAAA,GAAI,CAAJ,GAAQ8G,EAAR,GAAau8E,EAAA,GAAK,IAAlB,GAAyB,EAApC;IACA9hF,MAAA,IAAU2hF,MAAA,CAAOI,EAAP,IAAaJ,MAAA,CAAOK,EAAP,CAAb,GAA0BL,MAAA,CAAOM,EAAP,CAA1B,GAAuCN,MAAA,CAAOO,EAAP,CAAjD;EARgD;EAUlD,OAAOliF,MAAP;AAnBA,CAJF;AA0BA,MAAMmiF,mBAAA,GAAuB,YAAY;EACvC,MAAMC,UAAA,GAAa,IAAIjjF,UAAJ,CAAe,CAChC,IADgC,EAC1B,IAD0B,EACpB,IADoB,EACd,IADc,EACR,IADQ,EACF,IADE,EACI,IADJ,EACU,IADV,CAAf,CAAnB;EAGA,MAAMkjF,kBAAA,GAAqB,EAA3B;EAEA,MAAMC,QAAA,GAAW,IAAI31C,UAAJ,CAAe,GAAf,CAAjB;EACA,KAAK,IAAIluC,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;IAC5B,IAAImE,CAAA,GAAInE,CAAR;IACA,KAAK,IAAI0iD,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,CAApB,EAAuBA,CAAA,EAAvB,EAA4B;MAC1B,IAAIv+C,CAAA,GAAI,CAAR,EAAW;QACTA,CAAA,GAAI,aAAeA,CAAA,IAAK,CAAN,GAAW,UAA7B;MADS,CAAX,MAEO;QACLA,CAAA,GAAKA,CAAA,IAAK,CAAN,GAAW,UAAf;MADK;IAHmB;IAO5B0/E,QAAA,CAAS7jF,CAAT,IAAcmE,CAAd;EAT4B;EAY9B,SAAS2/E,KAATA,CAAep7E,IAAf,EAAqBuyB,KAArB,EAA4B9oB,GAA5B,EAAiC;IAC/B,IAAI4xE,GAAA,GAAM,CAAC,CAAX;IACA,KAAK,IAAI/jF,CAAA,GAAIi7B,KAAR,EAAej7B,CAAA,GAAImS,GAAxB,EAA6BnS,CAAA,EAA7B,EAAkC;MAChC,MAAMkE,CAAA,GAAK,CAAA6/E,GAAA,GAAMr7E,IAAA,CAAK1I,CAAL,CAAN,IAAiB,IAA5B;MACA,MAAM2C,CAAA,GAAIkhF,QAAA,CAAS3/E,CAAT,CAAV;MACA6/E,GAAA,GAAOA,GAAA,KAAQ,CAAT,GAAcphF,CAApB;IAHgC;IAKlC,OAAOohF,GAAA,GAAM,CAAC,CAAd;EAP+B;EAUjC,SAASC,aAATA,CAAuB9gE,IAAvB,EAA6BwW,IAA7B,EAAmChxB,IAAnC,EAAyCi+B,MAAzC,EAAiD;IAC/C,IAAIzjC,CAAA,GAAIyjC,MAAR;IACA,MAAMs9C,GAAA,GAAMvqD,IAAA,CAAKj8B,MAAjB;IAEAiL,IAAA,CAAKxF,CAAL,IAAW+gF,GAAA,IAAO,EAAR,GAAc,IAAxB;IACAv7E,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAe+gF,GAAA,IAAO,EAAR,GAAc,IAA5B;IACAv7E,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAe+gF,GAAA,IAAO,CAAR,GAAa,IAA3B;IACAv7E,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAc+gF,GAAA,GAAM,IAApB;IACA/gF,CAAA,IAAK,CAAL;IAEAwF,IAAA,CAAKxF,CAAL,IAAUggB,IAAA,CAAKviB,UAAL,CAAgB,CAAhB,IAAqB,IAA/B;IACA+H,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAcggB,IAAA,CAAKviB,UAAL,CAAgB,CAAhB,IAAqB,IAAnC;IACA+H,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAcggB,IAAA,CAAKviB,UAAL,CAAgB,CAAhB,IAAqB,IAAnC;IACA+H,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAcggB,IAAA,CAAKviB,UAAL,CAAgB,CAAhB,IAAqB,IAAnC;IACAuC,CAAA,IAAK,CAAL;IAEAwF,IAAA,CAAKoP,GAAL,CAAS4hB,IAAT,EAAex2B,CAAf;IACAA,CAAA,IAAKw2B,IAAA,CAAKj8B,MAAV;IAEA,MAAMsmF,GAAA,GAAMD,KAAA,CAAMp7E,IAAN,EAAYi+B,MAAA,GAAS,CAArB,EAAwBzjC,CAAxB,CAAZ;IACAwF,IAAA,CAAKxF,CAAL,IAAW6gF,GAAA,IAAO,EAAR,GAAc,IAAxB;IACAr7E,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAe6gF,GAAA,IAAO,EAAR,GAAc,IAA5B;IACAr7E,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAe6gF,GAAA,IAAO,CAAR,GAAa,IAA3B;IACAr7E,IAAA,CAAKxF,CAAA,GAAI,CAAT,IAAc6gF,GAAA,GAAM,IAApB;EAvB+C;EA0BjD,SAASG,OAATA,CAAiBx7E,IAAjB,EAAuBuyB,KAAvB,EAA8B9oB,GAA9B,EAAmC;IACjC,IAAIjO,CAAA,GAAI,CAAR;IACA,IAAIvB,CAAA,GAAI,CAAR;IACA,KAAK,IAAI3C,CAAA,GAAIi7B,KAAR,EAAej7B,CAAA,GAAImS,GAAxB,EAA6B,EAAEnS,CAA/B,EAAkC;MAChCkE,CAAA,GAAK,CAAAA,CAAA,IAAKwE,IAAA,CAAK1I,CAAL,IAAU,IAAV,CAAL,IAAwB,KAA7B;MACA2C,CAAA,GAAK,CAAAA,CAAA,GAAIuB,CAAJ,IAAS,KAAd;IAFgC;IAIlC,OAAQvB,CAAA,IAAK,EAAN,GAAYuB,CAAnB;EAPiC;EAgBnC,SAASigF,WAATA,CAAqBC,QAArB,EAA+B;IAC7B,IAAI,CAAC/5E,iBAAL,EAAe;MAIb,OAAOg6E,uBAAA,CAAwBD,QAAxB,CAAP;IAJa;IAMf,IAAI;MAUF,IAAInjD,KAAJ;MAEA,IAAIG,QAAA,CAASsH,OAAA,CAAQC,QAAR,CAAiBopB,IAA1B,KAAmC,CAAvC,EAA0C;QACxC9wB,KAAA,GAAQmjD,QAAR;MADwC,CAA1C,MAEO;QAELnjD,KAAA,GAAQtwB,MAAA,CAAO+zD,IAAP,CAAY0f,QAAZ,CAAR;MAFK;MAIP,MAAMvyB,MAAA,GAASn0C,OAAA,CAAwB,MAAxB,EAAgCymE,WAAhC,CAA4CljD,KAA5C,EAAmD;QAChE/kC,KAAA,EAAO;MADyD,CAAnD,CAAf;MAGA,OAAO21D,MAAA,YAAkBnxD,UAAlB,GAA+BmxD,MAA/B,GAAwC,IAAInxD,UAAJ,CAAemxD,MAAf,CAA/C;IArBE,CAAJ,CAsBE,OAAOxvB,CAAP,EAAU;MACV,IAAA3lC,UAAA,EAAK,kEAAkE2lC,CAAvE;IADU;IAIZ,OAAOgiD,uBAAA,CAAwBD,QAAxB,CAAP;EAjC6B;EAqC/B,SAASC,uBAATA,CAAiCD,QAAjC,EAA2C;IACzC,IAAIH,GAAA,GAAMG,QAAA,CAAS3mF,MAAnB;IACA,MAAM6mF,cAAA,GAAiB,MAAvB;IAEA,MAAMC,aAAA,GAAgBrkF,IAAA,CAAKq1C,IAAL,CAAU0uC,GAAA,GAAMK,cAAhB,CAAtB;IACA,MAAME,IAAA,GAAO,IAAI9jF,UAAJ,CAAe,IAAIujF,GAAJ,GAAUM,aAAA,GAAgB,CAA1B,GAA8B,CAA7C,CAAb;IACA,IAAIE,EAAA,GAAK,CAAT;IACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;IACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;IAEA,IAAI72C,GAAA,GAAM,CAAV;IACA,OAAOq2C,GAAA,GAAMK,cAAb,EAA6B;MAE3BE,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;MACAD,IAAA,CAAK1sE,GAAL,CAASssE,QAAA,CAAS/jF,QAAT,CAAkButC,GAAlB,EAAuBA,GAAA,GAAM02C,cAA7B,CAAT,EAAuDG,EAAvD;MACAA,EAAA,IAAMH,cAAN;MACA12C,GAAA,IAAO02C,cAAP;MACAL,GAAA,IAAOK,cAAP;IAV2B;IAc7BE,IAAA,CAAKC,EAAA,EAAL,IAAa,IAAb;IACAD,IAAA,CAAKC,EAAA,EAAL,IAAaR,GAAA,GAAM,IAAnB;IACAO,IAAA,CAAKC,EAAA,EAAL,IAAcR,GAAA,IAAO,CAAR,GAAa,IAA1B;IACAO,IAAA,CAAKC,EAAA,EAAL,IAAa,CAACR,GAAD,GAAO,MAAP,GAAgB,IAA7B;IACAO,IAAA,CAAKC,EAAA,EAAL,IAAe,EAACR,GAAD,GAAO,MAAP,KAAkB,CAApB,GAAyB,IAAtC;IACAO,IAAA,CAAK1sE,GAAL,CAASssE,QAAA,CAAS/jF,QAAT,CAAkButC,GAAlB,CAAT,EAAiC62C,EAAjC;IACAA,EAAA,IAAML,QAAA,CAAS3mF,MAAT,GAAkBmwC,GAAxB;IAEA,MAAM82C,KAAA,GAAQR,OAAA,CAAQE,QAAR,EAAkB,CAAlB,EAAqBA,QAAA,CAAS3mF,MAA9B,CAAd;IACA+mF,IAAA,CAAKC,EAAA,EAAL,IAAcC,KAAA,IAAS,EAAV,GAAgB,IAA7B;IACAF,IAAA,CAAKC,EAAA,EAAL,IAAcC,KAAA,IAAS,EAAV,GAAgB,IAA7B;IACAF,IAAA,CAAKC,EAAA,EAAL,IAAcC,KAAA,IAAS,CAAV,GAAe,IAA5B;IACAF,IAAA,CAAKC,EAAA,EAAL,IAAaC,KAAA,GAAQ,IAArB;IACA,OAAOF,IAAP;EAtCyC;EAyC3C,SAASG,MAATA,CAAgBt3C,OAAhB,EAAyB4E,IAAzB,EAA+BgxC,eAA/B,EAAgD2B,MAAhD,EAAwD;IACtD,MAAM5gE,KAAA,GAAQqpB,OAAA,CAAQrpB,KAAtB;IACA,MAAMC,MAAA,GAASopB,OAAA,CAAQppB,MAAvB;IACA,IAAI4gE,QAAJ,EAAcC,SAAd,EAAyBn3C,QAAzB;IACA,MAAMluC,KAAA,GAAQ4tC,OAAA,CAAQ3kC,IAAtB;IAEA,QAAQupC,IAAR;MACE,KAAK1hD,eAAA,CAAUC,cAAf;QACEs0F,SAAA,GAAY,CAAZ;QACAD,QAAA,GAAW,CAAX;QACAl3C,QAAA,GAAY3pB,KAAA,GAAQ,CAAT,IAAe,CAA1B;QACA;MACF,KAAKzzB,eAAA,CAAUE,SAAf;QACEq0F,SAAA,GAAY,CAAZ;QACAD,QAAA,GAAW,CAAX;QACAl3C,QAAA,GAAW3pB,KAAA,GAAQ,CAAnB;QACA;MACF,KAAKzzB,eAAA,CAAUG,UAAf;QACEo0F,SAAA,GAAY,CAAZ;QACAD,QAAA,GAAW,CAAX;QACAl3C,QAAA,GAAW3pB,KAAA,GAAQ,CAAnB;QACA;MACF;QACE,MAAM,IAAIpnB,KAAJ,CAAU,gBAAV,CAAN;IAjBJ;IAqBA,MAAMwnF,QAAA,GAAW,IAAI1jF,UAAJ,CAAgB,KAAIitC,QAAJ,IAAgB1pB,MAAhC,CAAjB;IACA,IAAI8gE,cAAA,GAAiB,CAArB;MACEC,WAAA,GAAc,CADhB;IAEA,KAAK,IAAIx6D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvG,MAApB,EAA4B,EAAEuG,CAA9B,EAAiC;MAC/B45D,QAAA,CAASW,cAAA,EAAT,IAA6B,CAA7B;MACAX,QAAA,CAAStsE,GAAT,CACErY,KAAA,CAAMY,QAAN,CAAe2kF,WAAf,EAA4BA,WAAA,GAAcr3C,QAA1C,CADF,EAEEo3C,cAFF;MAIAC,WAAA,IAAer3C,QAAf;MACAo3C,cAAA,IAAkBp3C,QAAlB;IAP+B;IAUjC,IAAIsE,IAAA,KAAS1hD,eAAA,CAAUC,cAAnB,IAAqCo0F,MAAzC,EAAiD;MAE/CG,cAAA,GAAiB,CAAjB;MACA,KAAK,IAAIv6D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIvG,MAApB,EAA4BuG,CAAA,EAA5B,EAAiC;QAC/Bu6D,cAAA;QACA,KAAK,IAAI/kF,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI2tC,QAApB,EAA8B3tC,CAAA,EAA9B,EAAmC;UACjCokF,QAAA,CAASW,cAAA,EAAT,KAA8B,IAA9B;QADiC;MAFJ;IAHc;IAWjD,MAAME,IAAA,GAAO,IAAIvkF,UAAJ,CAAe,CACzBsjB,KAAA,IAAS,EAAV,GAAgB,IADU,EAEzBA,KAAA,IAAS,EAAV,GAAgB,IAFU,EAGzBA,KAAA,IAAS,CAAV,GAAe,IAHW,EAI1BA,KAAA,GAAQ,IAJkB,EAKzBC,MAAA,IAAU,EAAX,GAAiB,IALS,EAMzBA,MAAA,IAAU,EAAX,GAAiB,IANS,EAOzBA,MAAA,IAAU,CAAX,GAAgB,IAPU,EAQ1BA,MAAA,GAAS,IARiB,EAS1B4gE,QAT0B,EAU1BC,SAV0B,EAW1B,IAX0B,EAY1B,IAZ0B,EAa1B,IAb0B,CAAf,CAAb;IAeA,MAAMN,IAAA,GAAOL,WAAA,CAAYC,QAAZ,CAAb;IAGA,MAAMc,SAAA,GACJvB,UAAA,CAAWlmF,MAAX,GAAoBmmF,kBAAA,GAAqB,CAAzC,GAA6CqB,IAAA,CAAKxnF,MAAlD,GAA2D+mF,IAAA,CAAK/mF,MADlE;IAEA,MAAMiL,IAAA,GAAO,IAAIhI,UAAJ,CAAewkF,SAAf,CAAb;IACA,IAAIv+C,MAAA,GAAS,CAAb;IACAj+B,IAAA,CAAKoP,GAAL,CAAS6rE,UAAT,EAAqBh9C,MAArB;IACAA,MAAA,IAAUg9C,UAAA,CAAWlmF,MAArB;IACAumF,aAAA,CAAc,MAAd,EAAsBiB,IAAtB,EAA4Bv8E,IAA5B,EAAkCi+B,MAAlC;IACAA,MAAA,IAAUi9C,kBAAA,GAAqBqB,IAAA,CAAKxnF,MAApC;IACAumF,aAAA,CAAc,OAAd,EAAuBQ,IAAvB,EAA6B97E,IAA7B,EAAmCi+B,MAAnC;IACAA,MAAA,IAAUi9C,kBAAA,GAAqBY,IAAA,CAAK/mF,MAApC;IACAumF,aAAA,CAAc,MAAd,EAAsB,IAAItjF,UAAJ,CAAe,CAAf,CAAtB,EAAyCgI,IAAzC,EAA+Ci+B,MAA/C;IAEA,OAAOtoB,eAAA,CAAgB3V,IAAhB,EAAsB,WAAtB,EAAmCu6E,eAAnC,CAAP;EAjFsD;EAqFxD,OAAO,SAASS,mBAATA,CAA6Br2C,OAA7B,EAAsC41C,eAAtC,EAAuD2B,MAAvD,EAA+D;IACpE,MAAM3yC,IAAA,GACJ5E,OAAA,CAAQ4E,IAAR,KAAiBvyC,SAAjB,GAA6BnP,eAAA,CAAUC,cAAvC,GAAwD68C,OAAA,CAAQ4E,IADlE;IAEA,OAAO0yC,MAAA,CAAOt3C,OAAP,EAAgB4E,IAAhB,EAAsBgxC,eAAtB,EAAuC2B,MAAvC,CAAP;EAHoE,CAAtE;AA1OuC,CAAb,EAA5B;AAiPA,MAAMO,aAAN,CAAoB;EAClBvmF,YAAA,EAAc;IACZ,KAAK+vC,aAAL,GAAqB,CAArB;IACA,KAAK1G,UAAL,GAAkB26C,YAAA,CAAa36C,UAA/B;IACA,KAAKyG,QAAL,GAAgB,CAAhB;IAEA,KAAKE,UAAL,GAAkB1hD,qBAAlB;IACA,KAAK4hD,UAAL,GAAkB1hD,0BAAlB;IACA,KAAK2hD,OAAL,GAAe,CAAf;IACA,KAAKM,iBAAL,GAAyBz/C,uBAAA,CAAkBC,IAA3C;IACA,KAAKg/C,eAAL,GAAuB,CAAvB;IAGA,KAAKtkB,CAAL,GAAS,CAAT;IACA,KAAKC,CAAL,GAAS,CAAT;IAGA,KAAKwkB,KAAL,GAAa,CAAb;IACA,KAAKC,KAAL,GAAa,CAAb;IAGA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKE,QAAL,GAAgB,CAAhB;IAGA,KAAKC,SAAL,GAAiBqzC,YAAA,CAAarzC,SAA9B;IACA,KAAKC,WAAL,GAAmB,SAAnB;IAEA,KAAKE,SAAL,GAAiB,CAAjB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,SAAL,GAAiB,CAAjB;IACA,KAAKgE,QAAL,GAAgB,EAAhB;IACA,KAAKD,OAAL,GAAe,EAAf;IACA,KAAKE,UAAL,GAAkB,CAAlB;IAEA,KAAKyH,SAAL,GAAiB,EAAjB;IACA,KAAKC,SAAL,GAAiB,CAAjB;IAEA,KAAK6pC,YAAL,GAAoB,EAApB;IAGA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKC,SAAL,GAAiB,IAAjB;IAEA,KAAKC,MAAL,GAAc,EAAd;EA7CY;EAgDd58D,MAAA,EAAQ;IACN,OAAOxqB,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAAP;EADM;EAIRgvC,gBAAgB1lB,CAAhB,EAAmBC,CAAnB,EAAsB;IACpB,KAAKD,CAAL,GAASA,CAAT;IACA,KAAKC,CAAL,GAASA,CAAT;EAFoB;AArDJ;AA2DpB,SAASg7D,YAATA,CAAsBC,MAAtB,EAA8B;EAC5B,IAAIC,MAAA,GAAS,EAAb;EACA,MAAMjgC,GAAA,GAAM,EAAZ;EAEA,WAAWkgC,aAAX,IAA4BF,MAA5B,EAAoC;IAClC,IAAIE,aAAA,CAAcC,EAAd,KAAqB,MAAzB,EAAiC;MAC/BF,MAAA,CAAOplF,IAAP,CAAY;QAAEs4C,IAAA,EAAM,EAAR;QAAYgtC,EAAA,EAAI,OAAhB;QAAyBrrE,KAAA,EAAO;MAAhC,CAAZ;MACAkrC,GAAA,CAAInlD,IAAJ,CAASolF,MAAT;MACAA,MAAA,GAASA,MAAA,CAAOj0D,EAAP,CAAU,CAAC,CAAX,EAAclX,KAAvB;MACA;IAJ+B;IAOjC,IAAIorE,aAAA,CAAcC,EAAd,KAAqB,SAAzB,EAAoC;MAClCF,MAAA,GAASjgC,GAAA,CAAIvJ,GAAJ,EAAT;IADkC,CAApC,MAEO;MACLwpC,MAAA,CAAOplF,IAAP,CAAYqlF,aAAZ;IADK;EAV2B;EAcpC,OAAOD,MAAP;AAlB4B;AA2B9B,SAASG,EAATA,CAAY5nF,KAAZ,EAAmB;EACjB,IAAI9B,MAAA,CAAOC,SAAP,CAAiB6B,KAAjB,CAAJ,EAA6B;IAC3B,OAAOA,KAAA,CAAMoE,QAAN,EAAP;EAD2B;EAG7B,MAAMwkC,CAAA,GAAI5oC,KAAA,CAAMu+D,OAAN,CAAc,EAAd,CAAV;EACA,IAAIx8D,CAAA,GAAI6mC,CAAA,CAAEppC,MAAF,GAAW,CAAnB;EACA,IAAIopC,CAAA,CAAE7mC,CAAF,MAAS,GAAb,EAAkB;IAChB,OAAO6mC,CAAP;EADgB;EAKlB,GAAG;IACD7mC,CAAA;EADC,CAAH,QAES6mC,CAAA,CAAE7mC,CAAF,MAAS,GAFlB;EAGA,OAAO6mC,CAAA,CAAExH,SAAF,CAAY,CAAZ,EAAewH,CAAA,CAAE7mC,CAAF,MAAS,GAAT,GAAeA,CAAf,GAAmBA,CAAA,GAAI,CAAtC,CAAP;AAdiB;AAyBnB,SAAS8lF,EAATA,CAAY3iF,CAAZ,EAAe;EACb,IAAIA,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;IAC5B,IAAIA,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;MAC5B,IAAIA,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;QAC5B,OAAO,EAAP;MAD4B;MAG9B,OAAQ,SAAQ0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,IAAG0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,GAArC;IAJ4B;IAM9B,IAAIA,CAAA,CAAE,CAAF,MAASA,CAAA,CAAE,CAAF,CAAT,IAAiBA,CAAA,CAAE,CAAF,MAAS,CAACA,CAAA,CAAE,CAAF,CAA/B,EAAqC;MACnC,MAAMe,CAAA,GAAKhE,IAAA,CAAK6lF,IAAL,CAAU5iF,CAAA,CAAE,CAAF,CAAV,IAAkB,GAAnB,GAA0BjD,IAAA,CAAKjL,EAAzC;MACA,OAAQ,UAAS4wF,EAAA,CAAG3hF,CAAH,CAAM,GAAvB;IAFmC;EAPT,CAA9B,MAWO;IACL,IAAIf,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAAvB,IAA4BA,CAAA,CAAE,CAAF,MAAS,CAArC,IAA0CA,CAAA,CAAE,CAAF,MAAS,CAAvD,EAA0D;MACxD,OAAQ,aAAY0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,IAAG0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,GAAzC;IADwD;EADrD;EAKP,OACG,UAAS0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,IAAG0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,IAAG0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,IAAG0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,IAAG0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,GAAnE,GACA,GAAG0iF,EAAA,CAAG1iF,CAAA,CAAE,CAAF,CAAH,CAAS,GAFd;AAjBa;AA0Bf,IAAI6iF,SAAA,GAAY,CAAhB;AACA,IAAIC,SAAA,GAAY,CAAhB;AACA,IAAIC,YAAA,GAAe,CAAnB;AAEA,MAAMC,WAAN,CAAkB;EAChBvnF,YAAY6W,UAAZ,EAAwBC,IAAxB,EAA8ButE,eAAA,GAAkB,KAAhD,EAAuD;IACrD,IAAArjE,yBAAA,EACE,8EADF;IAGA,KAAK0nD,UAAL,GAAkB,IAAIlpC,4BAAJ,EAAlB;IAEA,KAAKoK,OAAL,GAAe,IAAI28C,aAAJ,EAAf;IACA,KAAKiB,eAAL,GAAuBl5F,qBAAvB;IACA,KAAKm5F,cAAL,GAAsB,EAAtB;IACA,KAAKC,UAAL,GAAkB,EAAlB;IACA,KAAK7wE,UAAL,GAAkBA,UAAlB;IACA,KAAKC,IAAL,GAAYA,IAAZ;IACA,KAAKihC,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,KAArB;IAEA,KAAK2vC,UAAL,GAAkB,KAAlB;IACA,KAAKC,aAAL,GAAqBroF,MAAA,CAAO8C,MAAP,CAAc,IAAd,CAArB;IACA,KAAKwlF,QAAL,GAAgB,IAAhB;IACA,KAAKxD,eAAL,GAAuB,CAAC,CAACA,eAAzB;IAKA,KAAKyD,kBAAL,GAA0B,EAA1B;IACA,WAAW7iC,EAAX,IAAiBztD,SAAjB,EAAsB;MACpB,KAAKswF,kBAAL,CAAwBtwF,SAAA,CAAIytD,EAAJ,CAAxB,IAAmCA,EAAnC;IADoB;EAxB+B;EA6BvD5L,UAAUvvC,IAAV,EAAgBwvC,QAAA,GAAW,IAA3B,EAAiC;IAC/B,IAAI,OAAOxvC,IAAP,KAAgB,QAApB,EAA8B;MAC5B,OAAOA,IAAA,CAAKpL,UAAL,CAAgB,IAAhB,IACH,KAAKmY,UAAL,CAAgBtM,GAAhB,CAAoBT,IAApB,CADG,GAEH,KAAKgN,IAAL,CAAUvM,GAAV,CAAcT,IAAd,CAFJ;IAD4B;IAK9B,OAAOwvC,QAAP;EAN+B;EASjCphD,KAAA,EAAO;IACL,KAAKuvF,cAAL,CAAoB/lF,IAApB,CAAyB,KAAK8lF,eAA9B;IACA,MAAMnqC,GAAA,GAAM,KAAKzT,OAAjB;IACA,KAAK89C,UAAL,CAAgBhmF,IAAhB,CAAqB27C,GAArB;IACA,KAAKzT,OAAL,GAAeyT,GAAA,CAAItzB,KAAJ,EAAf;EAJK;EAOP5xB,QAAA,EAAU;IACR,KAAKqvF,eAAL,GAAuB,KAAKC,cAAL,CAAoBnqC,GAApB,EAAvB;IACA,KAAK1T,OAAL,GAAe,KAAK89C,UAAL,CAAgBpqC,GAAhB,EAAf;IACA,KAAKvF,WAAL,GAAmB,IAAnB;IACA,KAAKgwC,IAAL,GAAY,IAAZ;EAJQ;EAOVtlC,MAAM9mC,KAAN,EAAa;IACX,KAAKzjB,IAAL;IACA,KAAK8vF,aAAL,CAAmBrsE,KAAnB;IACA,KAAKxjB,OAAL;EAHW;EAMb8vF,iBAAiB1uE,YAAjB,EAA+B;IAC7B,MAAMC,OAAA,GAAUD,YAAA,CAAaC,OAA7B;IACA,MAAMC,SAAA,GAAYF,YAAA,CAAaE,SAA/B;IAEA,KAAK,IAAIrY,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKsR,OAAA,CAAQ3a,MAAxB,EAAgCuC,CAAA,GAAI8G,EAAzC,EAA6C9G,CAAA,EAA7C,EAAkD;MAChD,IAAIoY,OAAA,CAAQpY,CAAR,MAAe5J,SAAA,CAAIC,UAAvB,EAAmC;QACjC;MADiC;MAInC,WAAW0H,GAAX,IAAkBsa,SAAA,CAAUrY,CAAV,CAAlB,EAAgC;QAC9B,MAAM+4C,QAAA,GAAWh7C,GAAA,CAAIT,UAAJ,CAAe,IAAf,IAAuB,KAAKmY,UAA5B,GAAyC,KAAKC,IAA/D;QACA,MAAMpN,OAAA,GAAU,IAAIC,OAAJ,CAAYC,OAAA,IAAW;UACrCuwC,QAAA,CAAS5vC,GAAT,CAAapL,GAAb,EAAkByK,OAAlB;QADqC,CAAvB,CAAhB;QAGA,KAAKggC,OAAL,CAAa48C,YAAb,CAA0B9kF,IAA1B,CAA+BgI,OAA/B;MAL8B;IALgB;IAalD,OAAOC,OAAA,CAAQoH,GAAR,CAAY,KAAK64B,OAAL,CAAa48C,YAAzB,CAAP;EAjB6B;EAoB/BpuF,UAAUkN,CAAV,EAAavB,CAAb,EAAgBwB,CAAhB,EAAmBZ,CAAnB,EAAsB8+B,CAAtB,EAAyBC,CAAzB,EAA4B;IAC1B,MAAM8jD,eAAA,GAAkB,CAACliF,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAa8+B,CAAb,EAAgBC,CAAhB,CAAxB;IACA,KAAK8jD,eAAL,GAAuB7jF,UAAA,CAAKvL,SAAL,CACrB,KAAKovF,eADgB,EAErBA,eAFqB,CAAvB;IAIA,KAAKO,IAAL,GAAY,IAAZ;EAN0B;EAS5BG,OAAO3uE,YAAP,EAAqBhB,QAArB,EAA+B;IAC7B,KAAKA,QAAL,GAAgBA,QAAhB;IAEA,MAAM4vE,UAAA,GAAa,KAAKjoE,WAAL,CAAiB3H,QAAjB,CAAnB;IACA,OAAO,KAAK0vE,gBAAL,CAAsB1uE,YAAtB,EAAoClJ,IAApC,CAAyC,MAAM;MACpD,KAAKm3E,eAAL,GAAuBl5F,qBAAvB;MACA,KAAK05F,aAAL,CAAmB,KAAKI,aAAL,CAAmB7uE,YAAnB,CAAnB;MACA,OAAO4uE,UAAP;IAHoD,CAA/C,CAAP;EAJ6B;EAW/BC,cAAc7uE,YAAd,EAA4B;IAC1B,MAAM8uE,iBAAA,GAAoB,KAAKP,kBAA/B;IACA,MAAMruE,SAAA,GAAYF,YAAA,CAAaE,SAA/B;IACA,MAAMD,OAAA,GAAUD,YAAA,CAAaC,OAA7B;IACA,MAAMqtE,MAAA,GAAS,EAAf;IACA,KAAK,IAAIzlF,CAAA,GAAI,CAAR,EAAW8G,EAAA,GAAKsR,OAAA,CAAQ3a,MAAxB,EAAgCuC,CAAA,GAAI8G,EAAzC,EAA6C9G,CAAA,EAA7C,EAAkD;MAChD,MAAM44C,IAAA,GAAOxgC,OAAA,CAAQpY,CAAR,CAAb;MACAylF,MAAA,CAAOnlF,IAAP,CAAY;QACVs4C,IADU;QAEVgtC,EAAA,EAAIqB,iBAAA,CAAkBruC,IAAlB,CAFM;QAGVnQ,IAAA,EAAMpwB,SAAA,CAAUrY,CAAV;MAHI,CAAZ;IAFgD;IAQlD,OAAOwlF,YAAA,CAAaC,MAAb,CAAP;EAb0B;EAgB5BmB,cAAclB,MAAd,EAAsB;IACpB,WAAWwB,aAAX,IAA4BxB,MAA5B,EAAoC;MAClC,MAAME,EAAA,GAAKsB,aAAA,CAActB,EAAzB;MACA,MAAMhtC,IAAA,GAAOsuC,aAAA,CAActuC,IAA3B;MACA,MAAMnQ,IAAA,GAAOy+C,aAAA,CAAcz+C,IAA3B;MAEA,QAAQmQ,IAAA,GAAO,CAAf;QACE,KAAKxiD,SAAA,CAAI+B,SAAT;UACE,KAAKA,SAAL;UACA;QACF,KAAK/B,SAAA,CAAIC,UAAT;UAEE;QACF,KAAKD,SAAA,CAAIoC,UAAT;UACE,KAAKA,UAAL,CAAgBiwC,IAAhB;UACA;QACF,KAAKryC,SAAA,CAAIyC,kBAAT;UACE,KAAKA,kBAAL,CAAwB4vC,IAAA,CAAK,CAAL,CAAxB,EAAiCA,IAAA,CAAK,CAAL,CAAjC;UACA;QACF,KAAKryC,SAAA,CAAIqC,OAAT;UACE,KAAKA,OAAL,CAAagwC,IAAb;UACA;QACF,KAAKryC,SAAA,CAAI4C,QAAT;UACE,KAAKA,QAAL,CAAcyvC,IAAA,CAAK,CAAL,CAAd;UACA;QACF,KAAKryC,SAAA,CAAI6C,cAAT;UACE,KAAKD,QAAL,CAAcyvC,IAAA,CAAK,CAAL,CAAd;UACA;QACF,KAAKryC,SAAA,CAAIgC,OAAT;UACE,KAAKA,OAAL;UACA;QACF,KAAKhC,SAAA,CAAIwC,QAAT;UACE,KAAKA,QAAL,CAAc6vC,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB;UACA;QACF,KAAKryC,SAAA,CAAIiC,cAAT;UACE,KAAKA,cAAL,CAAoBowC,IAAA,CAAK,CAAL,CAApB;UACA;QACF,KAAKryC,SAAA,CAAIkC,cAAT;UACE,KAAKA,cAAL,CAAoBmwC,IAAA,CAAK,CAAL,CAApB;UACA;QACF,KAAKryC,SAAA,CAAImC,SAAT;UACE,KAAKA,SAAL,CAAekwC,IAAA,CAAK,CAAL,CAAf;UACA;QACF,KAAKryC,SAAA,CAAI0C,aAAT;UACE,KAAKA,aAAL,CACE2vC,IAAA,CAAK,CAAL,CADF,EAEEA,IAAA,CAAK,CAAL,CAFF,EAGEA,IAAA,CAAK,CAAL,CAHF,EAIEA,IAAA,CAAK,CAAL,CAJF,EAKEA,IAAA,CAAK,CAAL,CALF,EAMEA,IAAA,CAAK,CAAL,CANF;UAQA;QACF,KAAKryC,SAAA,CAAIuC,WAAT;UACE,KAAKA,WAAL,CAAiB8vC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKryC,SAAA,CAAIsC,oBAAT;UACE,KAAKA,oBAAL,CAA0B+vC,IAAA,CAAK,CAAL,CAA1B;UACA;QACF,KAAKryC,SAAA,CAAIE,YAAT;UACE,KAAKA,YAAL,CAAkBmyC,IAAA,CAAK,CAAL,CAAlB;UACA;QACF,KAAKryC,SAAA,CAAII,WAAT;UACE,KAAKA,WAAL,CAAiBiyC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKryC,SAAA,CAAIG,UAAT;UACE,KAAKA,UAAL,CAAgBkyC,IAAA,CAAK,CAAL,CAAhB;UACA;QACF,KAAKryC,SAAA,CAAIK,aAAT;UACE,KAAKA,aAAL,CAAmBgyC,IAAA,CAAK,CAAL,CAAnB;UACA;QACF,KAAKryC,SAAA,CAAI2D,eAAT;UACE,KAAKA,eAAL,CAAqB0uC,IAAA,CAAK,CAAL,CAArB,EAA8BA,IAAA,CAAK,CAAL,CAA9B,EAAuCA,IAAA,CAAK,CAAL,CAAvC;UACA;QACF,KAAKryC,SAAA,CAAI0D,iBAAT;UACE,KAAKA,iBAAL,CAAuB2uC,IAAA,CAAK,CAAL,CAAvB,EAAgCA,IAAA,CAAK,CAAL,CAAhC,EAAyCA,IAAA,CAAK,CAAL,CAAzC;UACA;QACF,KAAKryC,SAAA,CAAIqD,eAAT;UACE,KAAKA,eAAL,CAAqBgvC,IAArB;UACA;QACF,KAAKryC,SAAA,CAAIuD,aAAT;UACE,KAAKA,aAAL,CAAmB8uC,IAAnB;UACA;QACF,KAAKryC,SAAA,CAAI8D,WAAT;UACE,KAAKA,WAAL,CAAiBuuC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKryC,SAAA,CAAIM,OAAT;UACE,KAAKA,OAAL,CAAa+xC,IAAA,CAAK,CAAL,CAAb,EAAsBA,IAAA,CAAK,CAAL,CAAtB;UACA;QACF,KAAKryC,SAAA,CAAIO,kBAAT;UACE,KAAKA,kBAAL,CAAwB8xC,IAAA,CAAK,CAAL,CAAxB;UACA;QACF,KAAKryC,SAAA,CAAIQ,WAAT;UACE,KAAKA,WAAL,CAAiB6xC,IAAA,CAAK,CAAL,CAAjB;UACA;QACF,KAAKryC,SAAA,CAAIS,SAAT;UACE,KAAKA,SAAL,CAAe4xC,IAAA,CAAK,CAAL,CAAf;UACA;QACF,KAAKryC,SAAA,CAAIsB,IAAT;UACE,KAAKA,IAAL;UACA;QACF,KAAKtB,SAAA,CAAIuB,MAAT;UACE,KAAKA,MAAL;UACA;QACF,KAAKvB,SAAA,CAAIoB,MAAT;UACE,KAAKA,MAAL;UACA;QACF,KAAKpB,SAAA,CAAIwB,UAAT;UACE,KAAKA,UAAL;UACA;QACF,KAAKxB,SAAA,CAAIyB,YAAT;UACE,KAAKA,YAAL;UACA;QACF,KAAKzB,SAAA,CAAI6B,IAAT;UACE,KAAKA,IAAL,CAAU,SAAV;UACA;QACF,KAAK7B,SAAA,CAAI8B,MAAT;UACE,KAAKD,IAAL,CAAU,SAAV;UACA;QACF,KAAK7B,SAAA,CAAIuF,wBAAT;UACE,KAAKA,wBAAL;UACA;QACF,KAAKvF,SAAA,CAAIkF,iBAAT;UACE,KAAKA,iBAAL,CAAuBmtC,IAAA,CAAK,CAAL,CAAvB;UACA;QACF,KAAKryC,SAAA,CAAImF,uBAAT;UACE,KAAKA,uBAAL,CAA6BktC,IAAA,CAAK,CAAL,CAA7B;UACA;QACF,KAAKryC,SAAA,CAAIgF,qBAAT;UACE,KAAKA,qBAAL,CAA2BqtC,IAAA,CAAK,CAAL,CAA3B;UACA;QACF,KAAKryC,SAAA,CAAI0E,qBAAT;UACE,KAAKA,qBAAL,CAA2B2tC,IAAA,CAAK,CAAL,CAA3B,EAAoCA,IAAA,CAAK,CAAL,CAApC;UACA;QACF,KAAKryC,SAAA,CAAI2E,mBAAT;UACE,KAAKA,mBAAL;UACA;QACF,KAAK3E,SAAA,CAAIkB,SAAT;UACE,KAAKA,SAAL;UACA;QACF,KAAKlB,SAAA,CAAIqB,WAAT;UACE,KAAKA,WAAL;UACA;QACF,KAAKrB,SAAA,CAAI0B,eAAT;UACE,KAAKA,eAAL;UACA;QACF,KAAK1B,SAAA,CAAI2B,iBAAT;UACE,KAAKA,iBAAL;UACA;QACF,KAAK3B,SAAA,CAAI2C,QAAT;UACE,KAAKA,QAAL;UACA;QACF,KAAK3C,SAAA,CAAIY,SAAT;UACE,KAAKA,SAAL,CAAeyxC,IAAA,CAAK,CAAL,CAAf,EAAwBA,IAAA,CAAK,CAAL,CAAxB,EAAiCA,IAAA,CAAK,CAAL,CAAjC,EAA0CA,IAAA,CAAK,CAAL,CAA1C,EAAmDA,IAAA,CAAK,CAAL,CAAnD,EAA4DA,IAAA,CAAK,CAAL,CAA5D;UACA;QACF,KAAKryC,SAAA,CAAIwF,aAAT;UACE,KAAKA,aAAL,CAAmB6sC,IAAA,CAAK,CAAL,CAAnB,EAA4BA,IAAA,CAAK,CAAL,CAA5B;UACA;QACF,KAAKryC,SAAA,CAAI4B,OAAT;UACE,KAAKA,OAAL;UACA;QACF,KAAK,EAAL;UACE,KAAKqpD,KAAL,CAAW6lC,aAAA,CAAc3sE,KAAzB;UACA;QACF;UACE,IAAA7d,UAAA,EAAM,0BAAyBkpF,EAA1B,EAAL;UACA;MAhKJ;IALkC;EADhB;EA2KtBttF,eAAe62C,WAAf,EAA4B;IAC1B,KAAK3G,OAAL,CAAa2G,WAAb,GAA2BA,WAA3B;EAD0B;EAI5B92C,eAAe62C,WAAf,EAA4B;IAC1B,KAAK1G,OAAL,CAAa0G,WAAb,GAA2BA,WAA3B;EAD0B;EAI5Bn2C,SAAA,EAAW;IACT,KAAKH,QAAL,CAAc,CAAd,EAAiB,KAAK4vC,OAAL,CAAauG,OAA9B;EADS;EAIXj2C,cAAcoL,CAAd,EAAiBvB,CAAjB,EAAoBwB,CAApB,EAAuBZ,CAAvB,EAA0B8+B,CAA1B,EAA6BC,CAA7B,EAAgC;IAC9B,MAAMkG,OAAA,GAAU,KAAKA,OAArB;IACAA,OAAA,CAAQoG,UAAR,GAAqBpG,OAAA,CAAQ2+C,UAAR,GAAqB,CAACjjF,CAAD,EAAIvB,CAAJ,EAAOwB,CAAP,EAAUZ,CAAV,EAAa8+B,CAAb,EAAgBC,CAAhB,CAA1C;IACAkG,OAAA,CAAQqG,eAAR,GAA0B3uC,IAAA,CAAKgtC,KAAL,CAAWhpC,CAAX,EAAcvB,CAAd,CAA1B;IAEA6lC,OAAA,CAAQje,CAAR,GAAYie,OAAA,CAAQwG,KAAR,GAAgB,CAA5B;IACAxG,OAAA,CAAQhe,CAAR,GAAYge,OAAA,CAAQyG,KAAR,GAAgB,CAA5B;IAEAzG,OAAA,CAAQ4+C,OAAR,GAAkB,EAAlB;IACA5+C,OAAA,CAAQ6+C,OAAR,GAAkB,EAAlB;IACA7+C,OAAA,CAAQ8+C,KAAR,GAAgB,KAAKhgB,UAAL,CAAgBx5C,aAAhB,CAA8B,WAA9B,CAAhB;IACA0a,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkD/+C,OAAA,CAAQd,UAA1D;IACAc,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,WAFF,EAGE,GAAG1B,EAAA,CAAGr9C,OAAA,CAAQkG,QAAX,CAAqB,IAH1B;IAKAlG,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC1B,EAAA,CAAG,CAACr9C,OAAA,CAAQhe,CAAZ,CAAxC;IAEAge,OAAA,CAAQg/C,UAAR,GAAqB,KAAKlgB,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAArB;IACA0a,OAAA,CAAQg/C,UAAR,CAAmB/tD,MAAnB,CAA0B+O,OAAA,CAAQ8+C,KAAlC;EApB8B;EAuBhCnvF,UAAA,EAAY;IACV,MAAMqwC,OAAA,GAAU,KAAKA,OAArB;IACAA,OAAA,CAAQje,CAAR,GAAYie,OAAA,CAAQwG,KAAR,GAAgB,CAA5B;IACAxG,OAAA,CAAQhe,CAAR,GAAYge,OAAA,CAAQyG,KAAR,GAAgB,CAA5B;IACAzG,OAAA,CAAQoG,UAAR,GAAqB1hD,qBAArB;IACAs7C,OAAA,CAAQ2+C,UAAR,GAAqBj6F,qBAArB;IACAs7C,OAAA,CAAQqG,eAAR,GAA0B,CAA1B;IACArG,OAAA,CAAQ8+C,KAAR,GAAgB,KAAKhgB,UAAL,CAAgBx5C,aAAhB,CAA8B,WAA9B,CAAhB;IACA0a,OAAA,CAAQg/C,UAAR,GAAqB,KAAKlgB,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAArB;IACA0a,OAAA,CAAQi/C,MAAR,GAAiB,KAAKngB,UAAL,CAAgBx5C,aAAhB,CAA8B,OAA9B,CAAjB;IACA0a,OAAA,CAAQ4+C,OAAR,GAAkB,EAAlB;IACA5+C,OAAA,CAAQ6+C,OAAR,GAAkB,EAAlB;EAXU;EAcZzuF,SAAS2xB,CAAT,EAAYC,CAAZ,EAAe;IACb,MAAMge,OAAA,GAAU,KAAKA,OAArB;IACAA,OAAA,CAAQje,CAAR,GAAYie,OAAA,CAAQwG,KAAR,IAAiBzkB,CAA7B;IACAie,OAAA,CAAQhe,CAAR,GAAYge,OAAA,CAAQyG,KAAR,IAAiBzkB,CAA7B;IAEAge,OAAA,CAAQ4+C,OAAR,GAAkB,EAAlB;IACA5+C,OAAA,CAAQ6+C,OAAR,GAAkB,EAAlB;IACA7+C,OAAA,CAAQ8+C,KAAR,GAAgB,KAAKhgB,UAAL,CAAgBx5C,aAAhB,CAA8B,WAA9B,CAAhB;IACA0a,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkD/+C,OAAA,CAAQd,UAA1D;IACAc,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,WAFF,EAGE,GAAG1B,EAAA,CAAGr9C,OAAA,CAAQkG,QAAX,CAAqB,IAH1B;IAKAlG,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC1B,EAAA,CAAG,CAACr9C,OAAA,CAAQhe,CAAZ,CAAxC;EAda;EAiBfxxB,SAAS+kD,MAAT,EAAiB;IACf,MAAMvV,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMhlB,IAAA,GAAOglB,OAAA,CAAQhlB,IAArB;IACA,MAAMkrB,QAAA,GAAWlG,OAAA,CAAQkG,QAAzB;IACA,IAAIA,QAAA,KAAa,CAAjB,EAAoB;MAClB;IADkB;IAIpB,MAAMC,aAAA,GAAgBnG,OAAA,CAAQmG,aAA9B;IACA,MAAMO,WAAA,GAAc1G,OAAA,CAAQ0G,WAA5B;IACA,MAAMC,WAAA,GAAc3G,OAAA,CAAQ2G,WAA5B;IACA,MAAM8N,aAAA,GAAgBzU,OAAA,CAAQyU,aAA9B;IACA,MAAM7N,UAAA,GAAa5G,OAAA,CAAQ4G,UAAR,GAAqB6N,aAAxC;IACA,MAAMiB,QAAA,GAAW16B,IAAA,CAAK06B,QAAtB;IACA,MAAMC,UAAA,GAAaD,QAAA,GAAW,CAAX,GAAe,CAAC,CAAnC;IACA,MAAME,eAAA,GAAkB56B,IAAA,CAAK46B,eAA7B;IACA,MAAMC,iBAAA,GAAoB3P,QAAA,GAAWlG,OAAA,CAAQsG,UAAR,CAAmB,CAAnB,CAArC;IAEA,IAAIvkB,CAAA,GAAI,CAAR;IACA,WAAWo0B,KAAX,IAAoBZ,MAApB,EAA4B;MAC1B,IAAIY,KAAA,KAAU,IAAd,EAAoB;QAElBp0B,CAAA,IAAK0yB,aAAA,GAAgB9N,WAArB;QACA;MAHkB,CAApB,MAIO,IAAI,OAAOwP,KAAP,KAAiB,QAArB,EAA+B;QACpCp0B,CAAA,IAAM4zB,UAAA,GAAaQ,KAAb,GAAqBjQ,QAAtB,GAAkC,IAAvC;QACA;MAFoC;MAKtC,MAAMoO,OAAA,GAAW,CAAA6B,KAAA,CAAMG,OAAN,GAAgB3P,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAM7G,SAAA,GAAYsW,KAAA,CAAMI,QAAxB;MACA,IAAIE,OAAJ,EAAaC,OAAb;MACA,IAAIl7B,KAAA,GAAQ26B,KAAA,CAAM36B,KAAlB;MACA,IAAIk6B,QAAJ,EAAc;QACZ,IAAIkB,EAAJ;QACA,MAAMD,OAAA,GAAUR,KAAA,CAAMQ,OAAN,IAAiBf,eAAjC;QACAgB,EAAA,GAAKT,KAAA,CAAMQ,OAAN,GAAgBA,OAAA,CAAQ,CAAR,CAAhB,GAA6Bn7B,KAAA,GAAQ,GAA1C;QACAo7B,EAAA,GAAK,CAACA,EAAD,GAAMf,iBAAX;QACA,MAAMgB,EAAA,GAAKF,OAAA,CAAQ,CAAR,IAAad,iBAAxB;QAEAr6B,KAAA,GAAQm7B,OAAA,GAAU,CAACA,OAAA,CAAQ,CAAR,CAAX,GAAwBn7B,KAAhC;QACAi7B,OAAA,GAAUG,EAAA,GAAKzQ,aAAf;QACAuQ,OAAA,GAAW,CAAA30B,CAAA,GAAI80B,EAAJ,IAAU1Q,aAArB;MATY,CAAd,MAUO;QACLsQ,OAAA,GAAU10B,CAAA,GAAIokB,aAAd;QACAuQ,OAAA,GAAU,CAAV;MAFK;MAKP,IAAIP,KAAA,CAAMe,QAAN,IAAkBl8B,IAAA,CAAKiiB,WAA3B,EAAwC;QACtC+C,OAAA,CAAQ4+C,OAAR,CAAgB9mF,IAAhB,CAAqBkoC,OAAA,CAAQje,CAAR,GAAY00B,OAAjC;QACA,IAAIf,QAAJ,EAAc;UACZ1V,OAAA,CAAQ6+C,OAAR,CAAgB/mF,IAAhB,CAAqB,CAACkoC,OAAA,CAAQhe,CAAT,GAAa00B,OAAlC;QADY;QAGd1W,OAAA,CAAQ8+C,KAAR,CAAchtE,WAAd,IAA6B+tB,SAA7B;MALsC,CAAxC,MAMO;MAOP,IAAIwX,SAAJ;MACA,IAAI3B,QAAJ,EAAc;QACZ2B,SAAA,GAAY77B,KAAA,GAAQq6B,iBAAR,GAA4BvB,OAAA,GAAUG,aAAlD;MADY,CAAd,MAEO;QACL4C,SAAA,GAAY77B,KAAA,GAAQq6B,iBAAR,GAA4BvB,OAAA,GAAUG,aAAlD;MADK;MAIP1yB,CAAA,IAAKs1B,SAAL;IAjD0B;IAmD5BrX,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC/+C,OAAA,CAAQ4+C,OAAR,CAAgBpmF,GAAhB,CAAoB6kF,EAApB,EAAwBtlF,IAAxB,CAA6B,GAA7B,CAAxC;IACA,IAAI29C,QAAJ,EAAc;MACZ1V,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,GAFF,EAGE/+C,OAAA,CAAQ6+C,OAAR,CAAgBrmF,GAAhB,CAAoB6kF,EAApB,EAAwBtlF,IAAxB,CAA6B,GAA7B,CAHF;IADY,CAAd,MAMO;MACLioC,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC1B,EAAA,CAAG,CAACr9C,OAAA,CAAQhe,CAAZ,CAAxC;IADK;IAIP,IAAI0zB,QAAJ,EAAc;MACZ1V,OAAA,CAAQhe,CAAR,IAAaD,CAAb;IADY,CAAd,MAEO;MACLie,OAAA,CAAQje,CAAR,IAAaA,CAAA,GAAI6kB,UAAjB;IADK;IAIP5G,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkD/+C,OAAA,CAAQd,UAA1D;IACAc,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CACE,IADF,EAEE,WAFF,EAGE,GAAG1B,EAAA,CAAGr9C,OAAA,CAAQkG,QAAX,CAAqB,IAH1B;IAKA,IAAIlG,OAAA,CAAQq6C,SAAR,KAAsBD,YAAA,CAAaC,SAAvC,EAAkD;MAChDr6C,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,YAAnC,EAAiD/+C,OAAA,CAAQq6C,SAAzD;IADgD;IAGlD,IAAIr6C,OAAA,CAAQP,UAAR,KAAuB26C,YAAA,CAAa36C,UAAxC,EAAoD;MAClDO,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,aAAnC,EAAkD/+C,OAAA,CAAQP,UAA1D;IADkD;IAIpD,MAAM0V,cAAA,GACJnV,OAAA,CAAQ6G,iBAAR,GAA4Bz/C,uBAAA,CAAkBS,gBADhD;IAEA,IACEstD,cAAA,KAAmB/tD,uBAAA,CAAkBC,IAArC,IACA8tD,cAAA,KAAmB/tD,uBAAA,CAAkBG,WAFvC,EAGE;MACA,IAAIy4C,OAAA,CAAQ+G,SAAR,KAAsBqzC,YAAA,CAAarzC,SAAvC,EAAkD;QAChD/G,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2C/+C,OAAA,CAAQ+G,SAAnD;MADgD;MAGlD,IAAI/G,OAAA,CAAQkH,SAAR,GAAoB,CAAxB,EAA2B;QACzBlH,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,cAAnC,EAAmD/+C,OAAA,CAAQkH,SAA3D;MADyB;IAJ3B,CAHF,MAUO,IAAIlH,OAAA,CAAQ6G,iBAAR,KAA8Bz/C,uBAAA,CAAkBQ,WAApD,EAAiE;MAGtEo4C,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2C,aAA3C;IAHsE,CAAjE,MAIA;MACL/+C,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2C,MAA3C;IADK;IAIP,IACE5pC,cAAA,KAAmB/tD,uBAAA,CAAkBE,MAArC,IACA6tD,cAAA,KAAmB/tD,uBAAA,CAAkBG,WAFvC,EAGE;MACA,MAAM23F,cAAA,GAAiB,KAAKl/C,OAAA,CAAQqG,eAAR,IAA2B,CAA3B,CAA5B;MACA,KAAK84C,oBAAL,CAA0Bn/C,OAAA,CAAQ8+C,KAAlC,EAAyCI,cAAzC;IAFA;IAQF,IAAI94C,UAAA,GAAapG,OAAA,CAAQoG,UAAzB;IACA,IAAIpG,OAAA,CAAQ8G,QAAR,KAAqB,CAAzB,EAA4B;MAC1BV,UAAA,GAAaA,UAAA,CAAWjrC,KAAX,EAAb;MACAirC,UAAA,CAAW,CAAX,KAAiBpG,OAAA,CAAQ8G,QAAzB;IAF0B;IAK5B9G,OAAA,CAAQg/C,UAAR,CAAmBD,cAAnB,CACE,IADF,EAEE,WAFF,EAGE,GAAGzB,EAAA,CAAGl3C,UAAH,CAAe,UAASi3C,EAAA,CAAGz2C,UAAH,CAAe,OAH5C;IAKA5G,OAAA,CAAQg/C,UAAR,CAAmBD,cAAnB,CAAkCzE,MAAlC,EAA0C,WAA1C,EAAuD,UAAvD;IACAt6C,OAAA,CAAQg/C,UAAR,CAAmB/tD,MAAnB,CAA0B+O,OAAA,CAAQ8+C,KAAlC;IACA9+C,OAAA,CAAQi/C,MAAR,CAAehuD,MAAf,CAAsB+O,OAAA,CAAQg/C,UAA9B;IAEA,KAAKI,qBAAL,GAA6BnuD,MAA7B,CAAoC+O,OAAA,CAAQg/C,UAA5C;EAlJe;EAqJjB3uF,mBAAmB0xB,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,KAAKhyB,UAAL,CAAgB,CAACgyB,CAAjB;IACA,KAAK5xB,QAAL,CAAc2xB,CAAd,EAAiBC,CAAjB;EAFuB;EAKzBq9D,aAAa7qC,OAAb,EAAsB;IACpB,IAAI,CAACA,OAAA,CAAQt0C,IAAb,EAAmB;MACjB,MAAM,IAAI9L,KAAJ,CACJ,2CACE,6DAFE,CAAN;IADiB;IAMnB,IAAI,CAAC,KAAK6pF,QAAV,EAAoB;MAClB,KAAKA,QAAL,GAAgB,KAAKnf,UAAL,CAAgBx5C,aAAhB,CAA8B,WAA9B,CAAhB;MACA,KAAK24D,QAAL,CAAcc,cAAd,CAA6B,IAA7B,EAAmC,MAAnC,EAA2C,UAA3C;MACA,KAAKnuD,IAAL,CAAUK,MAAV,CAAiB,KAAKgtD,QAAtB;IAHkB;IAMpB,MAAMzpF,GAAA,GAAMqhB,eAAA,CACV2+B,OAAA,CAAQt0C,IADE,EAEVs0C,OAAA,CAAQ7U,QAFE,EAGV,KAAK86C,eAHK,CAAZ;IAKA,KAAKwD,QAAL,CAAcnsE,WAAd,IACG,8BAA6B0iC,OAAA,CAAQ9X,UAAW,IAAjD,GACC,aAAYloC,GAAI,QAFnB;EAlBoB;EAuBtBvE,QAAQwG,OAAR,EAAiB;IACf,MAAMupC,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMwU,OAAA,GAAU,KAAKvnC,UAAL,CAAgBtM,GAAhB,CAAoBlK,OAAA,CAAQ,CAAR,CAApB,CAAhB;IACA,IAAIob,IAAA,GAAOpb,OAAA,CAAQ,CAAR,CAAX;IACAupC,OAAA,CAAQhlB,IAAR,GAAew5B,OAAf;IAEA,IACE,KAAKupC,UAAL,IACA,CAACvpC,OAAA,CAAQvX,WADT,IAEA,CAAC,KAAK+gD,aAAL,CAAmBxpC,OAAA,CAAQ9X,UAA3B,CAHH,EAIE;MACA,KAAK2iD,YAAL,CAAkB7qC,OAAlB;MACA,KAAKwpC,aAAL,CAAmBxpC,OAAA,CAAQ9X,UAA3B,IAAyC8X,OAAzC;IAFA;IAIFxU,OAAA,CAAQsG,UAAR,GAAqBkO,OAAA,CAAQlO,UAAR,IAAsB1hD,0BAA3C;IAEA,IAAIiwD,IAAA,GAAO,QAAX;IACA,IAAIL,OAAA,CAAQzK,KAAZ,EAAmB;MACjB8K,IAAA,GAAO,KAAP;IADiB,CAAnB,MAEO,IAAIL,OAAA,CAAQK,IAAZ,EAAkB;MACvBA,IAAA,GAAO,MAAP;IADuB;IAGzB,MAAMC,MAAA,GAASN,OAAA,CAAQM,MAAR,GAAiB,QAAjB,GAA4B,QAA3C;IAEA,IAAIjjC,IAAA,GAAO,CAAX,EAAc;MACZA,IAAA,GAAO,CAACA,IAAR;MACAmuB,OAAA,CAAQyU,aAAR,GAAwB,CAAC,CAAzB;IAFY,CAAd,MAGO;MACLzU,OAAA,CAAQyU,aAAR,GAAwB,CAAxB;IADK;IAGPzU,OAAA,CAAQkG,QAAR,GAAmBr0B,IAAnB;IACAmuB,OAAA,CAAQd,UAAR,GAAqBsV,OAAA,CAAQ9X,UAA7B;IACAsD,OAAA,CAAQP,UAAR,GAAqBoV,IAArB;IACA7U,OAAA,CAAQq6C,SAAR,GAAoBvlC,MAApB;IAEA9U,OAAA,CAAQ8+C,KAAR,GAAgB,KAAKhgB,UAAL,CAAgBx5C,aAAhB,CAA8B,WAA9B,CAAhB;IACA0a,OAAA,CAAQ8+C,KAAR,CAAcC,cAAd,CAA6B,IAA7B,EAAmC,GAAnC,EAAwC1B,EAAA,CAAG,CAACr9C,OAAA,CAAQhe,CAAZ,CAAxC;IACAge,OAAA,CAAQ4+C,OAAR,GAAkB,EAAlB;IACA5+C,OAAA,CAAQ6+C,OAAR,GAAkB,EAAlB;EAtCe;EAyCjBjvF,QAAA,EAAU;IACR,MAAMowC,OAAA,GAAU,KAAKA,OAArB;IACA,IACEA,OAAA,CAAQ6G,iBAAR,GAA4Bz/C,uBAAA,CAAkBU,gBAA9C,IACAk4C,OAAA,CAAQg/C,UAAR,EAAoBM,aAApB,EAFF,EAGE;MAEAt/C,OAAA,CAAQ3Y,OAAR,GAAkB2Y,OAAA,CAAQg/C,UAA1B;MACA,KAAKvvF,IAAL,CAAU,SAAV;MACA,KAAKD,OAAL;IAJA;EALM;EAcV1B,aAAa0tB,KAAb,EAAoB;IAClB,IAAIA,KAAA,GAAQ,CAAZ,EAAe;MACb,KAAKwkB,OAAL,CAAaoH,SAAb,GAAyB5rB,KAAzB;IADa;EADG;EAMpBztB,WAAW+0B,KAAX,EAAkB;IAChB,KAAKkd,OAAL,CAAamL,OAAb,GAAuByC,eAAA,CAAgB9qB,KAAhB,CAAvB;EADgB;EAIlB90B,YAAY80B,KAAZ,EAAmB;IACjB,KAAKkd,OAAL,CAAaoL,QAAb,GAAwByC,gBAAA,CAAiB/qB,KAAjB,CAAxB;EADiB;EAInB70B,cAAc4kD,KAAd,EAAqB;IACnB,KAAK7S,OAAL,CAAaqL,UAAb,GAA0BwH,KAA1B;EADmB;EAIrB0sC,eAAep4C,WAAf,EAA4B;IAC1B,KAAKnH,OAAL,CAAamH,WAAb,GAA2BA,WAA3B;EAD0B;EAI5B71C,kBAAkB2I,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,EAA2B;IACzB,KAAK6lC,OAAL,CAAagH,WAAb,GAA2BjtC,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAA3B;EADyB;EAI3BqlF,aAAat4C,SAAb,EAAwB;IACtB,KAAKlH,OAAL,CAAakH,SAAb,GAAyBA,SAAzB;EADsB;EAIxB31C,gBAAgB0I,CAAhB,EAAmBC,CAAnB,EAAsBC,CAAtB,EAAyB;IACvB,KAAK6lC,OAAL,CAAa+G,SAAb,GAAyBhtC,UAAA,CAAKC,YAAL,CAAkBC,CAAlB,EAAqBC,CAArB,EAAwBC,CAAxB,CAAzB;IACA,KAAK6lC,OAAL,CAAa8+C,KAAb,GAAqB,KAAKhgB,UAAL,CAAgBx5C,aAAhB,CAA8B,WAA9B,CAArB;IACA,KAAK0a,OAAL,CAAa4+C,OAAb,GAAuB,EAAvB;IACA,KAAK5+C,OAAL,CAAa6+C,OAAb,GAAuB,EAAvB;EAJuB;EAOzB5tF,gBAAgBgvC,IAAhB,EAAsB;IACpB,KAAKD,OAAL,CAAagH,WAAb,GAA2B,KAAKy4C,mBAAL,CAAyBx/C,IAAzB,CAA3B;EADoB;EAItB9uC,cAAc8uC,IAAd,EAAoB;IAClB,KAAKD,OAAL,CAAa+G,SAAb,GAAyB,KAAK04C,mBAAL,CAAyBx/C,IAAzB,CAAzB;EADkB;EAIpBvuC,YAAYuuC,IAAZ,EAAkB;IAChB,MAAM;MAAEzkB,KAAF;MAASC;IAAT,IAAoB,KAAK9M,QAA/B;IACA,MAAMgqC,GAAA,GAAM5+C,UAAA,CAAKwB,gBAAL,CAAsB,KAAKqiF,eAA3B,CAAZ;IACA,MAAM,CAACjhF,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmB/C,UAAA,CAAKiB,0BAAL,CACvB,CAAC,CAAD,EAAI,CAAJ,EAAOwgB,KAAP,EAAcC,MAAd,CADuB,EAEvBk9B,GAFuB,CAAzB;IAKA,MAAMz8C,IAAA,GAAO,KAAK4iE,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAb;IACAppB,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+BpiF,EAA/B;IACAT,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+BniF,EAA/B;IACAV,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,OAA1B,EAAmCliF,EAAA,GAAKF,EAAxC;IACAT,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoCjiF,EAAA,GAAKF,EAAzC;IACAV,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,KAAKW,mBAAL,CAAyBz/C,IAAzB,CAAlC;IACA,IAAI,KAAKD,OAAL,CAAakH,SAAb,GAAyB,CAA7B,EAAgC;MAC9BhrC,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,cAA1B,EAA0C,KAAK/+C,OAAL,CAAakH,SAAvD;IAD8B;IAGhC,KAAKk4C,qBAAL,GAA6BnuD,MAA7B,CAAoC/0B,IAApC;EAjBgB;EAuBlBujF,oBAAoBx/C,IAApB,EAA0B;IACxB,IAAIA,IAAA,CAAK,CAAL,MAAY,eAAhB,EAAiC;MAC/B,OAAO,KAAK0/C,kBAAL,CAAwB1/C,IAAxB,CAAP;IAD+B;IAGjC,OAAO,KAAKy/C,mBAAL,CAAyBz/C,IAAzB,CAAP;EAJwB;EAU1B0/C,mBAAmB1/C,IAAnB,EAAyB;IACvB,MAAMtW,KAAA,GAAQsW,IAAA,CAAK,CAAL,CAAd;IACA,MAAMtwB,YAAA,GAAeswB,IAAA,CAAK,CAAL,CAArB;IACA,MAAMuY,MAAA,GAASvY,IAAA,CAAK,CAAL,KAAWv7C,qBAA1B;IACA,MAAM,CAACiY,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,IAAmBmjC,IAAA,CAAK,CAAL,CAAzB;IACA,MAAMigB,KAAA,GAAQjgB,IAAA,CAAK,CAAL,CAAd;IACA,MAAMkgB,KAAA,GAAQlgB,IAAA,CAAK,CAAL,CAAd;IACA,MAAMmgB,SAAA,GAAYngB,IAAA,CAAK,CAAL,CAAlB;IAEA,MAAM2/C,QAAA,GAAY,UAASlC,YAAA,EAAV,EAAjB;IACA,MAAM,CAACmC,GAAD,EAAMC,GAAN,EAAWC,GAAX,EAAgBC,GAAhB,IAAuBjmF,UAAA,CAAKkC,aAAL,CAAmB,CAC9C,GAAGlC,UAAA,CAAKU,cAAL,CAAoB,CAACkC,EAAD,EAAKC,EAAL,CAApB,EAA8B47C,MAA9B,CAD2C,EAE9C,GAAGz+C,UAAA,CAAKU,cAAL,CAAoB,CAACoC,EAAD,EAAKC,EAAL,CAApB,EAA8B07C,MAA9B,CAF2C,CAAnB,CAA7B;IAIA,MAAM,CAACynC,MAAD,EAASC,MAAT,IAAmBnmF,UAAA,CAAKyB,6BAAL,CAAmCg9C,MAAnC,CAAzB;IACA,MAAM2nC,MAAA,GAASjgC,KAAA,GAAQ+/B,MAAvB;IACA,MAAMG,MAAA,GAASjgC,KAAA,GAAQ+/B,MAAvB;IAEA,MAAMG,MAAA,GAAS,KAAKvhB,UAAL,CAAgBx5C,aAAhB,CAA8B,aAA9B,CAAf;IACA+6D,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,IAA5B,EAAkCa,QAAlC;IACAS,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,cAA5B,EAA4C,gBAA5C;IACAsB,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqCoB,MAArC;IACAE,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsCqB,MAAtC;IACAC,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC,GAAGc,GAAH,EAAjC;IACAQ,MAAA,CAAOtB,cAAP,CAAsB,IAAtB,EAA4B,GAA5B,EAAiC,GAAGe,GAAH,EAAjC;IAGA,MAAM/uD,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM6sD,eAAA,GAAkB,KAAKA,eAA7B;IACA,MAAM72C,SAAA,GAAY,KAAK/G,OAAL,CAAa+G,SAA/B;IACA,MAAMC,WAAA,GAAc,KAAKhH,OAAL,CAAagH,WAAjC;IAEA,MAAM4R,IAAA,GAAO,KAAKkmB,UAAL,CAAgBrmE,MAAhB,CAAuBsnF,GAAA,GAAMF,GAA7B,EAAkCG,GAAA,GAAMF,GAAxC,CAAb;IACA,KAAK/uD,GAAL,GAAW6nB,IAAX;IACA,KAAKglC,eAAL,GAAuBplC,MAAvB;IACA,IAAI4H,SAAA,KAAc,CAAlB,EAAqB;MACnB,MAAMiB,QAAA,GAAWtnD,UAAA,CAAKC,YAAL,CAAkB,GAAG2vB,KAArB,CAAjB;MACA,KAAKqW,OAAL,CAAa+G,SAAb,GAAyBsa,QAAzB;MACA,KAAKrhB,OAAL,CAAagH,WAAb,GAA2Bqa,QAA3B;IAHmB;IAKrB,KAAK+8B,aAAL,CAAmB,KAAKI,aAAL,CAAmB7uE,YAAnB,CAAnB;IAGA,KAAKohB,GAAL,GAAWA,GAAX;IACA,KAAK6sD,eAAL,GAAuBA,eAAvB;IACA,KAAK59C,OAAL,CAAa+G,SAAb,GAAyBA,SAAzB;IACA,KAAK/G,OAAL,CAAagH,WAAb,GAA2BA,WAA3B;IAEAq5C,MAAA,CAAOpvD,MAAP,CAAc2nB,IAAA,CAAK0nC,UAAL,CAAgB,CAAhB,CAAd;IACA,KAAK1vD,IAAL,CAAUK,MAAV,CAAiBovD,MAAjB;IACA,OAAQ,QAAOT,QAAS,GAAxB;EAlDuB;EAwDzBF,oBAAoBz/C,IAApB,EAA0B;IACxB,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;MAC5BA,IAAA,GAAO,KAAK/yB,IAAL,CAAUvM,GAAV,CAAcs/B,IAAd,CAAP;IAD4B;IAG9B,QAAQA,IAAA,CAAK,CAAL,CAAR;MACE,KAAK,aAAL;QACE,MAAMsgD,SAAA,GAAa,UAAS7C,YAAA,EAAV,EAAlB;QACA,MAAM8C,UAAA,GAAavgD,IAAA,CAAK,CAAL,CAAnB;QACA,IAAIwgD,QAAJ;QAEA,QAAQxgD,IAAA,CAAK,CAAL,CAAR;UACE,KAAK,OAAL;YACE,MAAMygD,MAAA,GAASzgD,IAAA,CAAK,CAAL,CAAf;YACA,MAAM0gD,MAAA,GAAS1gD,IAAA,CAAK,CAAL,CAAf;YACAwgD,QAAA,GAAW,KAAK3hB,UAAL,CAAgBx5C,aAAhB,CAA8B,oBAA9B,CAAX;YACAm7D,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoCwB,SAApC;YACAE,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,eAA9B,EAA+C,gBAA/C;YACA0B,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC2B,MAAA,CAAO,CAAP,CAApC;YACAD,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC2B,MAAA,CAAO,CAAP,CAApC;YACAD,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC4B,MAAA,CAAO,CAAP,CAApC;YACAF,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC4B,MAAA,CAAO,CAAP,CAApC;YACA;UACF,KAAK,QAAL;YACE,MAAMC,UAAA,GAAa3gD,IAAA,CAAK,CAAL,CAAnB;YACA,MAAM4gD,WAAA,GAAc5gD,IAAA,CAAK,CAAL,CAApB;YACA,MAAM6gD,WAAA,GAAc7gD,IAAA,CAAK,CAAL,CAApB;YACA,MAAM8gD,YAAA,GAAe9gD,IAAA,CAAK,CAAL,CAArB;YACAwgD,QAAA,GAAW,KAAK3hB,UAAL,CAAgBx5C,aAAhB,CAA8B,oBAA9B,CAAX;YACAm7D,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoCwB,SAApC;YACAE,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,eAA9B,EAA+C,gBAA/C;YACA0B,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC8B,WAAA,CAAY,CAAZ,CAApC;YACAJ,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC8B,WAAA,CAAY,CAAZ,CAApC;YACAJ,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmCgC,YAAnC;YACAN,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC6B,UAAA,CAAW,CAAX,CAApC;YACAH,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC6B,UAAA,CAAW,CAAX,CAApC;YACAH,QAAA,CAAS1B,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoC+B,WAApC;YACA;UACF;YACE,MAAM,IAAI1sF,KAAJ,CAAW,6BAA4B6rC,IAAA,CAAK,CAAL,CAA7B,EAAV,CAAN;QA5BJ;QA8BA,WAAWmc,SAAX,IAAwBokC,UAAxB,EAAoC;UAClC,MAAMQ,IAAA,GAAO,KAAKliB,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAb;UACA07D,IAAA,CAAKjC,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoC3iC,SAAA,CAAU,CAAV,CAApC;UACA4kC,IAAA,CAAKjC,cAAL,CAAoB,IAApB,EAA0B,YAA1B,EAAwC3iC,SAAA,CAAU,CAAV,CAAxC;UACAqkC,QAAA,CAASxvD,MAAT,CAAgB+vD,IAAhB;QAJkC;QAMpC,KAAKpwD,IAAL,CAAUK,MAAV,CAAiBwvD,QAAjB;QACA,OAAQ,QAAOF,SAAU,GAAzB;MACF,KAAK,MAAL;QACE,IAAArsF,UAAA,EAAK,4BAAL;QACA,OAAO,IAAP;MACF,KAAK,OAAL;QACE,OAAO,SAAP;MACF;QACE,MAAM,IAAIE,KAAJ,CAAW,oBAAmB6rC,IAAA,CAAK,CAAL,CAApB,EAAV,CAAN;IAlDJ;EAJwB;EA0D1B/xC,QAAQ4kD,SAAR,EAAmBC,SAAnB,EAA8B;IAC5B,KAAK/S,OAAL,CAAa8S,SAAb,GAAyBA,SAAzB;IACA,KAAK9S,OAAL,CAAa+S,SAAb,GAAyBA,SAAzB;EAF4B;EAK9B3/C,cAAcugD,GAAd,EAAmB1T,IAAnB,EAAyB;IACvB,MAAMD,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIje,CAAA,GAAIie,OAAA,CAAQje,CAAhB;MACEC,CAAA,GAAIge,OAAA,CAAQhe,CADd;IAEA,IAAIjnB,CAAA,GAAI,EAAR;IACA,IAAI4C,CAAA,GAAI,CAAR;IAEA,WAAW09C,EAAX,IAAiB1H,GAAjB,EAAsB;MACpB,QAAQ0H,EAAA,GAAK,CAAb;QACE,KAAKztD,SAAA,CAAImB,SAAT;UACEgzB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACA,MAAM6d,KAAA,GAAQykB,IAAA,CAAKtiC,CAAA,EAAL,CAAd;UACA,MAAM8d,MAAA,GAASwkB,IAAA,CAAKtiC,CAAA,EAAL,CAAf;UACA,MAAMm2C,EAAA,GAAK/xB,CAAA,GAAIvG,KAAf;UACA,MAAMu4B,EAAA,GAAK/xB,CAAA,GAAIvG,MAAf;UACA1gB,CAAA,CAAEjD,IAAF,CACE,GADF,EAEEulF,EAAA,CAAGt7D,CAAH,CAFF,EAGEs7D,EAAA,CAAGr7D,CAAH,CAHF,EAIE,GAJF,EAKEq7D,EAAA,CAAGvpC,EAAH,CALF,EAMEupC,EAAA,CAAGr7D,CAAH,CANF,EAOE,GAPF,EAQEq7D,EAAA,CAAGvpC,EAAH,CARF,EASEupC,EAAA,CAAGtpC,EAAH,CATF,EAUE,GAVF,EAWEspC,EAAA,CAAGt7D,CAAH,CAXF,EAYEs7D,EAAA,CAAGtpC,EAAH,CAZF,EAaE,GAbF;UAeA;QACF,KAAKnmD,SAAA,CAAIa,MAAT;UACEszB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACA5C,CAAA,CAAEjD,IAAF,CAAO,GAAP,EAAYulF,EAAA,CAAGt7D,CAAH,CAAZ,EAAmBs7D,EAAA,CAAGr7D,CAAH,CAAnB;UACA;QACF,KAAKp0B,SAAA,CAAIc,MAAT;UACEqzB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,EAAL,CAAJ;UACA5C,CAAA,CAAEjD,IAAF,CAAO,GAAP,EAAYulF,EAAA,CAAGt7D,CAAH,CAAZ,EAAmBs7D,EAAA,CAAGr7D,CAAH,CAAnB;UACA;QACF,KAAKp0B,SAAA,CAAIe,OAAT;UACEozB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACA5C,CAAA,CAAEjD,IAAF,CACE,GADF,EAEEulF,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAL,CAAH,CAFF,EAGE0/E,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAH,CAHF,EAIE0/E,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAH,CAJF,EAKE0/E,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAH,CALF,EAME0/E,EAAA,CAAGt7D,CAAH,CANF,EAOEs7D,EAAA,CAAGr7D,CAAH,CAPF;UASArkB,CAAA,IAAK,CAAL;UACA;QACF,KAAK/P,SAAA,CAAIgB,QAAT;UACEmM,CAAA,CAAEjD,IAAF,CACE,GADF,EAEEulF,EAAA,CAAGt7D,CAAH,CAFF,EAGEs7D,EAAA,CAAGr7D,CAAH,CAHF,EAIEq7D,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAL,CAAH,CAJF,EAKE0/E,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAH,CALF,EAME0/E,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAH,CANF,EAOE0/E,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAH,CAPF;UASAokB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAA,CAAA,IAAK,CAAL;UACA;QACF,KAAK/P,SAAA,CAAIiB,QAAT;UACEkzB,CAAA,GAAIke,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACAqkB,CAAA,GAAIie,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAJ;UACA5C,CAAA,CAAEjD,IAAF,CAAO,GAAP,EAAYulF,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAL,CAAH,CAAZ,EAAyB0/E,EAAA,CAAGp9C,IAAA,CAAKtiC,CAAA,GAAI,CAAT,CAAH,CAAzB,EAA0C0/E,EAAA,CAAGt7D,CAAH,CAA1C,EAAiDs7D,EAAA,CAAGr7D,CAAH,CAAjD,EAAwDq7D,EAAA,CAAGt7D,CAAH,CAAxD,EAA+Ds7D,EAAA,CAAGr7D,CAAH,CAA/D;UACArkB,CAAA,IAAK,CAAL;UACA;QACF,KAAK/P,SAAA,CAAIkB,SAAT;UACEiM,CAAA,CAAEjD,IAAF,CAAO,GAAP;UACA;MAtEJ;IADoB;IA2EtBiD,CAAA,GAAIA,CAAA,CAAEhD,IAAF,CAAO,GAAP,CAAJ;IAEA,IACEioC,OAAA,CAAQ2F,IAAR,IACAgO,GAAA,CAAI1+C,MAAJ,GAAa,CADb,IAEA0+C,GAAA,CAAI,CAAJ,MAAW/lD,SAAA,CAAImB,SAFf,IAGA4kD,GAAA,CAAI,CAAJ,MAAW/lD,SAAA,CAAIa,MAJjB,EAKE;MAIAsM,CAAA,GAAIilC,OAAA,CAAQ2F,IAAR,CAAas7C,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,IAAyClmF,CAA7C;IAJA,CALF,MAUO;MACLilC,OAAA,CAAQ2F,IAAR,GAAe,KAAKm5B,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAf;MACA,KAAK85D,qBAAL,GAA6BnuD,MAA7B,CAAoC+O,OAAA,CAAQ2F,IAA5C;IAFK;IAKP3F,OAAA,CAAQ2F,IAAR,CAAao5C,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,EAAuChkF,CAAvC;IACAilC,OAAA,CAAQ2F,IAAR,CAAao5C,cAAb,CAA4B,IAA5B,EAAkC,MAAlC,EAA0C,MAA1C;IAIA/+C,OAAA,CAAQ3Y,OAAR,GAAkB2Y,OAAA,CAAQ2F,IAA1B;IACA3F,OAAA,CAAQyH,eAAR,CAAwB1lB,CAAxB,EAA2BC,CAA3B;EAzGuB;EA4GzBxyB,QAAA,EAAU;IACR,MAAMwwC,OAAA,GAAU,KAAKA,OAArB;IAGAA,OAAA,CAAQ2F,IAAR,GAAe,IAAf;IAEA,IAAI,CAAC,KAAKwI,WAAV,EAAuB;MACrB;IADqB;IAGvB,IAAI,CAACnO,OAAA,CAAQ3Y,OAAb,EAAsB;MACpB,KAAK8mB,WAAL,GAAmB,IAAnB;MACA;IAFoB;IAMtB,MAAM+yC,MAAA,GAAU,WAAU1D,SAAA,EAAX,EAAf;IACA,MAAM2D,QAAA,GAAW,KAAKriB,UAAL,CAAgBx5C,aAAhB,CAA8B,cAA9B,CAAjB;IACA67D,QAAA,CAASpC,cAAT,CAAwB,IAAxB,EAA8B,IAA9B,EAAoCmC,MAApC;IACAC,QAAA,CAASpC,cAAT,CAAwB,IAAxB,EAA8B,WAA9B,EAA2CzB,EAAA,CAAG,KAAKM,eAAR,CAA3C;IAGA,MAAMwD,WAAA,GAAcphD,OAAA,CAAQ3Y,OAAR,CAAgBg9C,SAAhB,CAA0B,IAA1B,CAApB;IACA,IAAI,KAAKl2B,WAAL,KAAqB,SAAzB,EAAoC;MAClCizC,WAAA,CAAYrC,cAAZ,CAA2B,IAA3B,EAAiC,WAAjC,EAA8C,SAA9C;IADkC,CAApC,MAEO;MACLqC,WAAA,CAAYrC,cAAZ,CAA2B,IAA3B,EAAiC,WAAjC,EAA8C,SAA9C;IADK;IAGP,KAAK5wC,WAAL,GAAmB,IAAnB;IACAgzC,QAAA,CAASlwD,MAAT,CAAgBmwD,WAAhB;IACA,KAAKxwD,IAAL,CAAUK,MAAV,CAAiBkwD,QAAjB;IAEA,IAAInhD,OAAA,CAAQ68C,aAAZ,EAA2B;MAGzB78C,OAAA,CAAQ88C,SAAR,GAAoB,IAApB;MACA,WAAWvpD,IAAX,IAAmB,KAAKuqD,UAAxB,EAAoC;QAClCvqD,IAAA,CAAKupD,SAAL,GAAiB,IAAjB;MADkC;MAIpCqE,QAAA,CAASpC,cAAT,CAAwB,IAAxB,EAA8B,WAA9B,EAA2C/+C,OAAA,CAAQ68C,aAAnD;IARyB;IAU3B78C,OAAA,CAAQ68C,aAAR,GAAyB,QAAOqE,MAAO,GAAvC;IAEA,KAAK/C,IAAL,GAAY,IAAZ;EA3CQ;EA8CV1uF,KAAKirB,IAAL,EAAW;IACT,KAAKyzB,WAAL,GAAmBzzB,IAAnB;EADS;EAIX5rB,UAAA,EAAY;IACV,MAAMkxC,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIA,OAAA,CAAQ2F,IAAZ,EAAkB;MAChB,MAAM5qC,CAAA,GAAI,GAAGilC,OAAA,CAAQ2F,IAAR,CAAas7C,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,CAAuC,GAApD;MACAjhD,OAAA,CAAQ2F,IAAR,CAAao5C,cAAb,CAA4B,IAA5B,EAAkC,GAAlC,EAAuChkF,CAAvC;IAFgB;EAFR;EAQZ/K,WAAWu2C,OAAX,EAAoB;IAClB,KAAKvG,OAAL,CAAauG,OAAb,GAAuB,CAACA,OAAxB;EADkB;EAIpBp2C,YAAY22C,QAAZ,EAAsB;IACpB,KAAK9G,OAAL,CAAa8G,QAAb,GAAwBA,QAAxB;EADoB;EAItB52C,qBAAqB22C,iBAArB,EAAwC;IACtC,KAAK7G,OAAL,CAAa6G,iBAAb,GAAiCA,iBAAjC;EADsC;EAIxC92C,UAAU2d,KAAV,EAAiB;IACf,KAAKsyB,OAAL,CAAa4G,UAAb,GAA0Bl5B,KAAA,GAAQ,GAAlC;EADe;EAIjBvf,mBAAmB+f,MAAnB,EAA2B;EAI3B9f,YAAY4kD,QAAZ,EAAsB;EAItB3kD,UAAU4kD,MAAV,EAAkB;IAChB,WAAW,CAACv6C,GAAD,EAAMjD,KAAN,CAAX,IAA2Bw9C,MAA3B,EAAmC;MACjC,QAAQv6C,GAAR;QACE,KAAK,IAAL;UACE,KAAK5K,YAAL,CAAkB2H,KAAlB;UACA;QACF,KAAK,IAAL;UACE,KAAK1H,UAAL,CAAgB0H,KAAhB;UACA;QACF,KAAK,IAAL;UACE,KAAKzH,WAAL,CAAiByH,KAAjB;UACA;QACF,KAAK,IAAL;UACE,KAAKxH,aAAL,CAAmBwH,KAAnB;UACA;QACF,KAAK,GAAL;UACE,KAAKvH,OAAL,CAAauH,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKtH,kBAAL,CAAwBsH,KAAxB;UACA;QACF,KAAK,IAAL;UACE,KAAKrH,WAAL,CAAiBqH,KAAjB;UACA;QACF,KAAK,MAAL;UACE,KAAKxF,OAAL,CAAawF,KAAb;UACA;QACF,KAAK,IAAL;UACE,KAAK8pF,cAAL,CAAoB9pF,KAApB;UACA;QACF,KAAK,IAAL;UACE,KAAK+pF,YAAL,CAAkB/pF,KAAlB;UACA;QACF;UACE,IAAAvB,UAAA,EAAM,wCAAuCwE,GAAxC,EAAL;UACA;MAjCJ;IADiC;EADnB;EAwClBxJ,KAAA,EAAO;IACL,MAAM8wC,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIA,OAAA,CAAQ3Y,OAAZ,EAAqB;MACnB2Y,OAAA,CAAQ3Y,OAAR,CAAgB03D,cAAhB,CAA+B,IAA/B,EAAqC,MAArC,EAA6C/+C,OAAA,CAAQ+G,SAArD;MACA/G,OAAA,CAAQ3Y,OAAR,CAAgB03D,cAAhB,CAA+B,IAA/B,EAAqC,cAArC,EAAqD/+C,OAAA,CAAQkH,SAA7D;MACA,KAAK13C,OAAL;IAHmB;EAFhB;EASPR,OAAA,EAAS;IACP,MAAMgxC,OAAA,GAAU,KAAKA,OAArB;IACA,IAAIA,OAAA,CAAQ3Y,OAAZ,EAAqB;MACnB,KAAK83D,oBAAL,CAA0Bn/C,OAAA,CAAQ3Y,OAAlC;MACA2Y,OAAA,CAAQ3Y,OAAR,CAAgB03D,cAAhB,CAA+B,IAA/B,EAAqC,MAArC,EAA6C,MAA7C;MACA,KAAKvvF,OAAL;IAHmB;EAFd;EAYT2vF,qBAAqB93D,OAArB,EAA8B63D,cAAA,GAAiB,CAA/C,EAAkD;IAChD,MAAMl/C,OAAA,GAAU,KAAKA,OAArB;IACA,IAAI8S,SAAA,GAAY9S,OAAA,CAAQ8S,SAAxB;IACA,IAAIosC,cAAA,KAAmB,CAAnB,IAAwBpsC,SAAA,CAAU79C,MAAV,GAAmB,CAA/C,EAAkD;MAChD69C,SAAA,GAAYA,SAAA,CAAUt6C,GAAV,CAAc,UAAU/C,KAAV,EAAiB;QACzC,OAAOypF,cAAA,GAAiBzpF,KAAxB;MADyC,CAA/B,CAAZ;IADgD;IAKlD4xB,OAAA,CAAQ03D,cAAR,CAAuB,IAAvB,EAA6B,QAA7B,EAAuC/+C,OAAA,CAAQgH,WAA/C;IACA3f,OAAA,CAAQ03D,cAAR,CAAuB,IAAvB,EAA6B,gBAA7B,EAA+C/+C,OAAA,CAAQmH,WAAvD;IACA9f,OAAA,CAAQ03D,cAAR,CAAuB,IAAvB,EAA6B,mBAA7B,EAAkD1B,EAAA,CAAGr9C,OAAA,CAAQqL,UAAX,CAAlD;IACAhkB,OAAA,CAAQ03D,cAAR,CAAuB,IAAvB,EAA6B,gBAA7B,EAA+C/+C,OAAA,CAAQmL,OAAvD;IACA9jB,OAAA,CAAQ03D,cAAR,CAAuB,IAAvB,EAA6B,iBAA7B,EAAgD/+C,OAAA,CAAQoL,QAAxD;IACA/jB,OAAA,CAAQ03D,cAAR,CACE,IADF,EAEE,cAFF,EAGE1B,EAAA,CAAG6B,cAAA,GAAiBl/C,OAAA,CAAQoH,SAA5B,IAAyC,IAH3C;IAKA/f,OAAA,CAAQ03D,cAAR,CACE,IADF,EAEE,kBAFF,EAGEjsC,SAAA,CAAUt6C,GAAV,CAAc6kF,EAAd,EAAkBtlF,IAAlB,CAAuB,GAAvB,CAHF;IAKAsvB,OAAA,CAAQ03D,cAAR,CACE,IADF,EAEE,mBAFF,EAGE1B,EAAA,CAAG6B,cAAA,GAAiBl/C,OAAA,CAAQ+S,SAA5B,IAAyC,IAH3C;EAvBgD;EA8BlD5jD,OAAA,EAAS;IACP,KAAK6wC,OAAL,CAAa3Y,OAAb,EAAsB03D,cAAtB,CAAqC,IAArC,EAA2C,WAA3C,EAAwD,SAAxD;IACA,KAAK7vF,IAAL;EAFO;EAKTE,WAAA,EAAa;IAGX,KAAKJ,MAAL;IACA,KAAKE,IAAL;EAJW;EAObG,aAAA,EAAe;IACb,KAAK2wC,OAAL,CAAa3Y,OAAb,EAAsB03D,cAAtB,CAAqC,IAArC,EAA2C,WAA3C,EAAwD,SAAxD;IACA,KAAK3vF,UAAL;EAFa;EAKfH,YAAA,EAAc;IACZ,KAAKH,SAAL;IACA,KAAKE,MAAL;EAFY;EAKdM,gBAAA,EAAkB;IAChB,KAAKR,SAAL;IACA,KAAKM,UAAL;EAFgB;EAKlBG,kBAAA,EAAoB;IAClB,KAAKT,SAAL;IACA,KAAKO,YAAL;EAFkB;EAKpB8D,yBAAA,EAA2B;IACzB,MAAM+I,IAAA,GAAO,KAAK4iE,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAb;IACAppB,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACA7iF,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACA7iF,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,OAA1B,EAAmC,KAAnC;IACA7iF,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoC,KAApC;IACA7iF,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,KAAK/+C,OAAL,CAAa+G,SAA/C;IAEA,KAAKq4C,qBAAL,GAA6BnuD,MAA7B,CAAoC/0B,IAApC;EARyB;EAW3BpJ,kBAAkBspB,KAAlB,EAAyB;IACvB,MAAMyoB,OAAA,GAAU,KAAK4K,SAAL,CAAerzB,KAAf,CAAhB;IACA,IAAI,CAACyoB,OAAL,EAAc;MACZ,IAAA3wC,UAAA,EAAM,kCAAiCkoB,KAAM,mBAA7C;MACA;IAFY;IAId,KAAKrpB,uBAAL,CAA6B8xC,OAA7B;EANuB;EASzB9xC,wBAAwB8xC,OAAxB,EAAiCS,IAAjC,EAAuC;IACrC,MAAM9pB,KAAA,GAAQqpB,OAAA,CAAQrpB,KAAtB;IACA,MAAMC,MAAA,GAASopB,OAAA,CAAQppB,MAAvB;IAEA,MAAM4lE,MAAA,GAASnG,mBAAA,CAAoBr2C,OAApB,EAA6B,KAAK41C,eAAlC,EAAmD,CAAC,CAACn1C,IAArD,CAAf;IACA,MAAMg8C,QAAA,GAAW,KAAKxiB,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAjB;IACAg8D,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmC,GAAnC;IACAuC,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmC,GAAnC;IACAuC,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,OAA9B,EAAuC1B,EAAA,CAAG7hE,KAAH,CAAvC;IACA8lE,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,QAA9B,EAAwC1B,EAAA,CAAG5hE,MAAH,CAAxC;IACA,KAAKukB,OAAL,CAAa3Y,OAAb,GAAuBi6D,QAAvB;IACA,KAAK7xF,IAAL,CAAU,SAAV;IAEA,MAAM8xF,KAAA,GAAQ,KAAKziB,UAAL,CAAgBx5C,aAAhB,CAA8B,WAA9B,CAAd;IACAi8D,KAAA,CAAMxC,cAAN,CAAqBxE,QAArB,EAA+B,YAA/B,EAA6C8G,MAA7C;IACAE,KAAA,CAAMxC,cAAN,CAAqB,IAArB,EAA2B,GAA3B,EAAgC,GAAhC;IACAwC,KAAA,CAAMxC,cAAN,CAAqB,IAArB,EAA2B,GAA3B,EAAgC1B,EAAA,CAAG,CAAC5hE,MAAJ,CAAhC;IACA8lE,KAAA,CAAMxC,cAAN,CAAqB,IAArB,EAA2B,OAA3B,EAAoC1B,EAAA,CAAG7hE,KAAH,IAAY,IAAhD;IACA+lE,KAAA,CAAMxC,cAAN,CAAqB,IAArB,EAA2B,QAA3B,EAAqC1B,EAAA,CAAG5hE,MAAH,IAAa,IAAlD;IACA8lE,KAAA,CAAMxC,cAAN,CACE,IADF,EAEE,WAFF,EAGG,SAAQ1B,EAAA,CAAG,IAAI7hE,KAAP,CAAc,IAAG6hE,EAAA,CAAG,CAAC,CAAD,GAAK5hE,MAAR,CAAgB,GAH5C;IAKA,IAAI6pB,IAAJ,EAAU;MACRA,IAAA,CAAKrU,MAAL,CAAYswD,KAAZ;IADQ,CAAV,MAEO;MACL,KAAKnC,qBAAL,GAA6BnuD,MAA7B,CAAoCswD,KAApC;IADK;EA1B8B;EA+BvC3uF,sBAAsBo+C,GAAtB,EAA2B;IACzB,MAAMnM,OAAA,GAAU,KAAK4K,SAAL,CAAeuB,GAAA,CAAI9wC,IAAnB,EAAyB8wC,GAAzB,CAAhB;IACA,IAAInM,OAAA,CAAQtpB,MAAZ,EAAoB;MAClB,IAAArnB,UAAA,EACE,oEACE,yEAFJ;MAIA;IALkB;IAOpB,MAAM8rC,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMxkB,KAAA,GAAQqpB,OAAA,CAAQrpB,KAAtB;IACA,MAAMC,MAAA,GAASopB,OAAA,CAAQppB,MAAvB;IACA,MAAMsrB,SAAA,GAAY/G,OAAA,CAAQ+G,SAA1B;IAEA/G,OAAA,CAAQ+8C,MAAR,GAAkB,OAAMU,SAAA,EAAP,EAAjB;IACA,MAAMn4C,IAAA,GAAO,KAAKw5B,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAb;IACAggB,IAAA,CAAKy5C,cAAL,CAAoB,IAApB,EAA0B,IAA1B,EAAgC/+C,OAAA,CAAQ+8C,MAAxC;IAEA,MAAM7gF,IAAA,GAAO,KAAK4iE,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAb;IACAppB,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACA7iF,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,GAA1B,EAA+B,GAA/B;IACA7iF,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,OAA1B,EAAmC1B,EAAA,CAAG7hE,KAAH,CAAnC;IACAtf,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,QAA1B,EAAoC1B,EAAA,CAAG5hE,MAAH,CAApC;IACAvf,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAkCh4C,SAAlC;IACA7qC,IAAA,CAAK6iF,cAAL,CAAoB,IAApB,EAA0B,MAA1B,EAAmC,QAAO/+C,OAAA,CAAQ+8C,MAAO,GAAzD;IAEA,KAAKnsD,IAAL,CAAUK,MAAV,CAAiBqU,IAAjB;IACA,KAAK85C,qBAAL,GAA6BnuD,MAA7B,CAAoC/0B,IAApC;IAEA,KAAKnJ,uBAAL,CAA6B8xC,OAA7B,EAAsCS,IAAtC;EA7ByB;EAgC3BhzC,sBAAsBkmD,MAAtB,EAA8BI,IAA9B,EAAoC;IAClC,IAAIj/C,KAAA,CAAM6zB,OAAN,CAAcgrB,MAAd,KAAyBA,MAAA,CAAOvjD,MAAP,KAAkB,CAA/C,EAAkD;MAChD,KAAKzG,SAAL,CACEgqD,MAAA,CAAO,CAAP,CADF,EAEEA,MAAA,CAAO,CAAP,CAFF,EAGEA,MAAA,CAAO,CAAP,CAHF,EAIEA,MAAA,CAAO,CAAP,CAJF,EAKEA,MAAA,CAAO,CAAP,CALF,EAMEA,MAAA,CAAO,CAAP,CANF;IADgD;IAWlD,IAAII,IAAJ,EAAU;MACR,MAAMp9B,KAAA,GAAQo9B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAMn9B,MAAA,GAASm9B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MAEA,MAAM0oC,QAAA,GAAW,KAAKxiB,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAAjB;MACAg8D,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmCnmC,IAAA,CAAK,CAAL,CAAnC;MACA0oC,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,GAA9B,EAAmCnmC,IAAA,CAAK,CAAL,CAAnC;MACA0oC,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,OAA9B,EAAuC1B,EAAA,CAAG7hE,KAAH,CAAvC;MACA8lE,QAAA,CAASvC,cAAT,CAAwB,IAAxB,EAA8B,QAA9B,EAAwC1B,EAAA,CAAG5hE,MAAH,CAAxC;MACA,KAAKukB,OAAL,CAAa3Y,OAAb,GAAuBi6D,QAAvB;MACA,KAAK7xF,IAAL,CAAU,SAAV;MACA,KAAKD,OAAL;IAXQ;EAZwB;EA2BpC+C,oBAAA,EAAsB;EAKtB+jB,YAAY3H,QAAZ,EAAsB;IACpB,MAAMoiB,GAAA,GAAM,KAAK+tC,UAAL,CAAgBrmE,MAAhB,CAAuBkW,QAAA,CAAS6M,KAAhC,EAAuC7M,QAAA,CAAS8M,MAAhD,CAAZ;IAGA,MAAM+lE,WAAA,GAAc,KAAK1iB,UAAL,CAAgBx5C,aAAhB,CAA8B,UAA9B,CAApB;IACAyL,GAAA,CAAIE,MAAJ,CAAWuwD,WAAX;IACA,KAAK5wD,IAAL,GAAY4wD,WAAZ;IAIA,MAAMC,SAAA,GAAY,KAAK3iB,UAAL,CAAgBx5C,aAAhB,CAA8B,OAA9B,CAAlB;IACAm8D,SAAA,CAAU1C,cAAV,CAAyB,IAAzB,EAA+B,WAA/B,EAA4CzB,EAAA,CAAG3uE,QAAA,CAASngB,SAAZ,CAA5C;IACAuiC,GAAA,CAAIE,MAAJ,CAAWwwD,SAAX;IAKA,KAAK1wD,GAAL,GAAW0wD,SAAX;IAEA,OAAO1wD,GAAP;EAnBoB;EAyBtB2wD,iBAAA,EAAmB;IACjB,IAAI,CAAC,KAAK1hD,OAAL,CAAa88C,SAAlB,EAA6B;MAC3B,MAAMA,SAAA,GAAY,KAAKhe,UAAL,CAAgBx5C,aAAhB,CAA8B,OAA9B,CAAlB;MACAw3D,SAAA,CAAUiC,cAAV,CAAyB,IAAzB,EAA+B,WAA/B,EAA4C,KAAK/+C,OAAL,CAAa68C,aAAzD;MACA,KAAK9rD,GAAL,CAASE,MAAT,CAAgB6rD,SAAhB;MACA,KAAK98C,OAAL,CAAa88C,SAAb,GAAyBA,SAAzB;IAJ2B;IAM7B,OAAO,KAAK98C,OAAL,CAAa88C,SAApB;EAPiB;EAanBsC,sBAAA,EAAwB;IACtB,IAAI,CAAC,KAAKjB,IAAV,EAAgB;MACd,KAAKA,IAAL,GAAY,KAAKrf,UAAL,CAAgBx5C,aAAhB,CAA8B,OAA9B,CAAZ;MACA,KAAK64D,IAAL,CAAUY,cAAV,CAAyB,IAAzB,EAA+B,WAA/B,EAA4CzB,EAAA,CAAG,KAAKM,eAAR,CAA5C;MACA,IAAI,KAAK59C,OAAL,CAAa68C,aAAjB,EAAgC;QAC9B,KAAK6E,gBAAL,GAAwBzwD,MAAxB,CAA+B,KAAKktD,IAApC;MAD8B,CAAhC,MAEO;QACL,KAAKptD,GAAL,CAASE,MAAT,CAAgB,KAAKktD,IAArB;MADK;IALO;IAShB,OAAO,KAAKA,IAAZ;EAVsB;AA/tCR;AApclBx5F,mBAAA,GAAAg5F,WAAA;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIA,IAAA/8E,KAAA,GAAAC,mBAAA;AAqBA,IAAA8gF,IAAA,GAAA9gF,mBAAA;AAOA,IAAAE,cAAA,GAAAF,mBAAA;AAYA,IAAA+gF,WAAA,GAAA/gF,mBAAA;AACA,IAAAghF,wBAAA,GAAAhhF,mBAAA;AACA,IAAAuf,MAAA,GAAAvf,mBAAA;AACA,IAAAs4D,iBAAA,GAAAt4D,mBAAA;AACA,IAAAK,eAAA,GAAAL,mBAAA;AACA,IAAA07D,UAAA,GAAA17D,mBAAA;AAGA,MAAMihF,YAAA,GAC8B,SADpC;AAGA,MAAMC,UAAA,GAC8B,WADpC;AAGA,MAAMpE,WAAA,GAEA98E,qCAFN;AAhFAlc,mBAAA,GAAAg5F,WAAA","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/editor/editor.js","webpack://pdfjs-dist/build/pdf/src/display/editor/tools.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/annotation_editor_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/freetext.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/web/l10n_utils.js","webpack://pdfjs-dist/build/pdf/src/display/editor/ink.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(globalThis, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n typeof PDFJSDev !== \"undefined\" &&\n !PDFJSDev.test(\"SKIP_BABEL\") &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n require(\"./compatibility.js\");\n}\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n STAMP: 13,\n INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\nfunction string32(value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get platform() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof navigator === \"undefined\"\n ) {\n return shadow(this, \"platform\", { isWin: false, isMac: false });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\"),\n });\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v?.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n #settled = false;\n\n constructor() {\n /**\n * @type {Promise} The Promise object.\n */\n this.promise = new Promise((resolve, reject) => {\n /**\n * @type {function} Fulfills the Promise.\n */\n this.resolve = data => {\n this.#settled = true;\n resolve(data);\n };\n\n /**\n * @type {function} Rejects the Promise.\n */\n this.reject = reason => {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n }\n this.#settled = true;\n reject(reason);\n };\n });\n }\n\n /**\n * @type {boolean} If the Promise has been fulfilled/rejected.\n */\n get settled() {\n return this.#settled;\n }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n // In order to generate the following regex:\n // - create a PDF containing all the chars in the range 0000-FFFF with\n // a NFKC which is different of the char.\n // - copy and paste all those chars and get the ones where NFKC is\n // required.\n // It appears that most the chars here contain some ligatures.\n NormalizeRegex =\n /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n });\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationType,\n assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n normalizeUnicode,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? require(\"./node_utils.js\").NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? require(\"./node_utils.js\").NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? require(\"./node_utils.js\").NodeFilterFactory\n : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? require(\"./node_utils.js\").NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\nlet createPDFNetworkStream;\nif (typeof PDFJSDev === \"undefined\") {\n const streamsPromise = Promise.all([\n import(\"./network.js\"),\n import(\"./fetch_stream.js\"),\n ]);\n\n createPDFNetworkStream = async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./node_stream.js\");\n\n createPDFNetworkStream = params => {\n return new PDFNodeStream(params);\n };\n } else {\n const { PDFNetworkStream } = require(\"./network.js\");\n const { PDFFetchStream } = require(\"./fetch_stream.js\");\n\n createPDFNetworkStream = params => {\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n }\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\n canvasFactory,\n filterFactory,\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n });\n }\n\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n throw new Error(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = new PromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new PromiseCapability();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\n */\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this._transport.getXRefPrevValue();\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this._transport.getAnnotArray(pageIndex);\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n * normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n * Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n * to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n\n #pendingCleanup = false;\n\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n return this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n this._stats?.time(\"Overall\");\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render...\n this.#pendingCleanup = false;\n // ... and ensure that a delayed cleanup is always aborted.\n this.#abortDelayedCleanup();\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup immediately once rendering has finished.\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(/* delayed = */ !intentPrint);\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\"Not implemented: getOperatorList\");\n }\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(/* delayed = */ false);\n\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n * performance in documents with large images.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(/* delayed = */ false);\n }, DELAYED_CLEANUP_TIMEOUT);\n\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(/* delayed = */ true);\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n const { map, transfers } = annotationStorageSerializable;\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n },\n transfers\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(/* delayed = */ true);\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n * otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n #listeners = new Set();\n\n #deferred = Promise.resolve();\n\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(\n obj,\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"SKIP_BABEL || TESTING\")) &&\n transfer\n ? { transfer }\n : null\n ),\n };\n\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = new PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n const worker =\n typeof PDFJSDev === \"undefined\" &&\n !workerSrc.endsWith(\"/build/pdf.worker.js\")\n ? new Worker(workerSrc, { type: \"module\" })\n : new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n PDFWorkerUtil.fallbackWorkerSrc !== null\n ) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `